<?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: mbarkhau</title>
    <description>The latest articles on DEV Community by mbarkhau (@mbarkhau).</description>
    <link>https://dev.to/mbarkhau</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%2F177043%2F94fab36f-ea1a-49e2-ab64-5fa603fbe160.png</url>
      <title>DEV Community: mbarkhau</title>
      <link>https://dev.to/mbarkhau</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mbarkhau"/>
    <language>en</language>
    <item>
      <title>Pretty Traceback - Human Readable Stacktraces for Python</title>
      <dc:creator>mbarkhau</dc:creator>
      <pubDate>Mon, 17 Aug 2020 07:55:00 +0000</pubDate>
      <link>https://dev.to/mbarkhau/pretty-traceback-human-readable-stacktraces-for-python-921</link>
      <guid>https://dev.to/mbarkhau/pretty-traceback-human-readable-stacktraces-for-python-921</guid>
      <description>&lt;p&gt;Pretty Traceback groups together what belongs together, adds coloring and alignment. All of this makes it easier for you to see patterns and filter out the signal from the noise. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://pypi.org/project/pretty-traceback/"&gt;https://pypi.org/project/pretty-traceback/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
    </item>
    <item>
      <title>Pylint-Ignore - Get Started Using Pylint</title>
      <dc:creator>mbarkhau</dc:creator>
      <pubDate>Sun, 26 Jul 2020 17:47:06 +0000</pubDate>
      <link>https://dev.to/mbarkhau/pylint-ignore-get-started-using-pylint-455</link>
      <guid>https://dev.to/mbarkhau/pylint-ignore-get-started-using-pylint-455</guid>
      <description>&lt;p&gt;&lt;a href="https://pypi.org/project/pylint-ignore/"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gnWT_Gm6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/crx81b866qg851mfeikx.png" alt="Pylint-Ignore"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I have a few projects that I haven't been using Pylint for and after recently running into a bug that I know would have been caught by it, I decided that needed to change and so I created this project &lt;a href="https://pypi.org/project/pylint-ignore/"&gt;Pylint-Ignore&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This allows me to start using Pylint and catch any bugs in new code I write and gradually burn down the backlog of possible issues in my projects. I think this is a better approach than having to configure everything at the start and having to clean up my whole project before I can add Pylint to my CI setup.&lt;/p&gt;

&lt;p&gt;I hope you find this useful and look forward to your feedback.&lt;/p&gt;

</description>
      <category>python</category>
      <category>codequality</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Python lib3to6: The Bablejs of Python now has support for Python 3.8.</title>
      <dc:creator>mbarkhau</dc:creator>
      <pubDate>Sat, 22 Feb 2020 20:44:42 +0000</pubDate>
      <link>https://dev.to/mbarkhau/python-lib3to6-the-bablejs-of-python-now-has-support-for-python-3-8-6e4</link>
      <guid>https://dev.to/mbarkhau/python-lib3to6-the-bablejs-of-python-now-has-support-for-python-3-8-6e4</guid>
      <description>&lt;p&gt;I just published an update to &lt;a href="https://pypi.org/project/lib3to6/"&gt;lib3to6&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This release adds support for &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the new &lt;a href="https://bugs.python.org/issue36774"&gt;bpo36774&lt;/a&gt; f-string &lt;code&gt;=&lt;/code&gt; specifier&lt;/li&gt;
&lt;li&gt;and of course the infamous &lt;code&gt;:=&lt;/code&gt; walrus operator (except inside comprehensions).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While these are nice, the main use case of lib3to6 remains that you can use the type annotation features during development (some of which are only available on 3.6+) without having to sacrifice compatibility when you publish your packages. Support Python 3.5 with minimal extra effort, or even 2.7 if you still care about that.&lt;/p&gt;

</description>
      <category>python</category>
    </item>
    <item>
      <title>lib3to6 - python compatability library</title>
      <dc:creator>mbarkhau</dc:creator>
      <pubDate>Tue, 14 Jan 2020 00:50:39 +0000</pubDate>
      <link>https://dev.to/mbarkhau/lib3to6-python-compatability-library-2oac</link>
      <guid>https://dev.to/mbarkhau/lib3to6-python-compatability-library-2oac</guid>
      <description>&lt;p&gt;In light of the recent blog article &lt;a href="https://gregoryszorc.com/blog/2020/01/13/mercurial%27s-journey-to-and-reflections-on-python-3/"&gt;"Mercurial's Journey to and Reflections on Python 3" by Gregory Szorc&lt;/a&gt; I thought I'd try to pimp my work in this area again.&lt;/p&gt;

