<?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: gmantelet</title>
    <description>The latest articles on DEV Community by gmantelet (@gmantelet).</description>
    <link>https://dev.to/gmantelet</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%2F336697%2F1670abc6-2437-4f27-8d4c-2c214ca34df5.png</url>
      <title>DEV Community: gmantelet</title>
      <link>https://dev.to/gmantelet</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gmantelet"/>
    <language>en</language>
    <item>
      <title>Lyth: Better be safe than sorry</title>
      <dc:creator>gmantelet</dc:creator>
      <pubDate>Mon, 17 Feb 2020 21:19:16 +0000</pubDate>
      <link>https://dev.to/gmantelet/lyth-better-be-safe-than-sorry-glo</link>
      <guid>https://dev.to/gmantelet/lyth-better-be-safe-than-sorry-glo</guid>
      <description>&lt;p&gt;The most immediate mistake young and unskilled coyotes make, at the very beginning of each episode, is to believe they can match the Road Runner. They start running after them, get ready for the fray too early, and after a while, they run out of gas, stunned.&lt;/p&gt;

&lt;h2&gt;
  
  
  First failure
&lt;/h2&gt;

&lt;p&gt;It seems that even hobby projects do require a bit of QA. &lt;em&gt;Never mind what test cases provide!&lt;/em&gt; I first thought. As an enthusiastic runner I swooped hungrily on my project and started implementing the wonderful &lt;a href="https://ruslanspivak.com/lsbasi-part1/"&gt;series&lt;/a&gt; on how to implement a basic interpreter with Python.&lt;/p&gt;

&lt;p&gt;Then came the bug... The lexer never caught properly the following expression:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let:
  a := 1 + 2
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Was it the analyzer? Did it come from the tokens? or even the scanner? Damn! Why the indent was not retrieved properly? After many clutches and hacks, I had to come to terms with this: The project stopped, and that Road Runner escaped, sticking out defiantly its tongue. Meep! Meep!&lt;/p&gt;

&lt;p&gt;What is the most frustrating part in this story is to consider how many times the Coyote fails because it did not test its tools first...&lt;/p&gt;

&lt;h2&gt;
  
  
  A Python package tool
&lt;/h2&gt;

&lt;p&gt;Ok, ok so my silly project needs some harness. And now that I am unpacking my recent acquisition comprising a &lt;a href="https://flake8.pycqa.org/en/latest/"&gt;linter&lt;/a&gt; and &lt;a href="https://docs.pytest.org/en/latest/"&gt;a test framework&lt;/a&gt;, why not doing things right, and follow the instructions on &lt;a href="https://blog.ionelmc.ro/2014/05/25/python-packaging/#the-test-matrix"&gt;ACME's blueprint by Ionel Cristian Mărieș&lt;/a&gt;?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_9R8XfPj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/http://4.bp.blogspot.com/-k5_6IKGYF7Y/T9aZZCmqVkI/AAAAAAAAAW8/FLiUzsHmmIQ/s1600/beepbeep%2B%2824%29.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_9R8XfPj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/http://4.bp.blogspot.com/-k5_6IKGYF7Y/T9aZZCmqVkI/AAAAAAAAAW8/FLiUzsHmmIQ/s1600/beepbeep%2B%2824%29.jpg" alt="Boom, haha!"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To get an out of the box python package &lt;a href="https://cookiecutter-pylib.readthedocs.io/en/latest/"&gt;cookie cutter&lt;/a&gt; comes to the rescue. Package templates are available &lt;a href="https://github.com/audreyr/cookiecutter-pypackage"&gt;here.&lt;/a&gt;. Please do not ask why, I chose this &lt;a href="https://github.com/ionelmc/cookiecutter-pylibrary"&gt;one&lt;/a&gt;, because well, it comes from &lt;a href="https://blog.ionelmc.ro/2014/05/25/python-packaging/#the-test-matrix"&gt;Ionel's blog&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Packaging Lyth
&lt;/h2&gt;

&lt;p&gt;The instructions are clear and pretty straightforward. We first need cookiecutter installed on the machine, we provide it the target github template we desire, we answer a couple of questions. I chose the following set of tools:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pytest
Travic-CI
Coveralls
flake8
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Executing &lt;code&gt;tox&lt;/code&gt; went smoothly. I only had to &lt;a href="https://github.com/new"&gt;create&lt;/a&gt; a new empty project. By empty, I guess, do not check the README option, no .gitignore as well, and no license.&lt;/p&gt;

