<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: omar-saadoun</title>
    <description>The latest articles on DEV Community by omar-saadoun (@omarsaadoun).</description>
    <link>https://dev.to/omarsaadoun</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F573462%2Fa0dfbe7f-7765-4e0b-b27a-2e3205ee62f5.png</url>
      <title>DEV Community: omar-saadoun</title>
      <link>https://dev.to/omarsaadoun</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/omarsaadoun"/>
    <language>en</language>
    <item>
      <title>Make a Blockchain Speak to You</title>
      <dc:creator>omar-saadoun</dc:creator>
      <pubDate>Wed, 26 May 2021 20:33:23 +0000</pubDate>
      <link>https://dev.to/omarsaadoun/make-a-blockchain-speak-to-you-2jp3</link>
      <guid>https://dev.to/omarsaadoun/make-a-blockchain-speak-to-you-2jp3</guid>
      <description>&lt;h6&gt;
  
  
  The æternity Middleware puts blockchain data into context so you get the information you need
&lt;/h6&gt;

&lt;p&gt;There are good technical reasons for blockchain protocols to leave bits of information stored in their granular way. Although a good source of immutable trustful data, only connecting the dots between all available information unleashes the full value of blockchains. Have your questions, the open-source æternity Middleware has the answers.&lt;/p&gt;

&lt;p&gt;“What is the most popular token?”&lt;/p&gt;

&lt;p&gt;“How many owners of this token are there, what are their balances and how did they change over the last blocks?”&lt;/p&gt;

&lt;p&gt;“Tell me whenever something happens with regard to my oracle/account/contract!”&lt;/p&gt;

&lt;p&gt;To keep the chain data of the æternity protocol concise, æternity would not store answers to the questions above. Projects requiring this information for their use cases though (especially in the De-Fi sector) have a tool at hand, that automatically gathers lots of important correlations between on-chain data to process it into an easily digestible form.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing: The new æternity Middleware
&lt;/h2&gt;

&lt;p&gt;You might have seen it in action already: It runs æternity’s &lt;a href="https://explorer.aeternity.io/"&gt;Explorer&lt;/a&gt; under the hood.&lt;/p&gt;

&lt;p&gt;It was developed with any kind of usage scenario in mind: You can spawn it up to visualize what is happening on your private network or follow along the progress of the æternity mainnet. And yes, you get both the back-end service as well as the beautifully designed web interface if you want to. And the next good news is: It’s open-source and very easy to set up. You can follow the steps in the &lt;a href="https://github.com/aeternity/ae_mdw"&gt;Github Repository&lt;/a&gt; and always ask for help on the &lt;a href="https://forum.aeternity.com/"&gt;forum&lt;/a&gt; if you get stuck.&lt;/p&gt;

&lt;h2&gt;
  
  
  For Techies and End-Users alike
&lt;/h2&gt;

