<html><head>

    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
  </head>
  <body>
    <p>Hey everyone,</p>
    <p>I hope you all are well, having the time of your lives!<br/>
    </p>
    <p>Would anyone wish to help me develop plugins to speedup
      ReedSolomon?<br/>
    </p>
    <p>I am feeling the dopamine high from finally finishing (mostly) my
      Reed Solomon implementation, both Erasure Coding from Backblaze
      [1] and Error Correction from ZXing [2]. I got decoding working
      correctly, with dataMatrix256 and QRCode, including corruption
      repair, within t/2 errors. <br/>
    </p>
    <p>It is VERY SLOOOW, way to slow to use yet. I am working on
      writing plugins for the hot spots, which are on the decode side:
      GFPoly evaluateAt (40.1%), Decoder runEuclideanAlgorithm(38.5%),
      Decoder findErrorLocations(12.6%) and Decoder find
      ErrorMagnitudes(2.3%). At the bottom, an exposition of performance
      profiling the GF FEC code.<br/>
    </p>
    <div class="s-prose js-post-body" itemprop="text">
      <p>It is written in Squeak, my favorite all-time language
        environment. I have used it for over 20 years. It is so
        beautiful! The rule of development is #GetItWorking,
        #GetItWorkingRight #GetItWorkingFast.</p>
      <p>If you are interested in checking out the code, go to <a href="http://squeak.org" rel="nofollow noreferrer">http://squeak.org</a>
        and grab squeak. Once you have it running, right click for the
        World Menu and select open...Monticello Browser. Add a new
        repository of type HTTP and enter the Cryptography repository.</p>
      <pre><code>MCHttpRepository
    location: '<a class="moz-txt-link-freetext" href="https://www.squeaksource.com/Cryptography">https://www.squeaksource.com/Cryptography</a>'
    user: 'squeak'
    password: 'squeak'
</code></pre>
      <p>Open a Workspace (World Menu -> Workspace) & run this
        code (paste into Workspace, select it and right click do it.):</p>
      <pre><code>Installer ss
    project: 'Cryptography';
    install: 'ProCrypto-1-1-1';
    install: 'ProCryptoTests-1-1-1'.
</code></pre>
      <p>Now you can open a Browser to look at the code (categories:
        CryptographyRSFEC & CryptographyRSFECTests) or open a
        TestRunner to test it (World Menu -> *).</p>
      <p>[1] Backblze RS erasure code -
        <svg aria-hidden="true" class="svg-icon iconBookmark" width="18" height="18" viewBox="0 0 18 18"></svg><button class="js-bookmark-btn s-btn s-btn__unset c-pointer py4
          js-gps-track" data-controller="s-tooltip" data-s-tooltip-placement="right" aria-pressed="false" aria-label="Bookmark" data-selected-classes="fc-yellow-600" data-gps-track="post.click({ item: 1, priv: 5, post_type: 1
          })" aria-describedby="--stacks-s-tooltip-y67jzwuu"> </button>
        <a class="js-post-issue grid--cell s-btn s-btn__unset c-pointer
          py6 mx-auto" href="https://stackoverflow.com/posts/67696209/timeline" data-shortcut="T" data-ks-title="timeline" data-controller="s-tooltip" data-s-tooltip-placement="right" aria-label="Timeline" aria-describedby="--stacks-s-tooltip-k557c5if"><svg aria-hidden="true" class="mln2 mr0 svg-icon iconHistory" width="19" height="18" viewBox="0 0 19 18"></svg></a></p>
      <div class="votecell post-layout--left">
        <div class="js-voting-container grid jc-center fd-column
          ai-stretch gs4 fc-black-200" data-post-id="67696209">
        </div>
      </div>
      <div class="s-prose js-post-body" itemprop="text">
        <p>I am feeling the dopamine high from finally finishing
          (mostly) my Reed Solomon implementation. I got decoding
          working correctly, with dataMatrix256 and QRCode, including
          corruption repair, within t/2 errors. It is VERY SLOOOW, way
          to slow to use yet. There are speedups possible in writing a
          plugin for the hot spots, which are on the decode side: GFPoly
          evaluateAt (40.1%), Decoder runEuclideanAlgorithm(38.5%),
          Decoder findErrorLocations(12.6%) and Decoder find
          ErrorMagnitudes(2.3%).</p>
        <p>It is written in Squeak, my favorite all-time language
          environment. I have used it for over 20 years. It is so
          beautiful! The rule of development is #GetItWorking,
          #GetItWorkingRight #GetItWorkingFast.</p>
        <p>If you are interested in checking out the code, go to <a href="http://squeak.org" rel="nofollow noreferrer">http://squeak.org</a>
          and grab squeak. Once you have it running, right click for the
          World Menu and select open...Monticello Browser. Add a new
          repository of type HTTP and enter the Cryptography repository.</p>
        <pre><code>MCHttpRepository
    location: '<a class="moz-txt-link-freetext" href="https://www.squeaksource.com/Cryptography">https://www.squeaksource.com/Cryptography</a>'
    user: 'squeak'
    password: 'squeak'