&lt;p&gt;And then, the steps were quite similar to what was instructed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git init .
git add .
git commit -m "Add initial project skeleton"
git remote add origin https://github.com/$USERNAME/$PROJECTNAME.git
git push -u origin master
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h2&gt;
  
  
  Polishing badges
&lt;/h2&gt;

&lt;p&gt;At that point, we get man shiny badges, most of them shaming you, the build fails, there is no coverage at all etc. etc. So, to get this:&lt;/p&gt;

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

&lt;p&gt;I had to register everywhere and link my repository to my accounts:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://travis-ci.org/profile"&gt;Travis CI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coveralls.io/repos/new"&gt;Coveralls&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://readthedocs.org/dashboard/import/"&gt;Read the docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://pypi.org/"&gt;Pypi&lt;/a&gt; to publish my work!&lt;/li&gt;
&lt;li&gt;And even &lt;a href="https://dev.to/"&gt;here&lt;/a&gt; to write my reports.&lt;/li&gt;
&lt;li&gt;If you need a doi, and want your work to be tracked, you could even use &lt;a href="https://zenodo.org/"&gt;Zenodo&lt;/a&gt;. I am too shy for this.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So much fun for today, but is my project a burden on Mother Nature? I mean, any time I &lt;code&gt;git push&lt;/code&gt; I have now a bunch of small workers contributing to global warming, basically testing, keeping track of code coverage, building documentation, publishing and so on... Sorry polar cubs...&lt;/p&gt;

&lt;h2&gt;
  
  
  All set up?
&lt;/h2&gt;

&lt;p&gt;So, definitely, this will not guarantee you will catch the Road Runner, but it will raise your confidence next time you ride a rocket, you will not end up in some cactus... Outch!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Nb_JdtEe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media.tenor.com/images/9b68d1052047354340a751827879f2de/tenor.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Nb_JdtEe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media.tenor.com/images/9b68d1052047354340a751827879f2de/tenor.gif" alt="All setup"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  A couple of caveats
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Unicode issue in .readthedocs.yml
&lt;/h3&gt;

&lt;p&gt;I got an error with .readthedocs.yml, and had to remove the last lines, &lt;code&gt;path: .&lt;/code&gt;. It did not bother &lt;code&gt;tox&lt;/code&gt; on my local machine, nor it hurt Read the docs from building the documentation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Added .readthedocs.yml to MANIFEST.in
&lt;/h3&gt;

&lt;p&gt;I got issues with &lt;code&gt;tox -e docs&lt;/code&gt; and thought adding .readthedocs.yml could ease the problem:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;include tox.ini .travis.yml .appveyor.yml .readthedocs.yml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  NoInterpreterFound for docs
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;tox -e docs&lt;/code&gt; kept failing, and I found that issue tricky, it seems, that in &lt;code&gt;tox.ini&lt;/code&gt;, adding the missing &lt;code&gt;docs&lt;/code&gt; helps it find the right Python interpreter to complete (successfully) its objective:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[testenv]
basepython =
    py37: {env:TOXPYTHON:python3.7}
    {bootstrap,clean,check,docs,report,codecov,coveralls}: {env:TOXPYTHON:python3}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Do not forget to have &lt;code&gt;docs&lt;/code&gt; included.&lt;/p&gt;

&lt;h3&gt;
  
  
  Improving coverage in template &lt;strong&gt;main&lt;/strong&gt;.py
&lt;/h3&gt;

&lt;p&gt;When running a test for pytest, it is practically almost impossible entering in:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if __name__ == '__main__':
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;of &lt;code&gt;__main__.py&lt;/code&gt; file. Consequently, coverage reports that the corresponding couple of lines are not covered. I added into my &lt;code&gt;.coveragerc&lt;/code&gt; file &lt;code&gt;exclude_lines&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[report]
show_missing = true
precision = 2
omit = *migrations*
exclude_lines =
    if __name__ == .__main__.:
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;And made the promise I will &lt;strong&gt;NEVER EVER&lt;/strong&gt; write any code in that section.&lt;/p&gt;

&lt;h3&gt;
  
  
  setup.py
&lt;/h3&gt;