&lt;p&gt;Using the Middleware, you can serve the purposes of several stakeholders of your projects alike: have people get visual feedback and allow for quick read-ups on important information, as well as gathering of huge chunks of complicated information for your project’s tech. The latter is supported by over 40 APIs serving different purposes (get a brief overview &lt;a href="https://github.com/aeternity/ae_mdw#http-endpoints"&gt;here&lt;/a&gt; and if anything important is missing, you are always welcome to express your requests on the &lt;a href="https://forum.aeternity.com/"&gt;forum&lt;/a&gt;. Besides querying APIs for required information you can also use web sockets to be notified about specific happenings in real-time. This means that you don’t have to pull the API constantly for updates with requests causing load on your service, but have all kinds of new information regarding your accounts, contracts or oracles pushed to you via the WebSocket. Think how your dapp’s UX will benefit from having an integrated querying/events notifications service, without the need of using third-party services often used to achieve performance and efficiency in dapps UX.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Deal
&lt;/h2&gt;

&lt;p&gt;Utilizing the Middleware for your project comes with low maintenance efforts: æternity uses the Middleware for its official block explorer you will automatically benefit from all patches, updates, and new features that get introduced to the Middleware.&lt;/p&gt;

&lt;p&gt;In the same way that you have oracles, state channels, and the naming system seamlessly integrated into the protocol, you can also count on the advantages of the æternity Middleware out of the box.&lt;/p&gt;

&lt;p&gt;Get in touch: &lt;a href="https://github.com/aeternity"&gt;GitHub&lt;/a&gt; | &lt;a href="http://forum.aeternity.com/"&gt;Forum&lt;/a&gt; | &lt;a href="https://www.reddit.com/r/Aeternity/"&gt;Reddit&lt;/a&gt; | &lt;a href="https://twitter.com/aeternity"&gt;Twitter&lt;/a&gt; | &lt;a href="https://www.youtube.com/channel/UCEsM0b7QPazeMR80DxNkzCA"&gt;YouTube&lt;/a&gt;| &lt;a href="https://www.linkedin.com/company/aeternity"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Original article:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.aeternity.com/make-a-blockchain-speak-to-you-3f3a566ca441"&gt;https://blog.aeternity.com/make-a-blockchain-speak-to-you-3f3a566ca441&lt;/a&gt;&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>aeternityblockchain</category>
      <category>middleware</category>
    </item>
    <item>
      <title>The race to connect the world to the blocks</title>
      <dc:creator>omar-saadoun</dc:creator>
      <pubDate>Wed, 26 May 2021 20:21:27 +0000</pubDate>
      <link>https://dev.to/omarsaadoun/the-race-to-connect-the-world-to-the-blocks-3i1f</link>
      <guid>https://dev.to/omarsaadoun/the-race-to-connect-the-world-to-the-blocks-3i1f</guid>
      <description>&lt;p&gt;Blockchain adoption has been taking giant leaps forward in the last couple of years, and with DeFi leading the change, &lt;strong&gt;oracles have become a necessity, representing one of the cornerstones of blockchains’ utility&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Blockchain oracles allow interaction between real-world data and smart contracts, allowing any publicly available data to be seamlessly integrated into smart contracts. &lt;strong&gt;The oracle connects the blockchain and the real world&lt;/strong&gt;, allowing the smart contracts to change when certain world events trigger such a reaction.&lt;/p&gt;

&lt;p&gt;It is well established that æternity was born DeFi-ready, with smart contract capability as well as extremely high scalability and transaction speed. However, it is not common knowledge that æternity also offers an embedded oracle system to its users. What the developers of æternity knew at the time of building the blockchain’s foundations is that &lt;strong&gt;oracles will be an integral part of any blockchain that wants to host the plethora of DeFi applications&lt;/strong&gt; that are currently being developed. By looking ahead and learning from the mistakes of the early blockchain platforms, &lt;strong&gt;æternity’s design resulted in a completely modern blockchain, with sufficient performance and functionalities to support the heavy traffic demands of DeFi.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Oracles are just one of many functions essential for what blockchain is trying to bring to the world — efficient independence from the central banking systems and the instant interoperability of the physical world and the decentralized financial system.&lt;/p&gt;

&lt;p&gt;However, æternity’s oracles differ from most oracles in the blockchain space in the sense that they do not operate automatically. Instead, &lt;strong&gt;æternity utilizes oracle operators&lt;/strong&gt; — individuals or entities who register oracles and set them up to communicate the relevant data between smart contracts and the world outside the blockchain.&lt;/p&gt;

&lt;p&gt;Although this makes the process more complex, it creates a structure in which oracle operators can earn from the parties using the oracles they provide. This means that, in the future, there could be a &lt;strong&gt;dedicated Oracle Marketplace&lt;/strong&gt; where users can choose their trusted oracles, creating strong competition in the market to provide the best possible oracle service.&lt;/p&gt;

&lt;p&gt;Undeniably, any business planning to utilize blockchain for its benefit will have to go through oracles. With numerous blockchain projects offering different solutions, it will be a &lt;strong&gt;system with the most secure structure and least capacity for manipulation that becomes the standard&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The race to provide the world and blockchain with seamless interoperability is far from over, and oracle systems will continue to be created and improved. The &lt;strong&gt;Akshwani haeck&lt;/strong&gt; held in April and May, organized by æternity, aimed to do just that — find more opportunities to utilize and improve the ways oracles are being used. The brightest minds of the blockchain space took on the ambitious task of testing out the new use cases of oracles and &lt;strong&gt;building the digital structures of the future on the æternity blockchain network.&lt;/strong&gt; The fruits of their labour can be found in the &lt;a href="https://akshwanihaeck.devpost.com/project-gallery"&gt;Devpost project gallery of the Akshwani haeck&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;While æternity isn’t the only competitor working on advancing oracles and bringing mass adoption to blockchain, one thing is certain — with oracles embedded in its protocols from the start, and with its uniquely active and collaborative community, &lt;strong&gt;æternity has a head start&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Get in touch: &lt;a href="https://github.com/aeternity"&gt;GitHub&lt;/a&gt; | &lt;a href="http://forum.aeternity.com/"&gt;Forum&lt;/a&gt; | &lt;a href="https://www.reddit.com/r/Aeternity/"&gt;Reddit&lt;/a&gt; | &lt;a href="https://twitter.com/aeternity"&gt;Twitter&lt;/a&gt; | &lt;a href="https://www.youtube.com/channel/UCEsM0b7QPazeMR80DxNkzCA"&gt;YouTube&lt;/a&gt;| &lt;a href="https://www.linkedin.com/company/aeternity"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Original Article&lt;br&gt;
&lt;a href="https://blog.aeternity.com/the-race-to-connect-the-world-to-the-blocks-44cfa659edc7"&gt;https://blog.aeternity.com/the-race-to-connect-the-world-to-the-blocks-44cfa659edc7&lt;/a&gt;&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>aeternityblockchain</category>
      <category>oracles</category>
    </item>
    <item>
      <title>A tale of Layers and Oracles</title>
      <dc:creator>omar-saadoun</dc:creator>
      <pubDate>Tue, 20 Apr 2021 10:39:27 +0000</pubDate>
      <link>https://dev.to/omarsaadoun/a-tale-of-layers-and-oracles-ifd</link>
      <guid>https://dev.to/omarsaadoun/a-tale-of-layers-and-oracles-ifd</guid>
      <description>&lt;h6&gt;
  
  
  The advantages of having all the options on Layer 1
&lt;/h6&gt;

&lt;p&gt;There’s nothing like being in the middle of a bull-cycle to show which crypto projects can run with the demand of mass adoption and which are scrambling to retroactively create solutions for their short-comings.&lt;/p&gt;

&lt;p&gt;Millions of new users are becoming aware of what blockchain technology offers them, thousands of new applications are being created and the traffic on networks reaches billions of transactions. There are no clear winners or losers in the race to bring decentralized finance to the people, however, at the height of the cycle, &lt;strong&gt;some major players are starting to show cracks.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Being the trailblazer of smart-contract blockchains, Ethereum is paying the price of being the first. And it’s not just Ethereum, &lt;strong&gt;most early blockchains suffer from the same symptoms — lack of scalability, low speed and high transaction cost.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The solution to this problem — Layer 2 applications. And further down the line, possibly even Layer 3. How will it work, what will be the drawbacks, and will these solutions be efficient enough?&lt;/p&gt;

&lt;p&gt;Talking to developers about the phenomenon of Layer 2 solutions and their viability, the conclusion I was brought to is that &lt;strong&gt;building software is similar to building a house.&lt;/strong&gt; You need to set the groundwork and design for what it is supposed to be when it’s complete. &lt;strong&gt;You shouldn’t build and design at the same time.&lt;/strong&gt; Imagine starting to build your one-floor house and then, at one point you realise you will need more space, so you decide to add another 2, 3 floors on top and then just do it. Now imagine that entire building collapsing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GTOPNYOh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0dya4z1eoskx54wqx67v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GTOPNYOh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0dya4z1eoskx54wqx67v.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you build software and especially software as sophisticated as blockchain, knowing, planning and designing for the future is the right way. &lt;strong&gt;Having a strong architecture that was crafted from the beginning with the features and possibilities in mind is crucial.&lt;/strong&gt; You want to avoid doing big refactorings that could break backward compatibility, making updates much more complicated and risky.&lt;/p&gt;

&lt;p&gt;When we talk about Layer 1 and Layer 2 we talk about that planning, meaning that you’ve created and designed your software already knowing what the needs of your users are going to be, even long after your initial launch. This leads to easier access to resources, less memory consumption and more secure internal processes, resulting in a faster execution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;With æternity, that plan was made ahead, taking advantage of smart design and architecture from the first minute, anticipating scalability issues that are now playing against adoption.&lt;/strong&gt; The æternity technology was crafted with future demand and adoption in mind, thus the blockchain’s had cutting-edge functionalities incorporated since its mainnet launch in November 2018. That’s why you only need one layer to work with all the features like Oracles, Naming System, or state channels. That also explains why transactions on the æternity blockchain are so efficient , and why you don’t have the need for extra layers.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aWEOQgbL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n9acnjlcu7cc98wxyoam.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aWEOQgbL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n9acnjlcu7cc98wxyoam.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Æternity was born DeFi-ready&lt;/strong&gt;, with smart contract capability, extremely high scalability and transaction speed, alongside embedded Oracles, off-chain smart contract executions thanks to state channels, and human-readable addresses, &lt;strong&gt;making æternity the best foundation technology for decentralised applications.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With pioneering solutions such as &lt;strong&gt;Hyperchains, embedded Oracles and State Channels&lt;/strong&gt;, æternity’s developers exhibit a rare farsightedness in terms of future capabilities as well as needs of the users and developers when mass adoption inevitably comes. By looking ahead and learning from the mistakes of the early blockchain platforms, æternity’s design defeats the purpose of Layer 2 solutions.&lt;/p&gt;

&lt;p&gt;Æternity’s embedded Oracles, for example, allow interaction between real world data and smart contracts. Any publicly available data can be integrated into smart contracts, and events like election results, weather conditions, sporting event results or certain commodity prices trigger changes to those smart contracts. This opens up the field for major applications such as decentralised finance, supply chain management, information markets, insurances, gaming, the Internet of Things and many more. While other blockchain networks rely on third party solutions, to provide Oracles, æternity offers them out-of-the-box for the best user experience, but also for the best developer experience, security and optimization of costs.&lt;/p&gt;

&lt;p&gt;Oracles are just one of many functions essential for what blockchain is trying to bring to the world — an efficient independence from third parties to be trusted and the instant interoperability of the physical world and the decentralised web.&lt;/p&gt;

&lt;h2&gt;
  
  
  As a next generation smart contract platform, æternity blockcain is interwoven with innovation and functionalities most other blockchains don’t offer. And they are all on Layer 1.
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Experience the quality of smart design, build on æternity blockchain.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Original post from : &lt;a href="https://blog.aeternity.com/a-tale-of-layers-and-oracles-669203069cf6"&gt;https://blog.aeternity.com/a-tale-of-layers-and-oracles-669203069cf6&lt;/a&gt;&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>aeternityblockchain</category>
      <category>oracles</category>
    </item>
    <item>
      <title>Erlscripten: Transpiling Erlang to Javascript. Yes, you read it right.
</title>
      <dc:creator>omar-saadoun</dc:creator>
      <pubDate>Wed, 14 Apr 2021 22:20:41 +0000</pubDate>
      <link>https://dev.to/omarsaadoun/erlscripten-49gg</link>
      <guid>https://dev.to/omarsaadoun/erlscripten-49gg</guid>
      <description>&lt;p&gt;It is safe to say that Erlang as a language and framework is the most reliable choice out there to build highly stable applications, running the likes of Whatsapp and Discord. Now, there is a transpiler introducing concepts of Erlang to web technology, which would be near impossible to implement manually using Javascript.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwsu0eumfaucke1ni19q9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwsu0eumfaucke1ni19q9.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here at æternity, we’ve envisioned for a long time that running major parts of a blockchain protocol in the context of modern web frameworks would mean a huge leap for the adoption and scalability of distributed ledger technology. What if you could run an ad-hoc blockchain node in your browser, or use state channels to quickly make safe payments using your phone?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;As a solid foundation had to be laid for a reliable infrastructure first, that was not conceivable as of yet. Until now.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Erlscripten is here.
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzqxsabamfrt7qf52x8ub.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzqxsabamfrt7qf52x8ub.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Erlscripten&lt;/strong&gt; (sic not Emscripten!) is a source-to-source transpiler capable of converting most Erlang codebases into semantically equivalent Purescript projects. Purescript is a strongly typed language heavily inspired by Haskell and which compiles down to Javascript. Taking Purescript as an intermediary step, Erlscripten allows you to take your existing Erlang application and easily ship it out to Javascript users — your Erlang code can now run safely in the browser — enabling code sharing between an Erlang backend and the frontend. It is highly interoperable with Javascript — Javascript can easily call the transpiled code and then make use of the results — you can easily map Erlang constructs and types to readily available JS constructs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It’s zero hassle&lt;/strong&gt; — you point Erlscripten to an existing Rebar3 Erlang project and in result get a compatible spago project ready to be used in existing Purescript/Javascript projects. &lt;strong&gt;While at it, we transpiled the Erlang runtime (ERTS) that allows you to run arbitrary transpiled Erlang code:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/erlscripten/erlps-core" rel="noopener noreferrer"&gt;https://github.com/erlscripten/erlps-core&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Purpose
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Besides bringing the components of the æternity blockchain to more platforms and web frameworks, there are two novel use cases for Erlscripten:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;h4&gt;
  
  
  1 — Code reuse between Erlang backends and Javascript frontends;
&lt;/h4&gt;
&lt;h4&gt;
  
  
  2 — The creation of a new paradigm for developing frontend applications.
&lt;/h4&gt;
&lt;/blockquote&gt;

&lt;p&gt;æternity is a blockchain platform primarily written in Erlang. In the upcoming era of Hyperchains the need for code distribution between frontend and backend applications is high. Therefore we need to move some parts of æternity infrastructure to the clients’ side in order to provide a more reliable and decentralized system. It doesn’t make sense to rewrite our code in Javascript/Rust manually as this would require a lengthy rewrite and then the need to maintain and sync 2 codebases. The high need of interoperability between Erlang and Javascript is where Erlscripten was born. We can transpile what we need and distribute it to the browser where it’s needed. &lt;strong&gt;One side effect of Erlscripten is that it will soon be possible to write Frontend applications directly in Erlang&lt;/strong&gt; — Erlang’s actor based programming maps really nicely to existing reactive frameworks.&lt;/p&gt;

&lt;h3&gt;
  
  
  Similar projects
&lt;/h3&gt;

&lt;p&gt;We’re not the first ones with the need of Erlang/Javascript interoperability &lt;/p&gt;

&lt;p&gt;— &lt;a href="https://github.com/elixirscript/elixirscript" rel="noopener noreferrer"&gt;Elixirscript&lt;/a&gt; is a Elixir to Javascript transpiler with similar goals as our project. The main downside of Elixirscript is the lack of OTP support (Erlang’s main framework for building failsafe applications) — it works on a really small subset of the Elixir language and they need to rewrite the Elixir standard library in Javascript for it to work. In contrast we are OTP compatible — we transpiled the real Erlang standard library from OTP and distributed it open-source: &lt;a href="https://github.com/erlscripten/erlps-stdlib" rel="noopener noreferrer"&gt;https://github.com/erlscripten/erlps-stdlib&lt;/a&gt; (&lt;br&gt;
Erlang Solutions&lt;br&gt;
).&lt;/p&gt;