&lt;p&gt;In short, if you have a project that needs to be compatible with Python 2.7 or even just Python 3.4, then you might want to look at &lt;a href="https://pypi.org/project/lib3to6/"&gt;lib3to6&lt;/a&gt;. The idea is quite similar to Bable for JavaScript: It transforms valid Python 3.7 code, into valid Python 2.7 code such that the semantics match as closely as possible.&lt;/p&gt;

&lt;p&gt;I still work with a Python 2.7 codebase, but most new work is now done in modules that are written for Python 3.7 and this library translates the code when the package is created. I've used it over the past year on half a dozen projects and I feel it is quite stable.&lt;/p&gt;

&lt;p&gt;An example of how it works.&lt;/p&gt;

&lt;p&gt;Say you have a &lt;code&gt;my_module&lt;/code&gt; which is written for Python 3.7. Features used here that are not supported by Python 2.7 are&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;type annotations&lt;/li&gt;
&lt;li&gt;f-strings&lt;/li&gt;
&lt;li&gt;print function&lt;/li&gt;
&lt;li&gt;implicit utf-8 file encoding
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# my_module/__init__.py
&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;sys&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;hello&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;who&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;f"Hello &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;who&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; from &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;version&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;split&lt;/span&gt;&lt;span class="p"&gt;()[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;!"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;__file__&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;hello&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"世界"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;The above code is translated to the following&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# -*- coding: utf-8 -*-
&lt;/span&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;__future__&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;absolute_import&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;__future__&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;division&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;__future__&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;print_function&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;__future__&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;unicode_literals&lt;/span&gt;

&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;sys&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;hello&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;who&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Hello {0} from {1}!'&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;who&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;version&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;split&lt;/span&gt;&lt;span class="p"&gt;()[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]))&lt;/span&gt;


&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;__file__&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;hello&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'世界'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Some changes that are made:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Explicit utf-8 file encoding&lt;/li&gt;
&lt;li&gt;Future import boilerplate. This changes the semantics to match those of Python 3, i.e.:

&lt;ul&gt;
&lt;li&gt;print is a function&lt;/li&gt;
&lt;li&gt;string literals are unicode literals&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;f-string converted to an equivalent &lt;code&gt;string.format&lt;/code&gt; invocation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I've had some people puh puh the project, because the gut reaction appears to be that Python 2.7 should die already, but this project is also useful if you are a library author who, for example, wants to use f-strings and yet still have your library be compatible with Python 3.5. If you don't care about Python 2.7 then just don't test for it.&lt;/p&gt;

&lt;p&gt;There is much more that could be said, but I think this is enough for now and I hope you find the library useful.&lt;/p&gt;

</description>
      <category>python</category>
    </item>
    <item>
      <title>AsciiGrid - A WYSIWYG Editor for ASCII Diagrams</title>
      <dc:creator>mbarkhau</dc:creator>
      <pubDate>Mon, 30 Dec 2019 21:06:32 +0000</pubDate>
      <link>https://dev.to/mbarkhau/asciigrid-a-wysiwyg-editor-for-ascii-diagrams-5239</link>
      <guid>https://dev.to/mbarkhau/asciigrid-a-wysiwyg-editor-for-ascii-diagrams-5239</guid>
      <description>&lt;p&gt;I like to use Ascii diagrams in my documentation, but they are a pain to edit in a traditional text editor. To solve this I wrote &lt;a href="https://mbarkhau.keybase.pub/asciigrid/#vvF;AOAOA;AeCCCgAjAoAeCBADAAASCYEJAGMFLFSCgNgAgADlVOFWHeCGfGfCgAKMfGXHhQgpghXCEAAECCCgAjAjAXCBAg_fiCiBEBeCCeCBXhZgPfCg8DgEAcF"&gt;AsciiGrid&lt;/a&gt; over my Christmas break.&lt;/p&gt;