&lt;p&gt;I removed the versions of Python I did not want to use. As I use a lot of &lt;a href="https://realpython.com/python-f-strings/"&gt;f-strings&lt;/a&gt;, Travis CI will report failure with Python &amp;lt; 3.7.&lt;br&gt;
I also removed the unwanted python versions in &lt;code&gt;tox.ini&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  Read the docs
&lt;/h3&gt;

&lt;p&gt;It is correctly said in Ionel's cookie cutter template, but it was very important to do these extra steps. Go to read the docs, open your repository, and go to admin:&lt;/p&gt;

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

&lt;p&gt;You need to check the box regarding virtualenv via &lt;code&gt;setup.py install&lt;/code&gt;, specify the &lt;code&gt;docs/requirements.txt&lt;/code&gt;to make the build run smoothly&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qRdiuaLA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ln5blb4wpfnf5migf0ur.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qRdiuaLA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ln5blb4wpfnf5migf0ur.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
 and excuse my French.&lt;/p&gt;
&lt;h3&gt;
  
  
  bumpversion and Windows
&lt;/h3&gt;

&lt;p&gt;Are not good friends... I needed to use &lt;a href="https://pypi.org/project/bump2version/"&gt;bump2version&lt;/a&gt; instead.&lt;/p&gt;

&lt;p&gt;So keep in mind that now changing version of project requires this small &lt;code&gt;2&lt;/code&gt;, otherwise, bumpversion will scr*** your project on Windows. Oh, and do not forget to &lt;strong&gt;commit first&lt;/strong&gt;, otherwise it will complain the repository is &lt;strong&gt;messy&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;bump2version patch&lt;/code&gt; to increase version from 1.0.0 to 1.0.1.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;bump2version minor&lt;/code&gt; to increase version from 1.0.0 to 1.1.0.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;bump2version major&lt;/code&gt; to increase version from 1.0.0 to 2.0.0.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  Publishing
&lt;/h2&gt;