</code></pre>
        <p>Open a Workspace (World Menu -> Workspace) & run this
          code (paste into Workspace, select it and right click do it.):</p>
        <pre><code>Installer ss
    project: 'Cryptography';
    install: 'ProCrypto-1-1-1';
    install: 'ProCryptoTests-1-1-1'.
</code></pre>
        <p>Now you can open a Browser to look at the code (categories:
          CryptographyRSFEC & CryptographyRSFECTests) or open a
          TestRunner to test it (World Menu -> *).</p>
        <p>[1] Backblaze Open-sources Reed-Solomon Erasure Coding Source
          Code - <a class="moz-txt-link-freetext" href="https://www.backblaze.com/blog/reed-solomon/">https://www.backblaze.com/blog/reed-solomon/</a> <br/>
          [2] ZXing github
-https://github.com/zxing/zxing/tree/master/core/src/main/java/com/google/zxing/common/reedsolomon
          <br/>
        </p>
        <p>---</p>
        <p>From the comment on
          CryptographyRSErrorCorrection-rww.12.mcz...<br/>
        </p>
        <p>Fixed decoding. Some test pass green (DataMatrix &
          QRCodes) with encoding, decoding AND error correction all
          working. So the algorithms are working correctly.
          #GetItWorking, #GetItWorkingRight #GetItWorkingFast.
          AztecParam GF is still failing. <br/>
          <br/>
          Do not allow values equal to the max 256.  it passes tests but
          it is VERY SLOOOW. Profilie looks like, top tree branches,
          then summary. I may need to pluginize both GF and GFPoly. The
          costly methods are in decode, with GF Polynomial evaluation,
          the Euclidean Algorithm, the Chein's search
          (#findErrorLocations) and the Forney's formula
          (#findErrorMagnitudes). In the leaves, I can see that
          OrderedColection access is expensive.<br/>
          <br/>
          Top tree branches:<br/>
          [|    93.7% {136540ms} RSFECDecoder>>decode:twoS:<br/>
          [|      40.1% {58370ms} RSFECGenericGFPoly>>evaluateAt:<br/>
          [|      38.5% {56167ms}
          RSFECDecoder>>runEuclideanAlgorithmPoly:poly:rDegrees:<br/>
          [|      12.6% {18331ms}
          RSFECDecoder>>findErrorLocations:<br/>
          [|      2.3% {3423ms}
          RSFECDecoder>>findErrorMagnitudes:errorLlocations:<br/>
          [    5.4% {7842ms}
          RSFECReedSolomonTest>>corrupt:howMany:random:max:<br/>
          <br/>
          <br/>
          **Leaves**<br/>
          44.7% {65149ms} OrderedCollection>>at:<br/>
          12.8% {18619ms} SmallInteger(Number)>>positive<br/>
          8.0% {11589ms} RSFECGenericGF>>addOrSubtract:by:<br/>
          5.7% {8332ms} RSFECGenericGF>>multiply:by:<br/>
          5.0% {7352ms} RSFECGenericGFPoly>>evaluateAt:<br/>
          5.0% {7270ms} OrderedCollection>>at:put:<br/>
          4.6% {6727ms} False>>|<br/>
          1.7% {2537ms} RSFECGenericGFPoly>>addOrSubtractPoly:<br/>
          1.4% {1996ms}
OrderedCollection(SequenceableCollection)>>replaceFrom:to:with:startingAt:<br/>
          1.3% {1851ms}
          RSFECGenericGFPoly>>multiplyByMonomialDegree:coefficient:<br/>
          1.1% {1562ms} LargePositiveInteger(Integer)>>bitShift:<br/>
          <br/>
          **Memory**<br/>
              old            -16,777,216 bytes<br/>
              young        +15,072,816 bytes<br/>
              used        -1,704,400 bytes<br/>
              free        -15,072,816 bytes<br/>
          <br/>
          **GCs**<br/>
              full            2 totalling 171 ms (0.12% uptime), avg
          85.5 ms<br/>
              incr            4193 totalling 764 ms (0.5% uptime), avg
          0.2 ms<br/>
              tenures        6,093 (avg 0 GCs/tenure)<br/>
              root table    0 overflows<br/>
        </p>
        <p>-- <br/>
        </p>
      </div>
    </div>
    <div class="moz-signature">Kindly,
      Robert</div>


</body></html>