&lt;p&gt;The mobile experience is probably not great and I haven't tested on Mac or Windows. If you have any issues, please report them or send patches to &lt;a href="//gitlab.com/mbarkhau/asciigrid"&gt;gitlab.com/mbarkhau/asciigrid&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here are some more examples from the &lt;a href="https://github.com/ivanceras/svgbob"&gt;svgbob page&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://mbarkhau.keybase.pub/asciigrid/#vvE;EOAOA;MCACAhAlAtA9ACMBRCAAAgAjApA1AhAMpBaDBRCgFECCCgAEhcjFMinoBAAfCcFm9NAKkQp8DjJDoAgBGlfHhBfCAAcFl_hDKMgCegQn-ECCCgAEgINjFgopAgJmBj7MgJAfh5Fm_AAOOOgAOiHiAmKqHixAAKMNhHfCAeFhCAaDBRgEiOjhchkiMchulHgGjRGCCCCeDgIDAelVFh8i_aDBRhEiInwiMi-AHkQhEAcDCCCChTDADAAeFg_j4WibaDBRg2k9izgZjLhigBOOOgAOjRmdg9ADAAg6agElNaDBgPi6qqhNlCkkfGMsBAARCAWFw7qcuAAAKMPPPPMzHaDBRC-imANMmCfEv1AMCCCgAiAimhQgBcDi0gKeDjMANiBAeFgbgBp_gFGmJhAHiBkNgKhcmCaDjScFhAt5ANCCCCCEAchDNkXKeDhXkGg1DhWgPMPPPPgacFAAWHt8jJDfoCnAxAh5hpyzN-biAOmAgHk-kRgQgCMCMiBkACkDmKhGNANhaAcCNAAKgcaDBRCgOGOHgBhBATDAhDUDAkBGAHUhQgjAViRiGAWidhGXgHgeaDBRChZhAiANCNgDKCkACNjEmKhGMOMhahFOchbo8OOOjDiGmDqAkIpEhARCBRChFcCNgDKMnCkGAMpBmUnHo_gFfhBYDhlFkHZhKiKjKiriKpFlKkHRCBRh5khj1mEiJGijDQDhEHgBiMgPRmJt_AKMOOOcCNmDlFcFlkfikoGlKt8hAh_OOpTAAKMhQMNqCOcClJq6hHmSKMr8rAyARCBRCiFfjBiAcFhCMCCCCCMhEhD-mhFDjJDSjDgDAAcFgCfClCjA8tm0lODiBg4fiX000zknjQk6AANlACCCClF7qAKMOOOgAc6U2uKPPPgAjApA1AuAN"&gt;Basic Shapes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mbarkhau.keybase.pub/asciigrid/#vvE;DOAOA;AAAAAMCCCMiFiAnAAAOBhCfCCfGCgDCkQMgumbDCDsnhbBAMgvAgAg7elagJg3cFlfHi3isgVicfhHcFBGAaCAgog-k2g7AfEAAHivAgDDj5DCeDDhMAGEGCaCCHHBANCMh7nycFgmfCfCjLgbaCiwgoCNCNhGcFcFgIfCBiJFg0l5gKNEgXnGOOnElANCCNi3ANsGgTAAMCCCCMslOiWDiAoMcgoGOHBgeODOOiAlqfCAMCMAcFBhvhZOOCCj4gxGgEHAHBAKCfCMaDaDhAMcFCNk7cFgZNOfCBAgGCCgACmUiOGOH"&gt;Quick Logo Scribbles&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mbarkhau.keybase.pub/asciigrid/#vvB;COBOA;AAFCCCCFAAAgAlGBAfCjKcgXhEtAojCEjAiBFBElVgOgTqBFjGDjApA54kFBAck5fCjCtAcFiCDjApAjaimkArAkABAAECCCCElnrAgGkMCjAkFqhrNjABAfCjdcFjCtAfCiCDjApAjalZkArAfCBEkgAECCCCrAgLhIDjApAoaCjApAEBAcFjdfCjCtAcFj8vqkgkArAkABAAGnigAg4pChBDiGjAmDkjCjApAEBl2cFjCfCtAz8hIlVkArAfCBj8gAGCCCCGrAoBCEjAiBgkvDkFBBBBiyHHHlAiDAFjfhAlACFmRsHhPgEjCBAHHHfCgMcFnAi2DhAlAoBAgiggjApAi4hiECCCEhIBiOcFHHHnAiFkehAlAkuxAjnlABw_gHhkADhAlAoBhcgljApAh0ihECCCEhIBgThsHHHnAiFkehAlAkuoPnMkAjCBw_gHi3DhAlAoBAgiggjApAi4hiECCCEhIBhrcFHHHiXnAAAGhghAlAgBGkRtEiQlVG"&gt;Grids&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mbarkhau.keybase.pub/asciigrid/#vvC;BOBOA;AAAQDgCgAATlBkApAQFALBhFLCCCgACLjSEZHxbcFBARDAfCDhKSmBgAybisALCCCgACLAlllAmfWHQhYgtmITDg4DADUiUgGXiEhHUcVCeWVCs2LCCCCcFhCCLi4iNCDCLibZTZCAEiOGAEYHlwfCjCWHAYFgFcFh5lOmAglAUh-lwrwAAKiBi5LCCCgACLkUWHsnpslAg3AVDlqhFgAEamykSHRDALCCCgAjAjALgXSDBBBrhkAMvACMFl0lMKBVEZHVGAfmKAHiBoGlAYChSZCASFVGWGSHRGTGUHZGKeGkscFBgGEghmtcFjVkvcGVrogANCNnmiAhsg3Bm4lRgKWHseiADtBKCCCCCKi_iMiLgALlBqiWH"&gt;Graphics Diagram&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mbarkhau.keybase.pub/asciigrid/#vvE;EOBOA;AAAgAjApAkAMCCCeDAAWEBkLREkCShFgATEAAUhRAAfCleag1gACCgGkAiAnIeDAAVElokAAAcFpCeFgOuTAWHnCfCgCNCCCeDAAXv-AASEAhaATEACNBBwPiAcCCM1EKg20EfCDcFjXh-CCMqSDkUDSEfGSGDrtAmyKCECNoRREcGZGTGVGkaAADhBYgPcGcGfGkOnVCCCgAjACCeDoQlBlIoPAZETHAZGUHAfGbGfhopVcDCACAhAjAhXhVcCCECMlfgAREcGZGTGVGkbDSEfGSGDoZhyMkYKCCCNpQKCNkUpKiAfCDcF1FAD3dAg0BpTMQQVCMlpgAGAQDAHpXKCNjJk8hDcFjcnIkNiFWFmnWiQgAMQQVCMmPjJhtAAGARDAHkSGAUgKkuKCNmphIhtAAfCgCcFmRDiJKMBlUlWkWiJhbAWiwgAmAhbibi7MQQVCMjUjGnkkAgDBGASDAHhJGATkDlnmAkCBAKhENi9mDh2Vg3gEWjBXgEBjfjAplmAmA"&gt;Sequence Diagrams&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mbarkhau.keybase.pub/asciigrid/#vvB;AOAOA;AAAgAAASbVCBhFVFZGeGAaQVCgLFCCCgAjApAinhAkiDuAnHhsGUgUhAlAtA9A9AWbVCBBAAAAAVFUGTGSgOBSCjHHPbESCaglidAFCCCgAjAmAj5gAhliEfgEJsIjQpLh4GUgahAlAJtBtA9ApAWbVCBAAAgAjAiAJLCCCCCMJmSSglnWVDQDQDdGTHAnZaQpXjAJBTEQHVHFRFfGeGifUhAlAtA9AgBFCCCgAiABAAAgAAAagWlElADAAZEeGRGTGUHZGWHVGqjhEREnTkvnaCCCgAjAiAGUg0hAlAtApAWbVC"&gt;Plot Diagrams&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mbarkhau.keybase.pub/asciigrid/#vvE;GOAOA;AAAgAgAcQVCCCgACQRVCgOMCMlOiOBAAfGCCeWiNDAVGcGVGdGADCCGAbDAHgSeiKdWVggfGgwAAADgBUg_hzCCYgHgOKCNlOjNADlmj4hVeDkBgPiYjclhDhDcQi-Qi-hStYQXVCCfg-CdhBCDAYHADCCehPiYh8iAgjCjvDhAAAURhbCYRVCjOiYhADqbAMCMkDtShaKCCGAcCAHCCNpXeFnahEKrRq5AdWVCCCgAgAeDnBgUrbgAAcQioQRVCgLMCMkVmfQXVhcgDCdg-CDAYHADCCGAcCAHCehQfhBgjhEjwiADAURh5CYRVCgNKCNgSoWKixCCcDjCNoRnAqAMksiAekxmIMBigcQVrKQRVCg5CMh_gDADmcsPk0lNhluKiXBfEOOOODATHUHSHVHTGUHOeGRGdGVGADOGAaDAHgEhCedVChpvOgSUHQHiOOOfijkugYSGfGUGZHiYhcEBAAdgiAAURVCCCgAjACCYRhTKCNAjAAAcgmlgpVgYk3lNdhmgUtOkYcgcBAADieiAnAoAtQiAMCM1DADB-zKCCCgAjAcDjCGAcCAHCCN_28-rAK06hADBhcCCgAjApA1A9AN"&gt;Railroad Diagrams&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mbarkhau.keybase.pub/asciigrid/#vvD;DOCOA;AAVEAECCCgAjApACagBEAAAiiDiEiAnAiAfGBAAIAD0rhADhDioglyuhAAgZgEBAAHAgvu3ibgAjAg0gk1vkgBAAGAD4rjAg5gk2tjABAAFAEk-CCEgAjApAi9hjfGChACDgAjApABijAVDAKJAKgELJALgEMJAMgEUDJgBgGVgGjl-LhpBBBBYgJNWDXgXSVCm2mAvAgAdWVCegBBXDYDNLJ1kxoSQVChA65JNXDM1_56n8mAnIoSiFfgBQXgBg2hSBWDMNLXDAUSipgAjApAn5oGl6ASgGhAiRfgBQXjUhRhIhmpMhktQlcAAAhThfBVDVDNYDJAUSiUlwgIgAjAiAlRh2l2iklBnwhbAQXVCQgGfgQpAjZieAnCpIgAhthpBUDYDNMMAUSiXhfhYegZjkdgHQhSgBnMhkhAlApslEfkFjojygAlTpAlABUDJNYDXDAUSVCdgPegBj6hghKmNAhGhyAiXQgipUhEhQhehclAhEisrtljBMMNUDJAUSVCSgRhAAiAmshEegFdgBj-AAiehAldBLVDNZDMq8qlliiImFBKYDNUDXDAcTjMl1BKKNJJAUSg9mlj3URVCQgghAlAtApAUT-C1Y-O1Y-_-K3WBAAAALJKKhEjGKLoBMoBUDoCVpBWD"&gt;Statistical Charts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mbarkhau.keybase.pub/asciigrid/#vvB;FOBOA;AWHeGTGWHZGVGXHVGSHAAAgAgAFCcCYCAAZgFCFBAAHHAApThZlGZggnEAXGRGUHVGXHRGZnqAAWHeGTGTgYSHWiBBAbFHHdFDKDAACCCCMYChmZGei_SgvVgHiPhcifAHHHgAhAiwhPiIAAHHBfCWTYhACAfCDHDh4hAGCgPlFAZCFCGlFbFHFFFHhBQLdFkPg3gCADKKDBnvnAGCFYCr7xTgADHHHHDADgHy18gmAfCWTYhAiDgMADHHDBBB2ZORGcGWHVgDVGTHTHACCCgACCFqooAQFVHcGTgxagxUHAVGeGXGZgDVGhdfC1jvAOyWjAHHHgAgAFCCCgAjAjAEmvkAFmSG34AfCAAlgMl7oRFkVFHHHgAgAvycFgCUHYGSHVHTHUHCCMBqVYChAjGHHHgAgAgJQGCCCgAiAfjHCEAAlLs4AcFktCGmLsADskkpCCFHAAHHNHHHFiK3YnQDgbwEisnGWGVHVGcGAAHHNjvANHHTHQHRGSHbgWlyXEeEUEi7mMZGeGUgnbGVilk7gGQHcGVHXn2ADrtoAmssI7T1ZtGHHHHhtQGCCCgAjAFqlqkfCAFgfGsID3YDkWycrHECEChAgBBshFCCCDADgDFgLHH8rDCECEhACDBpMHHHgnjUCDCCfGAAQGCCCgAgAajBgWmKgAPhrhACDBAAFkPMAHHHAADDDgADADAAQHfGXHVGSgUAgAAhRgDakrz6AcFlnitDDDgADh4THXHZGUHTGYGmXjAoogMCECEhACDBiMXFRg0VGSHiKQGmYGpsECCfGCCCiCCEpOmoEBiMZGeGUHRGbGVGkdYEYEPopjADpAj2pTXEVGeGVGSHRGUHfgFsuEiECr7ATFfGcGRgsAQg3h_cGBpWpArAECCCgAiAEqn6aSERGUHUHVGSHZHBkyhAKKKgAKoHhPKKAATgndGSGfGcGZGTGARGeGh-egFRGpmgwq1gOrBDsAnBdGZGTGSHfGAYGVGegIZH2VTGfgtcGAXHfCUHVHegMeGXGAcGVHXGsqhBFCCCCFsKgBYCFCGZCAD4A4AjNQHZGTGfGAWGRGSHRGUGATgIQH0kjFAHHHhNUHSg_dGdh6GcGVGZCvnitjEg1DBgGQFTEgECMAAFCCCCGhBCgDhACGhfSEfGRGSHUGh6QjciAmAhjhZiAXgpfGVHeGUGAQHcg6eGVGAYCWGfGZGcGZC"&gt;Block Diagrams&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mbarkhau.keybase.pub/asciigrid/#vvF;GOBOA;AAAgAjApArAeCCCeDAARENQHMHB-QgAfCwVvAeCCCCCeDAAZEIJGJHNASFFNFHKFBhcQFNHIIJIXGAaimhqCq2fkIgAcjvqSkSzbAAXCCCCeDAQFHGPMARDBZEIJGJHNALFKFHLgSq3uxhWBnDatMzeAAXCCCeDAAQFHGPMASDo6ntoEAAfgwgAhAeDASEFGHppxiAfCqWtUfGgAqFnRFfFhAjAr4m_hAeCCCCeCAaiCjpr8Cmts4AXh4h0DAYhiAAZlllTfEhaAeCASFFNFHKFgJt4nAQGgxXCAfGwKcFfFfhAlA4ug_hAgAcFqZqYChCcFgAlftTeCCCXiiuYw4kGjjXg4CCECeDAAQFVHKMASGHPbGKn3zql6jFFBwbDrDolXCCCCCeDATFFGSGHPbGKm5n3Aszj9BsGWFgotahnXCCCgAeDASFFPFQHGJfGIl3gAUFFHdGAg8Auvg_ofiAWHgnvXofXFfGLbGNHfGOgpAeCvcAXCCCeDeDATEHLFFLAPMHIXGm8lgWFAfClNhAQFUFfEAsHjlpcSEVHXG"&gt;Mindmaps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mbarkhau.keybase.pub/asciigrid/#vvD;BOBOA;AAAgAEKJCKVDWFjJiAPPPJcCJUDXDSFBiOaCCCgAhAfGkACDgmDiLkNlXmcCCNg9AEADgDgAgAiFjAjIqOnQDh1CdDdDdDCjNPDPqVANEN-ajNNCgopwDgBLbGL7fhNUDXDJDAEuumEl7AAPDPi6mhVHWEicAOCCNilAOEOkXNENnycFAfCAcEVEIBiMECCCgAgAfGkqADWDhCXDADYhGAKbGAgKn9CECj5krPPPDgBgHNgYCCgCgACNiYqtADqsACQVVhAiDCjpoUhyAAOEO3oAAiytpKl4DfCAAGHqtkAXEeEIvqECCCgAfGCCEgMVDUDXDwslAqwhliCADQGekH2irtiBcCENn_g3rkNCCCgACErsLLJSFDixfGhcDDCEAAZESFWEZDaFMUt6holAo-jAhZhAADECe2hAAdEHMUDJWDMm0QGEOm1DCE3jrHlsmYAAGZFWFLZiSACKLWFWD13w8OCCCCOkNfGCCDcDChEChCCYFAfEVFUFBWDJJJAdGZGTGSHfGAACADAEizDk5jHLpCkNjAiABWERg-RGUGcCAUDJWFAPPPDgBPPt8CCfGt9HDiWiABHRGQgBTGZGUHfGSHAAeHgAjAhCjkl1DAXEeEImHMJVHYEAAHDjYAACCCAUDXDJBpsjWlAmMDMjCKeGWEmNHhoisTCTCTCAAVHWE14pJDCCCgACDDCCNoejAgC1uOiyEiACOsSgAXEeEIlpiI0yiAVDhjUiB0MAD5lgpgCOCCCgAjACfGsA-frTmAPPPgeswQGCCCgAjACakBfCcFhAfqRfGCCDPPPDCOs4rAlALbGrDDkBKbGJB-euANEN3d3dDADAVDbGWDAEAMbGM3r7nZGeGATFVGSHZGVG3t3tOEO3d4dDB-CuAXEeEI"&gt;Circuit Diagrams&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I hope you find it useful, cheers.&lt;/p&gt;

</description>
      <category>showdev</category>
    </item>
  </channel>
</rss>