&lt;p&gt;To demonstrate our point we were capable of taking the compiler of our smart contract language (&lt;a href="https://github.com/aeternity/aesophia" rel="noopener noreferrer"&gt;https://github.com/aeternity/aesophia&lt;/a&gt;) and converting it to be runnable in the browser: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/erlscripten/erlps-aesophia" rel="noopener noreferrer"&gt;https://github.com/erlscripten/erlps-aesophia&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We tested the transpiled project and it works! &lt;strong&gt;Demonstrating our point that we have support for advanced OTP constructs including ETS, Erlang’s in-memory database.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Notably, &lt;a href="https://github.com/lumen/lumen" rel="noopener noreferrer"&gt;Lumen&lt;/a&gt; has similar goals to our project, after their project is done it will be much faster than Erlscripten and probably more capable — the downside is that Lumen is in WIP phase and it will take a long time for Lumen to be ready whereas Erlscripten is now and here! Ready to be used!&lt;/p&gt;

&lt;h3&gt;
  
  
  Status quo
&lt;/h3&gt;

&lt;h4&gt;
  
  
  What is supported
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Majority of Erlang expression&lt;/li&gt;
&lt;li&gt;Arbitrary arity functions&lt;/li&gt;
&lt;li&gt;Pattern matching&lt;/li&gt;
&lt;li&gt;Records (via tuples)&lt;/li&gt;
&lt;li&gt;Binaries&lt;/li&gt;
&lt;li&gt;Lambdas&lt;/li&gt;
&lt;li&gt;Tail recursion&lt;/li&gt;
&lt;li&gt;Exceptions&lt;/li&gt;
&lt;li&gt;Process dictionaries&lt;/li&gt;
&lt;li&gt;Code server, module loading&lt;/li&gt;
&lt;li&gt;Imports and exports&lt;/li&gt;
&lt;li&gt;Compatibility utilities&lt;/li&gt;
&lt;li&gt;Common errors (function_clause, case_clause, badarity, etc.)&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  What is partially supported
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/erlscripten/erlps-stdlib/" rel="noopener noreferrer"&gt;Erlang’s standard library&lt;/a&gt; (most essential modules; lists, maps, string, etc.)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/erlscripten/erlps-core" rel="noopener noreferrer"&gt;Erlang builtins&lt;/a&gt; (the list is growing and growing!)&lt;/li&gt;
&lt;li&gt;Rebar project transpilation&lt;/li&gt;
&lt;li&gt;ETS&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  What is under development
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Bitstrings&lt;/li&gt;
&lt;li&gt;Leaking variable scopes&lt;/li&gt;
&lt;li&gt;Basic erlang process emulation&lt;/li&gt;
&lt;li&gt;NIFs (will be done through C to WASM compilation)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Works on the PureScript compiler
&lt;/h3&gt;

&lt;p&gt;The original PureScript turned out not to suffice our use case perfectly. For instance, we had some issues regarding handling &lt;a href="https://en.wikipedia.org/wiki/Tail_call" rel="noopener noreferrer"&gt;tail call optimization&lt;/a&gt; which started several discussions and contributions on their GitHub:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/purescript/purescript/pull/3968" rel="noopener noreferrer"&gt;Pull Request: Trigger TCO even when there are some self references in non-tail positions&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/purescript/purescript/pull/3958" rel="noopener noreferrer"&gt;Pull Request: Support TCO for functions with tail-recursive inner functions&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/purescript/purescript/issues/3957" rel="noopener noreferrer"&gt;Issue: TCO does not trigger in &lt;code&gt;case&lt;/code&gt; expressions with assign guards&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/purescript/purescript/issues/3967" rel="noopener noreferrer"&gt;Proposal: Take more opportunities to trigger TCO&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some of the problems have been already fixed due to our reports, but some of them haven’t been accepted as they involved some overhead on the performance in the general case. Because of this &lt;a href="https://github.com/erlscripten/purescript" rel="noopener noreferrer"&gt;we have forked the compiler&lt;/a&gt; and started adjusting it for our needs ourselves. Our works mainly involve the optimization tweaks and updating the backend to EcmaScript6 (instead of 5). For instance, we have implemented a much more aggressive tail call optimizer, increased strictness of AST traversals and completely rewritten the code generation for pattern match alternatives.&lt;/p&gt;

&lt;p&gt;During this work we have spotted some performance bugs and started working on fixing them on our own. One of our patches has already been approved and awaits merging:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/purescript/purescript/pull/4006" rel="noopener noreferrer"&gt;Fix exponential collapsing of BindingGroups&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Examples:
&lt;/h3&gt;

&lt;p&gt;While we are perfectly aware that neither Erlang nor PureScript are the most common sight to see, we invite you to take a look: Here are some examples of how Erlscripten transforms existing Erlang code into PureScript. The generated code is obviously larger as we need to take care of the type system (PureScript is typed while Erlang is not) and tackle some syntactic sugars. Furthermore, we need to emulate the default error handling and exceptions that are being solved much differently in Erlang in order to preserve compatibility.&lt;/p&gt;

&lt;h4&gt;
  
  
  Factorial:
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz15rglu3qfopre2khxyh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz15rglu3qfopre2khxyh.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Find the code example here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/erlscripten/erlscripten/blob/main/examples/factorial.erl" rel="noopener noreferrer"&gt;https://github.com/erlscripten/erlscripten/blob/main/examples/factorial.erl&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Continuation based list reversal via catamorphic transformation:
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiuj7nh1q8qypdhy6j818.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiuj7nh1q8qypdhy6j818.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Find the code example here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/erlscripten/erlscripten/blob/main/examples/list_reverse.erl" rel="noopener noreferrer"&gt;https://github.com/erlscripten/erlscripten/blob/main/examples/list_reverse.erl&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Run Erlang in the browser!
&lt;/h2&gt;

&lt;p&gt;Erlang to PureScript transpiler &amp;gt; &lt;a href="https://github.com/erlscripten/erlscripten" rel="noopener noreferrer"&gt;https://github.com/erlscripten/erlscripten&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Original article from : &lt;br&gt;
&lt;a href="https://blog.aeternity.com/erlscripten-92c815786987" rel="noopener noreferrer"&gt;https://blog.aeternity.com/erlscripten-92c815786987&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>erlang</category>
      <category>blockchain</category>
      <category>aeternityblockchain</category>
      <category>elixir</category>
    </item>
    <item>
      <title>Bringing æternity technology closer to you</title>
      <dc:creator>omar-saadoun</dc:creator>
      <pubDate>Tue, 09 Feb 2021 11:07:41 +0000</pubDate>
      <link>https://dev.to/omarsaadoun/bringing-aeternity-technology-closer-to-you-2nob</link>
      <guid>https://dev.to/omarsaadoun/bringing-aeternity-technology-closer-to-you-2nob</guid>
      <description>&lt;p&gt;Do the people have a blockchain which is entirely their own, which they can build on and which provides their applications unlimited scalability, integrated oracles, amazing speed of transactions and innovative solutions to problems which even the biggest blockchains such as Bitcoin and Ethereum are struggling to resolve?&lt;/p&gt;

&lt;p&gt;Yes, they do, it’s called æternity blockchain. It is yours to shape, use and build on and has been made with Erlang and Elixir. So, shouldn’t æternity blockchain have its own StackExchange site? Of course it should, and behold, one is currently in the process of being created! To be a part of it, however, you should commit in the Area 51 æternity site staging zone.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EaWJuQow--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ize8oan41osw0dpwtgne.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EaWJuQow--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ize8oan41osw0dpwtgne.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why is it important to commit?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once we get to 100% of the needed commitments, private beta stage will start and only those committed will have access to æternity’s StackExchange site, until we get to the public beta stage. You can view it as becoming founders of the æternity StackExchange site, which is in itself kind of cool. More importantly, though, everyone committed will be able to post or answer questions on the beta site. This will be of great use to enthusiasts and developers learning about blockchain and æternity technology in particular, providing them with aid in coding, solutions others have already created, and, on the other hand, a point of pride and good will for knowledgeable developers to help and teach their peers about the innovative technologies used by the æternity blockchain, and how to apply them to new use cases.&lt;/p&gt;

&lt;p&gt;At the moment, about a quarter of the commitments have been achieved. We need your help and hope to kindle your interest in æternity, an open-source, decentralized and innovative blockchain waiting for you to shape it into something everyone will want to use.&lt;/p&gt;

&lt;p&gt;⚡️ That said, here is the link to commit {&lt;a href="https://area51.stackexchange.com/proposals/124829/ternity?referrer=YjY5MjcyODEyMzRlNTlmZTVmODljMWI3OGNkOTk0NzkzZjJiZmExYjJmZGJkNTg0NGYzYjIxZjcwMzMyNTNlYsPCR-SAlmoKLKR-GSAouPg2GjEH0CCzf23V_CfbkD6S0"&gt;https://area51.stackexchange.com/proposals/124829/ternity?referrer=YjY5MjcyODEyMzRlNTlmZTVmODljMWI3OGNkOTk0NzkzZjJiZmExYjJmZGJkNTg0NGYzYjIxZjcwMzMyNTNlYsPCR-SAlmoKLKR-GSAouPg2GjEH0CCzf23V_CfbkD6S0&lt;/a&gt; and remember that it doesn’t matter if you already followed æternity’s StackExchange page, you still need to commit.&lt;/p&gt;

&lt;p&gt;And please, we encourage you to promote this on your networks and between your colleagues. Also don’t forget to improve your reputation by following other SE sites and reaching 200 rep points.&lt;/p&gt;

&lt;p&gt;The process of creating a StackExchange site is a sophisticated collection of stages which ensure that a quality site is created and that it will have regular traffic and ample interest of the public.&lt;/p&gt;

&lt;p&gt;Launching a StackExchange site goes through the “Area 51” process:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Proposal: a handful of people are needed already within a few days;&lt;/li&gt;
&lt;li&gt;Definition: the community must propose and approve 40 typical questions;&lt;/li&gt;
&lt;li&gt;Commit: enough individual users must pledge to contribute to the community; *&lt;/li&gt;
&lt;li&gt;Beta period: the community must achieve some metrics (e.g. 10 questions/day);&lt;/li&gt;
&lt;li&gt;StackExchange site proposals may fail (close) or succeed (be launched).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;*We are currently in the Commit stage of site creation and soon hope to be in the Beta, where we will be able to really start working with everyone interested in the technology æternity is offering.&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>erlang</category>
      <category>elixir</category>
      <category>aeternityblockchain</category>
    </item>
  </channel>
</rss>