&lt;p&gt;I dump here the set of commands I used to publish as I guess I will have to write a script later to automate this process:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;rm -rf build
rm -rf src/*.egg-info
tox -e check
tox
python setup.py clean --all sdist bdist_wheel
twine upload --skip-existing dist/*.whl dist/*.gz
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Tada! That makes this, an empty project that burnt a lot of CO2...&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uZIshT7w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/0koj7egi2qg0gtya0p0t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uZIshT7w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/0koj7egi2qg0gtya0p0t.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Pending issues
&lt;/h2&gt;

&lt;p&gt;I am still unsatisfied with the recipe, but using &lt;code&gt;bump2version&lt;/code&gt; and pushing to repository may lead to temporary broken badges, because github cannot compare the new version (as it expects it to be a branch) to master.&lt;/p&gt;

&lt;p&gt;So the thing I did so far, and that may be dead wrong, is to go to github, create a branch named the new version generated by &lt;code&gt;bump2version&lt;/code&gt;, that is present in &lt;code&gt;setup.py&lt;/code&gt; and that is on &lt;code&gt;Pypi&lt;/code&gt;, and then push to master. There is nothing to compare indeed, but read the docs does not complain about a broken link, and I guess it is the essentials.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Lyth: A Naive Attempt at Catching the Road Runner</title>
      <dc:creator>gmantelet</dc:creator>
      <pubDate>Mon, 17 Feb 2020 02:09:25 +0000</pubDate>
      <link>https://dev.to/gmantelet/lyth-a-naive-attempt-at-catching-the-road-runner-4301</link>
      <guid>https://dev.to/gmantelet/lyth-a-naive-attempt-at-catching-the-road-runner-4301</guid>
      <description>&lt;p&gt;I got a &lt;em&gt;"Wile E. Coyote"&lt;/em&gt; obsession running through my mind for days now, trying desperately to catch the idée fixe that I should definitely drop my rock into this &lt;strong&gt;reg&lt;/strong&gt; known as &lt;em&gt;yet another language&lt;/em&gt;, and build yet another assembler for an embedded project.&lt;/p&gt;

&lt;p&gt;I take as fact that Carnivorous Vulgaris, especially those who are not born yesterday, will likely - and with reason! - roll their eyes, sigh and ask that same old question, the one they keep repeating with a sickened tone... &lt;em&gt;Why would you do that?&lt;/em&gt; Nothing today can beat the available tools. So this is waste of time. Well... A starving Coyote would do anything and everything to eat the bird, and this desert is so boring anyway.&lt;/p&gt;

&lt;p&gt;There are (however) benefits in this endless task, all brilliantly described by &lt;a href="https://ruslanspivak.com/lsbasi-part1/"&gt;Ruslan Spivak&lt;/a&gt;, but I guess the claim that it would wake us as better software developers makes a valuable starting point...&lt;/p&gt;

&lt;p&gt;However, designing a potentially new domain-specific language for a target embedded platform, taming intricacies of compilers and the mechanics of lexers, assemblers and linkers... is not it too overcomplicated a task for a rookie? In other word, why would an inept yet ambitious Coyote, an aspiring candidate for disaster, and a proud neurotic show here the perfect example of the &lt;a href="https://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect"&gt;Dunning-Kruger effect&lt;/a&gt;?&lt;/p&gt;

&lt;p&gt;Well... Good question, my fellow reader... This is where I wiggle my eyebrows with overconfidence... Let us explore the couple of potentially wrong statements and misled (if not knowingly biased) opinions that lead me to a potential plan to catch the Road Runner:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Industry seems to grin and bear it: The floodgates are wide open with more and more Famishus Famishus stampeding through the desert, knives and forks in hand, but sometimes... &lt;a href="https://www.quora.com/Why-are-there-so-many-bad-software-engineers"&gt;ill-prepared.&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The no premature optimization idea can lead to cost-effective code development. This and the fact that some embedded platforms now boast multi CPU SBCs and gazillion bytes of RAM, this is a giant chinese buffet cheering up Coyotes they can now chase after Road Runners, and start using scripting and high-level &lt;a href="https://opensource.com/life/16/8/python-vs-cc-embedded-systems"&gt;programming languages&lt;/a&gt; for their embedded projects.&lt;/li&gt;
&lt;li&gt;As a consequence, is the (millenial) Coyote of 2020 craving for immediate results rather than displaying art and patience?&lt;/li&gt;
&lt;li&gt;Many Coyotes leapt into the very overcomplicated pitfalls (precipices) left wide open by cross-compilation tools for target platforms (I throw simply dreaded keywords here: host compilers, target compilers, staging, toolchain, broken dependencies and so on...), or worse, the tools sponsored by (ACME) hardware vendors often turns traitorously against them...&lt;/li&gt;
&lt;li&gt;Will there be a lack of expertise among the Coyotes regarding linkers and assemblers? Or simply put, when our forefathers will kick the bucket, shall we blindfully use these tools without any knowledge of their mechanics?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fggUJrLx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/media/DQyvMmeX4AAlJLw%3Fformat%3Djpg%26name%3Dsmall" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fggUJrLx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/media/DQyvMmeX4AAlJLw%3Fformat%3Djpg%26name%3Dsmall" alt="Wile E. Coyote disguised as Road Runner..."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;No premature optimization&lt;/em&gt; could be applied to this kind of project for the sake of education, to reach out the vast assembly of hobbyists and software developers who already use Python, for example to show the different stages at stake such as:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Interpretation of allegedly elegant syntax and semantics of popular and modern languages.&lt;/li&gt;
&lt;li&gt;Transparent demonstration of the translation into assembly and bytecode, leaving the control freak all the room he or she wants to optimize code.&lt;/li&gt;
&lt;li&gt;An extra Tetris-like tool letting the said control freak put an address for the variable he or she wants to assign, thus showing what happens under the hood.&lt;/li&gt;
&lt;li&gt;And many extra stuff dealing with determinism, FPGA (???), and kind of what you get is what you meant... Shush... I will not let the cat out of the bag now.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Would this be an interesting project to build a blinking LED app, involving all these steps without the widely known tools for the sake of self-education to complement existing &lt;a href="https://micropython.org/"&gt;initiatives&lt;/a&gt;? &lt;/p&gt;

&lt;p&gt;This would definitely not reach performance the existing assembler, or catch the Road Runner. But better use cunning than speed, and lure our target: What about another blinking LED project in a portable language that eliminates the use of a host compiler, and that makes assembly great again? If the steps involved expose everything so that future generation of hungry snot nosed Coyotes like me can pretend beating state of the art (just a bit) and try making an explosion of assemblers, and linkers, for the sake of nothing, that day would not be lost totally...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Zo7O9XyZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/media/DQyvNknWsAAFiqJ%3Fformat%3Djpg%26name%3Dsmall" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Zo7O9XyZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/media/DQyvNknWsAAFiqJ%3Fformat%3Djpg%26name%3Dsmall" alt="Only to be courted by his peers..."&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
