<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>A Byte of Coding</title>
    <description>Technical Content for Polyglot Software Engineers</description>
    
    <link>https://abyteofcoding.beehiiv.com/</link>
    <atom:link href="https://rss.beehiiv.com/feeds/5XHHXmkeMt.xml" rel="self"/>
    
    <lastBuildDate>Fri, 2 Oct 2026 01:54:43 +0000</lastBuildDate>
    <pubDate>Mon, 17 Jun 2024 19:30:49 +0000</pubDate>
    <atom:published>2024-06-17T19:30:49Z</atom:published>
    <atom:updated>2026-10-02T01:54:43Z</atom:updated>
    
      <category>Programming</category>
      <category>Software Engineering</category>
      <category>Technology</category>
    <copyright>Copyright 2026, A Byte of Coding</copyright>
    
    <image>
      <url>https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/publication/logo/c73f5b09-6d69-42dd-abc1-05846a4edd6e/logo-512.png</url>
      <title>A Byte of Coding</title>
      <link>https://abyteofcoding.beehiiv.com/</link>
    </image>
    
    <docs>https://www.rssboard.org/rss-specification</docs>
    <generator>beehiiv</generator>
    <language>en-us</language>
    <webMaster>support@beehiiv.com (Beehiiv Support)</webMaster>

      <item>
  <title>A Byte of Coding Issue 417</title>
  <description>A Byte of Coding Issue 417</description>
  <link>https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-417</link>
  <guid isPermaLink="true">https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-417</guid>
  <pubDate>Mon, 17 Jun 2024 16:00:00 +0000</pubDate>
  <atom:published>2024-06-17T16:00:00Z</atom:published>
    <dc:creator>Alex Zdanov</dc:creator>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><div class="image"><img alt="A Byte of Coding" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e2219c14-f29b-4388-ac9c-268f82e76033/abc-title.png?t=1707211516"/></div><p class="paragraph" style="text-align:left;"></p><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Hey-yo,</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">A little bit under the weather today. Anyway, here’s the issue.</span></p></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h3 class="heading" style="text-align:left;"><span style="color:#4abb72;"><b>Made possible through generous sponsorship by:</b></span></h3><div class="image"><a class="image__link" href="https://workos.com/?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5d245f33-30ac-4d05-b83c-204852ef2868/WorkOS_Logo_for_Byte.png?t=1710755300"/></a></div></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://mortoray.com/why-we-use-intermediate-representations/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-417" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Why do we use intermediate representations / languages?</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 16 June 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: compilers, optimization</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Edaqa Mortoray discusses the role and benefits of using intermediate representations (IRs) in programming, particularly in the contexts of code analysis, optimization, and translation. He explains how IRs serve as a bridge between high-level code and machine code, enhancing the efficiency and flexibility of software development processes.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Intermediate Representations (IRs) are used to bridge the gap between high-level source code and low-level machine code, aiding in translation and optimization.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">IRs facilitate code analysis by providing a uniform framework that supports various programming languages and tools.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">The use of IRs enhances the flexibility of software development, allowing developers to implement optimizations and transformations more efficiently.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://www.petekeen.net/esphome-server-in-python/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-417" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>ESPHome Server in Python</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 15 June 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: python, hardware, automation</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Pete Keen writes a</span><span style="color:#555555;"> ESPHome Protocol Server to drive the addressable LEDs on his house. </span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">There are “three ways to get arbitrary devices and entities to show up automatically in Home Assistant”: write a home assistant integration, using MQTT autodiscovery, or using ESPHome firmware.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">includes code</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">also includes information on deploying the code</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://workos.com/blog/the-developers-guide-to-sso?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>The Developer’s Guide to SSO</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 27 October 2023</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: sponsored, auth, web</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">WorkOS has published a guide on how to best integrate single sign-on (SSO) in your app.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">SSO is a common requirement when organizations first start selling to enterprises</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">​describes the general request flow for a user logging in with SSO</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">summarizes how to build SSO from scratch and how to use existing providers</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://cloudmark.github.io/Cats-Actors/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-417" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>A Logic Circuit Simulator with Cats-Actors</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 14 June 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: scala, functional</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Mark Galea dives into building a logic circuit simulator in scala. </span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">“Cats-Actors is a reimagining of the actor paradigm model married with the functional paradigm.”</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">The task is to “[develop] a logic circuit simulator that accounts for the internal delays of digital circuits, ensuring that all signals stabilize on each clock tick”</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">creates basic components like wires and logic gates, and combined them into more complex structures such as half adders, full adders, and demultiplexers</span></p></li></ul></div><p class="paragraph" style="text-align:left;"></p><h2 class="heading" style="text-align:center;" id="thanks-for-your-support"><span style="color:#4abb72;">Thanks for your Support!</span></h2><hr class="content_break"><p class="paragraph" style="text-align:center;">Big thanks to all of the Patreon supports and company sponsors. If you want to support the newsletter you can checkout the <a class="link" href="https://www.patreon.com/abyteofcoding?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-417" target="_blank" rel="noopener noreferrer nofollow">Patreon page</a>. It&#39;s not necessary, but it lets me know that I&#39;m doing a good job and that you&#39;re finding value in the content.</p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/powered-by?publication_logo=https%3A%2F%2Fmedia.beehiiv.com%2Fcdn-cgi%2Fimage%2Ffit%3Dscale-down%2Cformat%3Dauto%2Conerror%3Dredirect%2Cquality%3D80%2Fuploads%2Fpublication%2Flogo%2Fc73f5b09-6d69-42dd-abc1-05846a4edd6e%2Flogo-512.png%3Fv%3D1776376695&publication_name=A+Byte+of+Coding&utm_campaign=4db40c89-a773-4516-b163-d0fbfacd0ea1&utm_medium=post_rss&utm_source=a_byte_of_coding">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>A Byte of Coding Issue 416</title>
  <description>A Byte of Coding Issue 416</description>
  <link>https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-416</link>
  <guid isPermaLink="true">https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-416</guid>
  <pubDate>Thu, 13 Jun 2024 16:00:00 +0000</pubDate>
  <atom:published>2024-06-13T16:00:00Z</atom:published>
    <dc:creator>Alex Zdanov</dc:creator>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><div class="image"><img alt="A Byte of Coding" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e2219c14-f29b-4388-ac9c-268f82e76033/abc-title.png?t=1707211516"/></div><p class="paragraph" style="text-align:left;"></p><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Hey-yo,</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Man, crossfit is brutal. Anyway, here’s the issue.</span></p></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h3 class="heading" style="text-align:left;"><span style="color:#4abb72;"><b>Made possible through generous sponsorship by:</b></span></h3><div class="image"><a class="image__link" href="https://workos.com/?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5d245f33-30ac-4d05-b83c-204852ef2868/WorkOS_Logo_for_Byte.png?t=1710755300"/></a></div></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://daedtech.com/offering-client-trials-prototypes-vs-auditions/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-416" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Offering Client Trials: Prototypes vs Auditions</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 11 June 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: business, philosophy</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Erik Dietrich discusses the distinction between prototypes and auditions in the context of offering client trials, emphasizing the different risks each approach mitigates. He argues that for content creation, prototypes are more instructive for evaluating business engagement potential than auditions.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Prototypes vs. Auditions: Prototypes focus on measurable outcomes to de-risk achieving specific goals, while auditions are subjective evaluations to see if something is liked.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Prototyping Approach: Hit Subscribe views trials as prototypes to predict success at scale rather than subjective auditions that may not represent long-term value.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Audition Pitfalls: Auditions might be useful for evaluating content style but fail to reflect the effectiveness or scalability of content fulfillment processes.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://treyhunner.com/2024/06/a-beautiful-python-monstrosity/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-416" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>A beautiful Python monstrosity</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 8 June 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: python, testing</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Trey Hunner shares his innovative yet unconventional solution to handle flaky performance tests in Python by creating a decorator that attempts assertions multiple times, enhancing test reliability at the cost of standard decorator usage.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Flaky Performance Tests: Trey describes the difficulties in creating reliable performance tests due to variability and the complexity of efficient versus inefficient solutions.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">For-Try-Break-Except-If-Raise Pattern: A verbose and repetitive but initially effective pattern for handling flaky tests.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Attempt_n_times Decorator: A custom decorator that retries a function multiple times to improve the readability and reliability of performance tests, though it controversially calls the decorated function directly.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://workos.com/blog/what-is-mfa-and-why-does-your-app-need-it?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>What is MFA, and why does your app need it?</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 13 December 2023</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: sponsored, auth, web</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">WorkOS describes what multi-factor authentication (MFA) is and why it’s useful.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">“it’s an added layer of security to your app that makes it more difficult for hackers or impersonators to steal and use a user’s credentials”</span></p></li><li><p class="paragraph" style="text-align:left;">describe the different types of MFA</p></li><li><p class="paragraph" style="text-align:left;">summarizes the back-end flow for different types of MFAs</p><p class="paragraph" style="text-align:left;"></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://situational-awareness.ai/wp-content/uploads/2024/06/situationalawareness.pdf?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-416" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Situational Awareness</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 8 June 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: ai, machine learning, future</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Leopold Aschenbrenner explores the rapid progression from GPT-4 level AI to Artificial General Intelligence (AGI) and the anticipated leap to superintelligence by 2027. It discusses technological advancements, potential risks, and the immense economic and security challenges posed by superintelligence, emphasizing the need for robust security measures and strategic planning to ensure global safety.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Path to AGI: The evolution from GPT-4 to AGI by 2027 is seen as likely, driven by trends in computing power, algorithmic efficiencies, and qualitative advancements.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Intelligence Explosion: Post-AGI, the transition to superintelligence could be swift, compressing decades of AI advancements into a single year due to the recursive improvement capabilities of AGIs.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Security and Economic Challenges: The emergence of AGI and superintelligence poses significant security threats and demands massive investments in infrastructure and energy, along with the need for stringent measures to safeguard AGI technologies.</span></p></li></ul></div><h2 class="heading" style="text-align:center;" id="thanks-for-your-support"><span style="color:#4abb72;">Thanks for your Support!</span></h2><hr class="content_break"><p class="paragraph" style="text-align:center;">Big thanks to all of the Patreon supports and company sponsors. If you want to support the newsletter you can checkout the <a class="link" href="https://www.patreon.com/abyteofcoding?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-416" target="_blank" rel="noopener noreferrer nofollow">Patreon page</a>. It&#39;s not necessary, but it lets me know that I&#39;m doing a good job and that you&#39;re finding value in the content.</p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/powered-by?publication_logo=https%3A%2F%2Fmedia.beehiiv.com%2Fcdn-cgi%2Fimage%2Ffit%3Dscale-down%2Cformat%3Dauto%2Conerror%3Dredirect%2Cquality%3D80%2Fuploads%2Fpublication%2Flogo%2Fc73f5b09-6d69-42dd-abc1-05846a4edd6e%2Flogo-512.png%3Fv%3D1776376695&publication_name=A+Byte+of+Coding&utm_campaign=586dccd8-b40b-4b29-a141-f43323c56265&utm_medium=post_rss&utm_source=a_byte_of_coding">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>A Byte of Coding Issue 415</title>
  <description>A Byte of Coding Issue 415</description>
  <link>https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-415</link>
  <guid isPermaLink="true">https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-415</guid>
  <pubDate>Wed, 12 Jun 2024 13:00:00 +0000</pubDate>
  <atom:published>2024-06-12T13:00:00Z</atom:published>
    <dc:creator>Alex Zdanov</dc:creator>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><div class="image"><img alt="A Byte of Coding" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e2219c14-f29b-4388-ac9c-268f82e76033/abc-title.png?t=1707211516"/></div><p class="paragraph" style="text-align:left;"></p><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Hey-yo,</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Another day, another issue.</span></p></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h3 class="heading" style="text-align:left;"><span style="color:#4abb72;"><b>Made possible through generous sponsorship by:</b></span></h3><div class="image"><a class="image__link" href="https://workos.com/?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5d245f33-30ac-4d05-b83c-204852ef2868/WorkOS_Logo_for_Byte.png?t=1710755300"/></a></div></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://www.construction-physics.com/p/how-to-build-an-ai-data-center?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-415" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>How to Build an AI Data Center</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 10 June 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: ai, hardware</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Brian Potter explains the key aspects of constructing an AI data center, focusing on the unique challenges and design considerations compared to traditional data centers. He highlights the increased importance of power density, cooling efficiency, and network infrastructure for supporting AI workloads.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Power Density and Cooling: AI data centers require significantly higher power density and cooling capabilities than traditional data centers to support the energy demands of AI hardware.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Network Infrastructure: Enhanced network infrastructure is crucial for AI data centers to handle the immense data throughput and connectivity needs of AI systems.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Physical Space and Layout: The physical layout of AI data centers must accommodate the specific heat distribution and airflow requirements of AI equipment, leading to different design considerations compared to conventional data centers.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://www.baldurbjarnason.com/2024/react-electron-llms-labour-arbitrage/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-415" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>React, Electron, and LLMs have a common purpose: the labour arbitrage theory of dev tool popularity</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 2 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: frameworks, philosophy</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Baldur Bjarnason critiques the use of frameworks and standardization in the context of labor arbitrage, arguing that these technologies often prioritize cost savings over quality and performance. He suggests that the pursuit of cheaper development methods can lead to suboptimal software solutions.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Technological Trade-offs: Bjarnason discusses how the adoption of frameworks can lead to compromises in software quality and performance due to a focus on reducing development costs.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Labour Arbitrage: The article highlights the impact of labor arbitrage in software development, where companies leverage global labor markets and cost-cutting measures, often at the expense of product excellence.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Sustainable Practices: Bjarnason calls for more sustainable software development practices that balance cost with quality, advocating for thoughtful use of technology that aligns with long-term goals rather than short-term savings.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://workos.com/blog/the-developers-guide-to-user-management?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>The Developer&#39;s Guide to User Management</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 25 March 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: sponsored, auth</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">WorkOS published an extensive guide on building modern day user management, diving into various auth topics like SSO, MFA, and even user provisioning.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Session management is a foundational piece of user management but is complex to build. Devs need to consider cookie-based vs. JWT-based auth and how to persist login state information for users that are part of multiple orgs</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">At the 201 level, things like bot detection and org auth policies become more relevant</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">301 topics include invitation flows, email verification, and more</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://two-wrongs.com/failing-at-combinatorics-with-haskell?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-415" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Failing at Combinatorics with Haskell</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 10 June 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: haskell, math, functional</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Chris explores the challenges and solutions involved in solving a combinatorial math problem using Haskell. The article delves into postfix notation for simplifying arithmetic expressions and presents a detailed implementation for generating and evaluating these expressions in Haskell.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Postfix Notation Simplification: Chris uses postfix notation to simplify the handling of arithmetic expressions, avoiding the complexity of parentheses and leveraging the order of numbers and operators.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">State-based Emission: The article introduces a state-based approach to generate valid postfix expressions by tracking previously emitted digits and operators, ensuring the correct formation of arithmetic expressions.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Combinatorial Complexity: Chris demonstrates the combinatorial explosion when evaluating expressions over increasing digit ranges, illustrating the computational challenges and providing empirical runtime estimates for different digit intervals.</span></p></li></ul></div><p class="paragraph" style="text-align:left;"></p><h2 class="heading" style="text-align:center;" id="thanks-for-your-support"><span style="color:#4abb72;">Thanks for your Support!</span></h2><hr class="content_break"><p class="paragraph" style="text-align:center;">Big thanks to all of the Patreon supports and company sponsors. If you want to support the newsletter you can checkout the <a class="link" href="https://www.patreon.com/abyteofcoding?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-415" target="_blank" rel="noopener noreferrer nofollow">Patreon page</a>. It&#39;s not necessary, but it lets me know that I&#39;m doing a good job and that you&#39;re finding value in the content.</p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/powered-by?publication_logo=https%3A%2F%2Fmedia.beehiiv.com%2Fcdn-cgi%2Fimage%2Ffit%3Dscale-down%2Cformat%3Dauto%2Conerror%3Dredirect%2Cquality%3D80%2Fuploads%2Fpublication%2Flogo%2Fc73f5b09-6d69-42dd-abc1-05846a4edd6e%2Flogo-512.png%3Fv%3D1776376695&publication_name=A+Byte+of+Coding&utm_campaign=21cfbc82-97e3-4eb9-9ed0-a93f35a8741a&utm_medium=post_rss&utm_source=a_byte_of_coding">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>A Byte of Coding Issue 414</title>
  <description>A Byte of Coding Issue 414</description>
  <link>https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-414</link>
  <guid isPermaLink="true">https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-414</guid>
  <pubDate>Tue, 11 Jun 2024 13:00:00 +0000</pubDate>
  <atom:published>2024-06-11T13:00:00Z</atom:published>
    <dc:creator>Alex Zdanov</dc:creator>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><div class="image"><img alt="A Byte of Coding" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e2219c14-f29b-4388-ac9c-268f82e76033/abc-title.png?t=1707211516"/></div><p class="paragraph" style="text-align:left;"></p><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Hey-yo,</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Sorry for missing the last two issues. Traveling always messes with my schedule more than I expect it to. Currently in San Diego though, so if anyone is around and wants to meet up, let me know!</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Anyway, here’s the issue.</span></p></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h3 class="heading" style="text-align:left;"><span style="color:#4abb72;"><b>Made possible through generous sponsorship by:</b></span></h3><div class="image"><a class="image__link" href="https://workos.com/?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5d245f33-30ac-4d05-b83c-204852ef2868/WorkOS_Logo_for_Byte.png?t=1710755300"/></a></div></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://mortoray.com/finding-connected-cities-in-a-road-network/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-414" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Finding connected cities in a road network</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 9 June 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: algorithms, games</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Edaqa Mortoray details a specialized algorithm to track connections between locations in his game The Way to Hexet. The algorithm uses a flood-fill method to determine connected components by processing placed roads and updating network states dynamically.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Uses a matrix for tiles, a list for cities, and another for roads for map structure.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Flood-Fill Algorithm use to initialize and update network states for cells and cities based on road placements.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Iterates over roads rather than cells and uses bit-masked values for quick connection checks.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://sebastianraschka.com/blog/2024/llm-research-insights-instruction-copy.html?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-414" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>LLM Research Insights: Instruction Masking and New LoRA Finetuning Experiments?</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 2 June 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: ai, machine learning, research</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Sebastian Raschka reviews recent AI research on instruction masking in finetuning and LoRA (Low-Rank Adaptation). Not masking instructions can enhance model performance, while LoRA balances learning efficiency and memory preservation, particularly in knowledge-intensive domains.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Not masking instructions improves finetuning, depending on dataset size and response length.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">LoRA: Less effective in learning new knowledge but preserves original capabilities better than full finetuning.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">MoRA: Introduces high-rank updates, improving memory tasks but trailing in instruction finetuning.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://workos.com/blog/a-guide-to-organization-modeling?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>A guide to organization modeling</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 16 February 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: sponsored, auth, architecture</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">WorkOS has published a guide that “surfaces complexities and implementation details” for supporting user-team-organization relationships in B2B auth.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">“if you ever want to sell to an enterprise your backend needs to be ready to support complex models of users and teams”</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">looks at the different ways you can implement the database tables for modeling the organization</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">most of the complexity comes from users that need to be a part of multiple organizations</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://blog.janissary.xyz/posts/hiring-functional-programming?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-414" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>The Functional Programming Hiring Problem</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 9 June 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: functional, hiring, philosophy</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Noah Snelson </span><span style="color:#555555;"> addresses the hiring challenges associated with using niche functional programming languages, using a hypothetical language &quot;Gooby&quot; as a stand-in. It argues that while hiring Gooby engineers can bring in highly passionate and skilled individuals, it also attracts a problematic focus on the language itself rather than the pragmatic needs of the company.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Hiring for niche functional programming languages like Gooby often yields three main types of candidates: résumé-spammers, enthusiastic but inexperienced undergraduates, and senior engineers deeply invested in the language for its own sake.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Engineers with a strong focus on niche languages can become too engrossed in the language&#39;s complexities, potentially neglecting practical and more critical aspects of software development.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Companies should avoid language-specific job boards and emphasize flexibility and pragmatism in their hiring processes to mitigate the risks of hiring language zealots who might introduce technical debt and disrupt engineering culture.</span></p></li></ul></div><h2 class="heading" style="text-align:center;" id="thanks-for-your-support"><span style="color:#4abb72;">Thanks for your Support!</span></h2><hr class="content_break"><p class="paragraph" style="text-align:center;">Big thanks to all of the Patreon supports and company sponsors. If you want to support the newsletter you can checkout the <a class="link" href="https://www.patreon.com/abyteofcoding?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-414" target="_blank" rel="noopener noreferrer nofollow">Patreon page</a>. It&#39;s not necessary, but it lets me know that I&#39;m doing a good job and that you&#39;re finding value in the content.</p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/powered-by?publication_logo=https%3A%2F%2Fmedia.beehiiv.com%2Fcdn-cgi%2Fimage%2Ffit%3Dscale-down%2Cformat%3Dauto%2Conerror%3Dredirect%2Cquality%3D80%2Fuploads%2Fpublication%2Flogo%2Fc73f5b09-6d69-42dd-abc1-05846a4edd6e%2Flogo-512.png%3Fv%3D1776376695&publication_name=A+Byte+of+Coding&utm_campaign=1ee21420-0329-4dbe-bb77-ba449b3fe8b4&utm_medium=post_rss&utm_source=a_byte_of_coding">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>A Byte of Coding Issue 413</title>
  <description>A Byte of Coding Issue 413</description>
  <link>https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-413</link>
  <guid isPermaLink="true">https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-413</guid>
  <pubDate>Wed, 05 Jun 2024 09:00:00 +0000</pubDate>
  <atom:published>2024-06-05T09:00:00Z</atom:published>
    <dc:creator>Alex Zdanov</dc:creator>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><div class="image"><img alt="A Byte of Coding" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e2219c14-f29b-4388-ac9c-268f82e76033/abc-title.png?t=1707211516"/></div><p class="paragraph" style="text-align:left;"></p><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Hey-yo,</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Here’s the issue.</span></p></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h3 class="heading" style="text-align:left;"><span style="color:#4abb72;"><b>Made possible through generous sponsorship by:</b></span></h3><div class="image"><a class="image__link" href="https://workos.com/?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5d245f33-30ac-4d05-b83c-204852ef2868/WorkOS_Logo_for_Byte.png?t=1710755300"/></a></div></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://lucumr.pocoo.org/2024/6/5/node-timeout/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-413" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Your Node is Leaking Memory? setTimeout Could be the Reason</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 5 June 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: javascript</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Armin Ronacher explains how the setTimeout function in Node.js can cause memory leaks due to the retention of Timeout objects and AsyncLocalStorage states. He offers a workaround to manage these leaks until a bug in Node.js is resolved.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Timeout objects in Node.js hold references that prevent garbage collection, leading to memory leaks.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">AsyncLocalStorage attaches state to timeouts, exacerbating the issue.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Using numeric IDs instead of Timeout objects can mitigate the problem, pending a Node.js bug fix.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://domm.plix.at/perl/2024_06_chopping_utf8.html?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-413" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Chopping UTF-8</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 4 June 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: perl</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Thomas Klausner explains how to chop a string to a specific byte length in Perl, dealing with UTF-8 characters. He highlights challenges in handling Unicode within byte-limited formats like USMARC.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">UTF-8 uses variable-length encoding, leading to differences between byte and character lengths.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Perl’s bytes::length() and bytes::substr() can manage byte-specific string operations, but require care with UTF-8 encoding.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Encode::FB_QUIET can be used to avoid invalid byte sequences when truncating UTF-8 strings.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://workos.com/blog/the-developers-guide-to-directory-sync-scim?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>The Developer’s Guide to Directory Sync / SCIM</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 25 January 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: sponsored, auth</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">WorkOS discusses what Directory Sync and System for Cross Identity Management are, and why they’re necessary for large organizations.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Directory sync “automates the lifecycle management process by providing a single source of truth for identity”</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">“SCIM is an open source protocol for implementing Directory Sync”</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Includes comparison to just-in-time provisioning</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://www.andreinc.net/2024/04/24/from-the-circle-to-epicycles?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-413" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>From the Circle to Epicycles (Part 1) - An animated introduction to Fourier Series</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 24 April 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: math</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Andrei Ciobanu introduces Fourier Series with animations, starting with trigonometric basics and leading up to complex sinusoids and epicycles. The series aims to make Fourier mathematics more accessible and engaging through visual aids and step-by-step explanations.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Trigonometric functions like sine and cosine are foundational to understanding Fourier Series.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Euler’s identity and formula connect exponential functions to trigonometric functions.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Fourier Series decompose periodic functions into sums of sinusoids, enabling analysis and reconstruction of complex waveforms.</span></p></li></ul></div><h2 class="heading" style="text-align:center;" id="thanks-for-your-support"><span style="color:#4abb72;">Thanks for your Support!</span></h2><hr class="content_break"><p class="paragraph" style="text-align:center;">Big thanks to all of the Patreon supports and company sponsors. If you want to support the newsletter you can checkout the <a class="link" href="https://www.patreon.com/abyteofcoding?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-413" target="_blank" rel="noopener noreferrer nofollow">Patreon page</a>. It&#39;s not necessary, but it lets me know that I&#39;m doing a good job and that you&#39;re finding value in the content.<a class="link" href="https://app.beehiiv.com/posts/e400dcfb-76a0-49e8-a8c3-5303aaf042e7/analytics?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-413" target="_blank" rel="noopener noreferrer nofollow">A Byte of Coding Issue 412</a></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/powered-by?publication_logo=https%3A%2F%2Fmedia.beehiiv.com%2Fcdn-cgi%2Fimage%2Ffit%3Dscale-down%2Cformat%3Dauto%2Conerror%3Dredirect%2Cquality%3D80%2Fuploads%2Fpublication%2Flogo%2Fc73f5b09-6d69-42dd-abc1-05846a4edd6e%2Flogo-512.png%3Fv%3D1776376695&publication_name=A+Byte+of+Coding&utm_campaign=d46aece7-11c6-4312-9a2f-e3bedd5d3e05&utm_medium=post_rss&utm_source=a_byte_of_coding">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>A Byte of Coding Issue 412</title>
  <description>A Byte of Coding Issue 412</description>
  <link>https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-412</link>
  <guid isPermaLink="true">https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-412</guid>
  <pubDate>Tue, 04 Jun 2024 11:03:34 +0000</pubDate>
  <atom:published>2024-06-04T11:03:34Z</atom:published>
    <dc:creator>Alex Zdanov</dc:creator>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><div class="image"><img alt="A Byte of Coding" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e2219c14-f29b-4388-ac9c-268f82e76033/abc-title.png?t=1707211516"/></div><p class="paragraph" style="text-align:left;"></p><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Hi hi hi,</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Whenever I see a while loop in a PR, I instantly leave a comment telling the author to change it to a for loop. I’ve had too many cases of seemingly harmless while loops turning into infinite loops. Of course there are exceptions, but I have yet to run into one. What do you think? Are there any coding constructs you always avoid?</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Anyway, here’s the issue.</span></p></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h3 class="heading" style="text-align:left;"><span style="color:#4abb72;"><b>Made possible through generous sponsorship by:</b></span></h3><div class="image"><a class="image__link" href="https://workos.com/?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5d245f33-30ac-4d05-b83c-204852ef2868/WorkOS_Logo_for_Byte.png?t=1710755300"/></a></div></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://ayende.com/blog/201153-B/building-a-serverless-secured-dead-drop?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-412" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Building a serverless secured dead drop</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 30 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: architecture, serverless</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Oren Eini details the design and implementation of a serverless secured dead drop system for anonymous and secure communication. The system uses serverless functions, encryption, and Tor to protect both the contents and the identities of the communicating parties.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Utilizes a serverless architecture to minimize data aggregation and enhance security.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Employs Tor for anonymous communication and SealedBox for encryption.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Splits the upload process into multiple stages to obscure sender and receiver identities.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://www.scattered-thoughts.net/writing/ruminating-about-mutable-value-semantics/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-412" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Ruminating about mutable value semantics</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 3 June 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: zest, language design</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Jamie Brandon explores mutable value semantics in programming languages, aiming to balance efficient imperative language features with data value treatment. He discusses methods for managing mutable references without compromising serialization and code integrity.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Implicit copies, dynamic alias tracking, and static alias tracking are key methods for handling mutable value semantics.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Enforcing aliasing rules prevents observable mutations and improves code reliability.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Static alias tracking, used in languages like Hylo, avoids refcounting overhead but requires more annotations from developers.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://workos.com/blog/sso-acronyms-demystified?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Single Sign-On: Acronyms Demystified</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 1 June 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: sponsored, auth</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">WorkOS explains all the auth-related protocols and provides additional resources (for further reading) for OAuth, OIDC, and SAML.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">“OAuth is not an authentication protocol”</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">OIDC is built on top of OAuth</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">SAML is used for federated authentication</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://jrsinclair.com/articles/2023/how-to-consume-a-paginated-api-using-javascript-async-generators/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-412" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>How to consume a paginated API using JavaScript async generators</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 26 June 2023</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: javascript</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">James Sinclair demonstrates how to use JavaScript async generators to handle paginated APIs efficiently. He provides a detailed guide on refactoring code for clearer, more maintainable solutions.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Async generators can simplify handling paginated API data by yielding results as soon as they arrive.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Filtering and mapping functions can be used to process data without excessive memory consumption.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">The approach makes code easier to read, test, and maintain by separating concerns and hiding implementation details.</span></p></li></ul></div><h2 class="heading" style="text-align:center;" id="thanks-for-your-support"><span style="color:#4abb72;">Thanks for your Support!</span></h2><hr class="content_break"><p class="paragraph" style="text-align:center;">Big thanks to all of the Patreon supports and company sponsors. If you want to support the newsletter you can checkout the <a class="link" href="https://www.patreon.com/abyteofcoding?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-412" target="_blank" rel="noopener noreferrer nofollow">Patreon page</a>. It&#39;s not necessary, but it lets me know that I&#39;m doing a good job and that you&#39;re finding value in the content.<a class="link" href="https://app.beehiiv.com/posts/7cbab3b6-6ca0-4d44-95a4-38048c9b527a/analytics?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-412" target="_blank" rel="noopener noreferrer nofollow">A Byte of Coding Issue 411</a></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/powered-by?publication_logo=https%3A%2F%2Fmedia.beehiiv.com%2Fcdn-cgi%2Fimage%2Ffit%3Dscale-down%2Cformat%3Dauto%2Conerror%3Dredirect%2Cquality%3D80%2Fuploads%2Fpublication%2Flogo%2Fc73f5b09-6d69-42dd-abc1-05846a4edd6e%2Flogo-512.png%3Fv%3D1776376695&publication_name=A+Byte+of+Coding&utm_campaign=e400dcfb-76a0-49e8-a8c3-5303aaf042e7&utm_medium=post_rss&utm_source=a_byte_of_coding">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>A Byte of Coding Issue 411</title>
  <description>A Byte of Coding Issue 411</description>
  <link>https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-411</link>
  <guid isPermaLink="true">https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-411</guid>
  <pubDate>Mon, 03 Jun 2024 11:44:30 +0000</pubDate>
  <atom:published>2024-06-03T11:44:30Z</atom:published>
    <dc:creator>Alex Zdanov</dc:creator>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><div class="image"><img alt="A Byte of Coding" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e2219c14-f29b-4388-ac9c-268f82e76033/abc-title.png?t=1707211516"/></div><p class="paragraph" style="text-align:left;"></p><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Hey-yo,</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Hope you all had a nice weekend. I spent my Saturday fixing the hinges that keep my laptop screen attached to its body. I’ve had this problem for around 2 years now (I’ve been using a clothes peg to keep the monitor from falling apart), but it came to a climax about a month ago when a slightly too aggressive shift of the screen caused the plastic frame to snap, resulting in me having to use two pegs to keep it from falling off. Fortunately I found replacement parts for the plastic frame and back panel online. Below you can see a picture of the laptop mid repair. I also had to pop off the bottom side of the laptop and expose the motherboard to remove the old hinges. Unfortunately the parts I ordered didn’t come with the metal grounding strip (you can see it at the top of the red panel that is above the keyboard), so I had to carefully remove that and stick it onto the new back panel (red rectangle in the top right of the picture). Overall it was a pretty easy repair. On one hand, I appreciate how cheap and easy it is to find the plastic replacement parts, but on the other hand, all of the mechanical issues I’ve had with my laptop have been because of plastic bits snapping and the only solution is to order new parts.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Anyway, here’s the issue.</span></p><div class="image"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a885b10c-0857-4de8-a57c-e1f4aceebcfe/mid-repair.jpeg?t=1717413595"/></div><p class="paragraph" style="text-align:left;"><span style="color:#555555;"> </span></p></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h3 class="heading" style="text-align:left;"><span style="color:#4abb72;"><b>Made possible through generous sponsorship by:</b></span></h3><div class="image"><a class="image__link" href="https://workos.com/?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5d245f33-30ac-4d05-b83c-204852ef2868/WorkOS_Logo_for_Byte.png?t=1710755300"/></a></div></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://applied-llms.org/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-411" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>What We’ve Learned From A Year of Building with LLMs</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 8 June 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: llm, ai, product development</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Eugene Yan, Bryan Bischof, Charles Frye, Hamel Husain, Jason Liu, and Shreya Shankar share their insights from a year of building with large language models (LLMs). They discuss practical tips for prompting, optimizing workflows, and incorporating LLMs into products effectively.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Emphasize fundamental prompting techniques like n-shot and chain-of-thought to improve performance.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Use retrieval-augmented generation (RAG) to ground models and enhance outputs.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Optimize workflows with multi-turn flows, deterministic plans, and caching to improve reliability and efficiency.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://vhyrro.github.io/posts/effect-systems/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-411" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Moving Beyond Type Systems</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 31 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: functional, types</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Vhyrro discusses the concept of static effect systems in programming languages, proposing them as a way to manage side effects more effectively than traditional type systems. They suggest this approach could benefit future programming language design.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Static effect systems can enforce control over side effects similarly to Rust&#39;s borrow checker.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Effects should be explicitly annotated in code, improving developer awareness and code reliability.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Separating type systems and effect systems allows parallel analysis during compilation, potentially speeding up the process.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://workos.com/blog/guide-to-one-time-passwords-otps?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>A Developer’s Guide to One-Time Passwords (OTPs)</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 28 June 2021</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: sponsored, auth, web</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">WorkOS has published an extensive guide on how one-time passwords work, their benefits, and implementation details.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">“OTPs come in three different forms, and each form works differently: time-synchronized OTPs, lockstep synchronized OTPs, or transmission-based OTPs”</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">OTPs are more secure than static passwords, but can create a frustrating user experience due to potential delays</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Pros and cons for OTPs</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://www.infoq.com/articles/rig-data-consistent-microservices/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-411" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Introducing the RIG Model - the Puzzle of Designing Guaranteed Data-Consistent Microservice Systems</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 30 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: architecture, microservices, rig</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Kaj Bromose and Lars Lindegaard Mikkelsen introduce the RIG model for designing guaranteed data-consistent microservices systems, using a gamified tool to categorize microservices behavior. This approach addresses the complexities of achieving data consistency in microservice architectures.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">The RIG model categorizes microservices into Reversible, Irreversible, and Guaranteed to manage data consistency.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">A gamified tool helps teams design sagas that comply with RIG rules, ensuring eventual consistency.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">The RIG system design flow model integrates business requirements into microservices architecture, facilitating consistent and reliable system design.</span></p></li></ul></div><h2 class="heading" style="text-align:center;" id="thanks-for-your-support"><span style="color:#4abb72;">Thanks for your Support!</span></h2><hr class="content_break"><p class="paragraph" style="text-align:center;">Big thanks to all of the Patreon supports and company sponsors. If you want to support the newsletter you can checkout the <a class="link" href="https://www.patreon.com/abyteofcoding?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-411" target="_blank" rel="noopener noreferrer nofollow">Patreon page</a>. It&#39;s not necessary, but it lets me know that I&#39;m doing a good job and that you&#39;re finding value in the content.</p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/powered-by?publication_logo=https%3A%2F%2Fmedia.beehiiv.com%2Fcdn-cgi%2Fimage%2Ffit%3Dscale-down%2Cformat%3Dauto%2Conerror%3Dredirect%2Cquality%3D80%2Fuploads%2Fpublication%2Flogo%2Fc73f5b09-6d69-42dd-abc1-05846a4edd6e%2Flogo-512.png%3Fv%3D1776376695&publication_name=A+Byte+of+Coding&utm_campaign=7cbab3b6-6ca0-4d44-95a4-38048c9b527a&utm_medium=post_rss&utm_source=a_byte_of_coding">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>A Byte of Coding Issue 410</title>
  <description>A Byte of Coding Issue 410</description>
  <link>https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-410</link>
  <guid isPermaLink="true">https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-410</guid>
  <pubDate>Wed, 29 May 2024 09:00:00 +0000</pubDate>
  <atom:published>2024-05-29T09:00:00Z</atom:published>
    <dc:creator>Alex Zdanov</dc:creator>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><div class="image"><img alt="A Byte of Coding" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e2219c14-f29b-4388-ac9c-268f82e76033/abc-title.png?t=1707211516"/></div><p class="paragraph" style="text-align:left;"></p><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Hi,</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">I missed yesterday’s issue because I had a late start and honestly didn’t find anything I thought was worth sharing.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Unrelated to programming, but very much on the data side of things, we launched our </span><span style="color:#555555;"><a class="link" href="https://findenergy.com/use-our-data/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-410" target="_blank" rel="noopener noreferrer nofollow">use our data</a></span><span style="color:#555555;"> page for FindEnergy yesterday. We publish a bunch of electricity rate and production data on a monthly basis, as well as a bunch of other data and launching live power outage monitoring as well. If you think your company would be interested in purchasing this data for anything, let me know! There are lots of useful examples of applications on the page I linked.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Anyway, here’s the issue.</span></p></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h3 class="heading" style="text-align:left;"><span style="color:#4abb72;"><b>Made possible through generous sponsorship by:</b></span></h3><div class="image"><a class="image__link" href="https://workos.com/?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5d245f33-30ac-4d05-b83c-204852ef2868/WorkOS_Logo_for_Byte.png?t=1710755300"/></a></div></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://www.influxdata.com/blog/using-parquets-bloom-filters/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-410" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Using Parquet’s Bloom Filters</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 28 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: data processing, data, parquet</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Trevor Hilton discusses the use of Bloom filters in Parquet files to improve query performance, especially for high-cardinality data. The article details the effectiveness and storage impact of Bloom filters with various parameters.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Moderate Bloom filter settings (FPP 0.01, NDV 1,000) optimize pruning efficiency, reducing query time significantly.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Bloom filters added storage costs ranging from 2 KB to 8 KB per column per row group.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Fine-tuning Bloom filter parameters to match data cardinality resulted in high storage penalties without significant pruning benefits.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://jviide.iki.fi/http-redirects?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-410" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Your API Shouldn&#39;t Redirect HTTP to HTTPS</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 23 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: api, http, infosec, architecture</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Juhani Eronen argues against redirecting HTTP API requests to HTTPS, advocating for a fail-fast approach to improve security. The post highlights the risks of silent redirects and suggests disabling HTTP interfaces or returning clear error responses.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Redirecting HTTP API calls to HTTPS can expose API keys in plaintext.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Fail-fast by disabling HTTP or returning errors to make security issues visible early.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Automatic revocation of API keys sent over HTTP enhances security.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://ipullrank.com/google-algo-leak?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-410" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Secrets from the Algorithm: Google Search’s Internal Engineering Documentation Has Leaked</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 27 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: seo, architecture</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Not super technical, but we depend on SEO a good bit and I found it an interesting read. Mike King analyzes leaked Google internal documentation revealing insights into Google Search&#39;s ranking systems and data storage. He discusses the implications of these findings on SEO practices and Google&#39;s transparency.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">The leak exposes over 14,000 attributes and 2,596 modules used by Google Search.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Contrary to Google&#39;s public statements, the documentation shows the use of &quot;siteAuthority&quot; and click-based metrics in rankings.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">The documentation reveals measures for sandboxing new sites and utilizing Chrome data for ranking.</span></p></li></ul></div><h2 class="heading" style="text-align:center;" id="thanks-for-your-support"><span style="color:#4abb72;">Thanks for your Support!</span></h2><hr class="content_break"><p class="paragraph" style="text-align:center;">Big thanks to all of the Patreon supports and company sponsors. If you want to support the newsletter you can checkout the <a class="link" href="https://www.patreon.com/abyteofcoding?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-410" target="_blank" rel="noopener noreferrer nofollow">Patreon page</a>. It&#39;s not necessary, but it lets me know that I&#39;m doing a good job and that you&#39;re finding value in the content.</p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/powered-by?publication_logo=https%3A%2F%2Fmedia.beehiiv.com%2Fcdn-cgi%2Fimage%2Ffit%3Dscale-down%2Cformat%3Dauto%2Conerror%3Dredirect%2Cquality%3D80%2Fuploads%2Fpublication%2Flogo%2Fc73f5b09-6d69-42dd-abc1-05846a4edd6e%2Flogo-512.png%3Fv%3D1776376695&publication_name=A+Byte+of+Coding&utm_campaign=c01dbe30-0c03-4098-8af7-18e553f6b8dc&utm_medium=post_rss&utm_source=a_byte_of_coding">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>A Byte of Coding Issue 409</title>
  <description>A Byte of Coding Issue 409</description>
  <link>https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-409</link>
  <guid isPermaLink="true">https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-409</guid>
  <pubDate>Mon, 27 May 2024 09:00:00 +0000</pubDate>
  <atom:published>2024-05-27T09:00:00Z</atom:published>
    <dc:creator>Alex Zdanov</dc:creator>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><div class="image"><img alt="A Byte of Coding" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e2219c14-f29b-4388-ac9c-268f82e76033/abc-title.png?t=1707211516"/></div><p class="paragraph" style="text-align:left;"></p><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Hey-yo,</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Hope you all had a nice weekend. Here’s the issue.</span></p></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h3 class="heading" style="text-align:left;"><span style="color:#4abb72;"><b>Made possible through generous sponsorship by:</b></span></h3><div class="image"><a class="image__link" href="https://workos.com/?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5d245f33-30ac-4d05-b83c-204852ef2868/WorkOS_Logo_for_Byte.png?t=1710755300"/></a></div></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://vadimkravcenko.com/shorts/stand-out-and-dare-to-disagree/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-409" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Stand Out and Dare to Disagree</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 16 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: philosophy</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Vadim Kravcenko emphasizes the importance of being opinionated and polarizing (based on reason) in the tech industry to achieve long-term success. Agreeability and risk aversion may hinder professional growth. You definitely shouldn’t be controversial for the hell of it, but having an opinion on the correct way forward and sharing it when you think the development process is going the wrong way is definitely a big plus for any developer I hire.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">To avoid mediocrity, developers should express strong, fact-based opinions.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Success often requires making decisions that may alienate some users but resonate deeply with others.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Handling criticism effectively is crucial for refining and validating one&#39;s ideas.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://fwsgonzo.medium.com/an-introduction-to-low-latency-scripting-with-libriscv-ad0619edab40?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-409" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>An Introduction to Low-Latency Scripting for Game Engines</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 23 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: c++, games</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">fwsgonzo introduces the use of libriscv for low-latency scripting, highlighting its effectiveness in game engines and its capability to execute fast, safe function calls. C++ is showcased as a viable scripting language due to its efficiency and familiarity in game development contexts.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">libriscv is a specialized RISC-V emulator focused on achieving low latency in function calls.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Using C++ for scripting in game engines allows for consistency and efficiency, leveraging modern idiomatic practices.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">The article provides insights on integrating libriscv into projects using CMake and other tools.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://workos.com/blog/the-developers-guide-to-sso?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>The Developer’s Guide to SSO</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 27 October 2023</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: sponsored, auth, web</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">WorkOS has published a guide on how to best integrate single sign-on (SSO) in your app.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">SSO is a common requirement when organizations first start selling to enterprises</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">​describes the general request flow for a user logging in with SSO</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">summarizes how to build SSO from scratch and how to use existing providers</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://nullprogram.com/blog/2024/05/25/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-409" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Arenas and the almighty concatenation operator</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 25 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: c++, data structures</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Chris Wellons delves into a technique for efficient concatenation within an arena-based memory allocation paradigm, offering a versatile method for dynamic growth of various data types. This method leverages concise C++ templates for performance and simplicity.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Introduces a 9-line core function for concatenating data types within an arena.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Highlights the efficiency of this approach for handling strings and other data structures.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Demonstrates the extensibility and practical applications, such as constructing file paths and managing dynamic arrays.</span></p></li></ul></div><p class="paragraph" style="text-align:left;"></p><h2 class="heading" style="text-align:center;" id="thanks-for-your-support"><span style="color:#4abb72;">Thanks for your Support!</span></h2><hr class="content_break"><p class="paragraph" style="text-align:center;">Big thanks to all of the Patreon supports and company sponsors. If you want to support the newsletter you can checkout the <a class="link" href="https://www.patreon.com/abyteofcoding?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-409" target="_blank" rel="noopener noreferrer nofollow">Patreon page</a>. It&#39;s not necessary, but it lets me know that I&#39;m doing a good job and that you&#39;re finding value in the content.</p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/powered-by?publication_logo=https%3A%2F%2Fmedia.beehiiv.com%2Fcdn-cgi%2Fimage%2Ffit%3Dscale-down%2Cformat%3Dauto%2Conerror%3Dredirect%2Cquality%3D80%2Fuploads%2Fpublication%2Flogo%2Fc73f5b09-6d69-42dd-abc1-05846a4edd6e%2Flogo-512.png%3Fv%3D1776376695&publication_name=A+Byte+of+Coding&utm_campaign=b8c355f3-dcd0-4885-bea1-3cde08ed8437&utm_medium=post_rss&utm_source=a_byte_of_coding">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>A Byte of Coding Issue 408</title>
  <description>A Byte of Coding Issue 408</description>
  <link>https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-408</link>
  <guid isPermaLink="true">https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-408</guid>
  <pubDate>Thu, 23 May 2024 09:00:00 +0000</pubDate>
  <atom:published>2024-05-23T09:00:00Z</atom:published>
    <dc:creator>Alex Zdanov</dc:creator>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><div class="image"><img alt="A Byte of Coding" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e2219c14-f29b-4388-ac9c-268f82e76033/abc-title.png?t=1707211516"/></div><p class="paragraph" style="text-align:left;"></p><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Hey-yo,</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">I thought I was busy before, but managing 8 people and trying to implement new features has taken it to a new level.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">I’m going to be in San Diego mid-June. If anyone is around and wants to meet up, let me know!</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Anyway, here’s the issue.</span></p></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h3 class="heading" style="text-align:left;"><span style="color:#4abb72;"><b>Made possible through generous sponsorship by:</b></span></h3><div class="image"><a class="image__link" href="https://workos.com/?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5d245f33-30ac-4d05-b83c-204852ef2868/WorkOS_Logo_for_Byte.png?t=1710755300"/></a></div></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://kerkour.com/webassembly-wasi-preview2?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-408" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>WebAssembly: A promising technology that is quietly being sabotaged</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 22 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: wasm, web</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Sylvain Kerkour discusses how rust developers might be ruining webassembly (wasm).</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Wasm </span><span style="color:#555555;">is a technology designed to create a universal executable format that runs on various platforms.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Contends that the introduction of concepts like WIT and the push for async programming are unnecessary and have made WebAssembly difficult to use.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">While WebAssembly has great potential, especially in web browsers, its server-side implementation risks failure due to increasing complexity.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://aartaka.me/cl-is-lots?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-408" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Common Lisp Is Not a Single Language, It Is Lots</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 23 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: common lisp</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Artyom Bologov explains that Common Lisp is not a single language but a collection of many languages. This includes core Scheme-y Lisp, the Common Lisp Object System (CLOS), generics, the loop macro, and others.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Common Lisp incorporates multiple sub-languages, each with distinct features and programming styles.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Examples include a Scheme-like core, the object-oriented CLOS, and generics.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">The loop macro and format strings are powerful, language-like constructs within Common Lisp.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://workos.com/blog/the-developers-guide-to-domain-verification?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>The Developer&#39;s Guide to Domain Verification</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 15 November 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: sponsored, networking, auth, dns</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">WorkOS’ blog “examines best practices to consider when building in-house as well as a simple alternative” that they provide when it comes to domain verification.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">“Domain verification is a crucial security measure for SaaS providers, ensuring that services are securely delivered to the legitimate owners of a domain”</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">“Don’t place TXT records on the root domain”</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">WorkOS offers a simple API you can integrate with to do domain verification</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://www.arp242.net/safeterm.html?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-408" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Safe terminal escape codes</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 22 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: terminal, graphics</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Martin Tournoij discusses the relevance and application of terminal escape codes in modern software terminal emulators. He highlights the importance of terminfo for advanced operations and provides a list of universally supported escape sequences.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Terminal escape codes are essential for text styling and cursor operations.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Compatibility varies, with terminfo being crucial for advanced functions.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Modern terminal emulators widely support ANSI escape codes for text and color formatting.</span></p></li></ul></div><h2 class="heading" style="text-align:center;" id="thanks-for-your-support"><span style="color:#4abb72;">Thanks for your Support!</span></h2><hr class="content_break"><p class="paragraph" style="text-align:center;">Big thanks to all of the Patreon supports and company sponsors. If you want to support the newsletter you can checkout the <a class="link" href="https://www.patreon.com/abyteofcoding?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-408" target="_blank" rel="noopener noreferrer nofollow">Patreon page</a>. It&#39;s not necessary, but it lets me know that I&#39;m doing a good job and that you&#39;re finding value in the content.</p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/powered-by?publication_logo=https%3A%2F%2Fmedia.beehiiv.com%2Fcdn-cgi%2Fimage%2Ffit%3Dscale-down%2Cformat%3Dauto%2Conerror%3Dredirect%2Cquality%3D80%2Fuploads%2Fpublication%2Flogo%2Fc73f5b09-6d69-42dd-abc1-05846a4edd6e%2Flogo-512.png%3Fv%3D1776376695&publication_name=A+Byte+of+Coding&utm_campaign=4e42147d-3513-4f6c-9995-e4cc5c1dc18d&utm_medium=post_rss&utm_source=a_byte_of_coding">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>A Byte of Coding Issue 407</title>
  <description>A Byte of Coding Issue 407</description>
  <link>https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-407</link>
  <guid isPermaLink="true">https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-407</guid>
  <pubDate>Wed, 22 May 2024 09:00:00 +0000</pubDate>
  <atom:published>2024-05-22T09:00:00Z</atom:published>
    <dc:creator>Alex Zdanov</dc:creator>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><div class="image"><img alt="A Byte of Coding" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e2219c14-f29b-4388-ac9c-268f82e76033/abc-title.png?t=1707211516"/></div><p class="paragraph" style="text-align:left;"></p><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Hiya,</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">I finally ordered some spare parts to fix my laptop lid. The plastic casing on the left side broke years ago and for some reason, it took the same thing happening on the other side to finally motivate me to order what I need to fix it. You can see my high-tech temporary fix in the image below (the two clips keep the screen from falling off). The funny thing is I’ve actually been traveling around with the green clip on the left side for 2-3 years now. I could’ve ordered the parts any time before now from China and paid half the price, but I have to go to a conference in several weeks so I paid double to get something shipped quickly. Sigh. I don’t think I’m necessarily stupid, but sometimes I wish I would think more.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Anyway, here’s the issue.</span></p><div class="image"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a7b66f98-1341-40ef-9ad7-9b7931fc9beb/laptop-setup.jpg?t=1716378385"/></div></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h3 class="heading" style="text-align:left;"><span style="color:#4abb72;"><b>Made possible through generous sponsorship by:</b></span></h3><div class="image"><a class="image__link" href="https://workos.com/?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5d245f33-30ac-4d05-b83c-204852ef2868/WorkOS_Logo_for_Byte.png?t=1710755300"/></a></div></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://ericnormand.substack.com/p/residuality-theory?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-407" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Residuality Theory</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 21 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: design pattern, architecture, philosophy</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Eric Normand dives into “a framework for systems architecture by Barry O’Reilly”, that “attempts to use ideas from complexity sciences to build systems that can better survive the complexities of the real world”.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">A stressor is an uncontrollable dependency outside of software that can affect the system (DDoS, weather, politics).</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">“Residuality Theory suggests that we should mentally simulate the stressors ahead of time to understand how we can engineer the system to exist in the complex real world”</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">The objective is to reduce the coupling in the system, while not reducing it to the point of inflexibility.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://blog.nelhage.com/post/stripe-dev-environment/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-407" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Stripe&#39;s monorepo developer environment</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 21 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: devops</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Nelson Elhage shares his experiences working with Stripe&#39;s monorepo developer environment, detailing its evolution and key features that contributed to productivity.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Stripe used a monorepo primarily written in Ruby, supporting a large codebase with a focus on stability and reliability.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Development was done using per-developer cloud instances (&quot;devboxes&quot;) which facilitated centralized debugging and environment consistency.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Stripe&#39;s developer productivity team invested heavily in tooling, including automatic synchronization and integrated testing commands, enhancing overall developer efficiency.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://workos.com/blog/what-is-mfa-and-why-does-your-app-need-it?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>What is MFA, and why does your app need it?</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 13 December 2023</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: sponsored, auth, web</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">WorkOS describes what multi-factor authentication (MFA) is and why it’s useful.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">“it’s an added layer of security to your app that makes it more difficult for hackers or impersonators to steal and use a user’s credentials”</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">describe the different types of MFA</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">summarizes the back-end flow for different types of MFAs</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://blog.apnic.net/2024/05/17/a-transport-protocols-view-of-starlink/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-407" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>A transport protocol’s view of Starlink</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 17 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: tcp, networking</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Geoff Huston examines how TCP, the primary transport protocol of the Internet, interacts with the characteristics of the Starlink satellite service, focusing on its performance implications.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Geosynchronous satellites provide extensive coverage but suffer from high latency due to their distance from Earth.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Low Earth Orbit (LEO) satellites, like those used by Starlink, offer reduced latency but require frequent handovers between satellites.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Starlink’s varying signal-to-noise ratio and dynamic channel rate control impact TCP performance, necessitating protocol adaptations for optimal efficiency.</span></p></li></ul></div><h2 class="heading" style="text-align:center;" id="thanks-for-your-support"><span style="color:#4abb72;">Thanks for your Support!</span></h2><hr class="content_break"><p class="paragraph" style="text-align:center;">Big thanks to all of the Patreon supports and company sponsors. If you want to support the newsletter you can checkout the <a class="link" href="https://www.patreon.com/abyteofcoding?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-407" target="_blank" rel="noopener noreferrer nofollow">Patreon page</a>. It&#39;s not necessary, but it lets me know that I&#39;m doing a good job and that you&#39;re finding value in the content.</p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/powered-by?publication_logo=https%3A%2F%2Fmedia.beehiiv.com%2Fcdn-cgi%2Fimage%2Ffit%3Dscale-down%2Cformat%3Dauto%2Conerror%3Dredirect%2Cquality%3D80%2Fuploads%2Fpublication%2Flogo%2Fc73f5b09-6d69-42dd-abc1-05846a4edd6e%2Flogo-512.png%3Fv%3D1776376695&publication_name=A+Byte+of+Coding&utm_campaign=4c8cb24c-9a03-4a18-98f7-6083b8d8c12e&utm_medium=post_rss&utm_source=a_byte_of_coding">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>A Byte of Coding Issue 406</title>
  <description>A Byte of Coding Issue 406</description>
  <link>https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-406</link>
  <guid isPermaLink="true">https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-406</guid>
  <pubDate>Tue, 21 May 2024 09:00:00 +0000</pubDate>
  <atom:published>2024-05-21T09:00:00Z</atom:published>
    <dc:creator>Alex Zdanov</dc:creator>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><div class="image"><img alt="A Byte of Coding" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e2219c14-f29b-4388-ac9c-268f82e76033/abc-title.png?t=1707211516"/></div><p class="paragraph" style="text-align:left;"></p><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Howdy,</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">One of the more uncomfortable feelings is when you swallow a pill and it feels like it gets stuck sideways and doesn’t go fully down. Ugh.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">You know what’s odd? Microsoft is investing billions of dollars into OpenAI, but the latter’s recent promos were all done on Apple products. And Apple is making a deal with OpenAI. Isn’t there a conflict of interest there?</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Anyway, here’s the issue.</span></p></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h3 class="heading" style="text-align:left;"><span style="color:#4abb72;"><b>Made possible through generous sponsorship by:</b></span></h3><div class="image"><a class="image__link" href="https://workos.com/?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5d245f33-30ac-4d05-b83c-204852ef2868/WorkOS_Logo_for_Byte.png?t=1710755300"/></a></div></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://frankforce.com/city-in-a-bottle-a-256-byte-raycasting-system/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-406" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>City In A Bottle – A 256 Byte Raycasting System</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 19 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: javascript, html</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Frank Force introduces a 256-byte raycasting engine (in an HTML canvas element) that generates a cityscape, demonstrating efficient use of minimal code. The project showcases how to create complex visual outputs with compact JavaScript.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">The engine uses a combination of HTML and JavaScript to render the scene in a small space.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">The code employs basic algebra and clever tricks to achieve the raycasting and rendering.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">The project highlights the potential of tiny code for generating intricate graphics and structures.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://blog.demofox.org/2024/05/19/a-low-discrepancy-shuffle-iterator-random-access-inversion/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-406" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>A Low Discrepancy Shuffle Iterator (+Random Access & Inversion)</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 19 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: c++, algorithms</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Alan Wolfe describes a low discrepancy shuffle iterator that supports random access and inversion, leveraging irrational numbers like the golden ratio for better sequence properties. This approach improves upon traditional shuffling methods in performance-critical applications.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Utilizes irrational numbers to drive the shuffle sequence, ensuring low discrepancy.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Supports constant-time random access and inversion for efficient element retrieval.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Demonstrates significant improvements in reducing sequence duplicates and missing values.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://workos.com/blog/the-developers-guide-to-user-management?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>The Developer&#39;s Guide to User Management</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 25 March 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: sponsored, auth</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">WorkOS published an extensive guide on building modern day user management, diving into various auth topics like SSO, MFA, and even user provisioning.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Session management is a foundational piece of user management but is complex to build. Devs need to consider cookie-based vs. JWT-based auth and how to persist login state information for users that are part of multiple orgs.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">At the 201 level, things like bot detection and org auth policies become more relevant.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">301 topics include invitation flows, email verification, and more.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://buttondown.email/jaffray/archive/null-bitmap-builds-a-database-1-the-log-is/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-406" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>NULL BITMAP Builds a Database #1: The Log is Literally the Database</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 20 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: database, rust</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Justin Jaffray begins a series on building an LSM-based database, focusing on a log-structured approach where the log itself functions as the database. This first installment emphasizes the fundamental operations of a key-value store.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Introduction of an LSM-based storage engine with basic operations (put and get).</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Explanation of using Rust for implementation, minimizing dependencies.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Discussion on writing data to a log and ensuring durability with fsync.</span></p></li></ul></div><h2 class="heading" style="text-align:center;" id="thanks-for-your-support"><span style="color:#4abb72;">Thanks for your Support!</span></h2><hr class="content_break"><p class="paragraph" style="text-align:center;">Big thanks to all of the Patreon supports and company sponsors. If you want to support the newsletter you can checkout the <a class="link" href="https://www.patreon.com/abyteofcoding?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-406" target="_blank" rel="noopener noreferrer nofollow">Patreon page</a>. It&#39;s not necessary, but it lets me know that I&#39;m doing a good job and that you&#39;re finding value in the content.</p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/powered-by?publication_logo=https%3A%2F%2Fmedia.beehiiv.com%2Fcdn-cgi%2Fimage%2Ffit%3Dscale-down%2Cformat%3Dauto%2Conerror%3Dredirect%2Cquality%3D80%2Fuploads%2Fpublication%2Flogo%2Fc73f5b09-6d69-42dd-abc1-05846a4edd6e%2Flogo-512.png%3Fv%3D1776376695&publication_name=A+Byte+of+Coding&utm_campaign=406a6160-27a1-4401-82e1-fb45b35aed2b&utm_medium=post_rss&utm_source=a_byte_of_coding">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>A Byte of Coding Issue 405</title>
  <description>A Byte of Coding Issue 405</description>
  <link>https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-405</link>
  <guid isPermaLink="true">https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-405</guid>
  <pubDate>Mon, 20 May 2024 09:00:00 +0000</pubDate>
  <atom:published>2024-05-20T09:00:00Z</atom:published>
    <dc:creator>Alex Zdanov</dc:creator>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><div class="image"><img alt="A Byte of Coding" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e2219c14-f29b-4388-ac9c-268f82e76033/abc-title.png?t=1707211516"/></div><p class="paragraph" style="text-align:left;"></p><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Hey-yo,</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Hope you all had a nice weekend. I had a no-screen Saturday, which was nice, but for Sunday I wanted to dedicate some time to updating the </span><span style="color:#555555;"><a class="link" href="http://abyteofcoding.com?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-405" target="_blank" rel="noopener noreferrer nofollow">abyteofcoding.com</a></span><span style="color:#555555;"> website (it doesn’t currently have the latest issues and search is nonexistent). I ended up having to fix some data models for </span><span style="color:#555555;"><a class="link" href="http://findenergy.com?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-405" target="_blank" rel="noopener noreferrer nofollow">findenergy.com</a></span><span style="color:#555555;">, related to monthly electricity rate pricing (extrapolating rates based on historical annual-only data). The latter ended yesterday in a moment of “ugh, why didn’t I just do it this other way?”. I’m not sure if those moments are becoming more or less frequent. Hopefully next weekend I can make the updates I want to make.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Anway, here’s the issue.</span></p></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h3 class="heading" style="text-align:left;"><span style="color:#4abb72;"><b>Made possible through generous sponsorship by:</b></span></h3><div class="image"><a class="image__link" href="https://workos.com/?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5d245f33-30ac-4d05-b83c-204852ef2868/WorkOS_Logo_for_Byte.png?t=1710755300"/></a></div></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://lucumr.pocoo.org/2024/5/16/macro-vtable-magic/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-405" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Using Rust Macros for Custom VTables</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 16 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: rust</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Armin Ronacher discusses using Rust macros to create custom virtual tables (vtables) for dynamic objects in the MiniJinja template engine. He explains the challenges and solutions for implementing dynamic object management in Rust.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">MiniJinja engine leverages type_erase! macro for dynamic object representation.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">The macro creates a custom DynObject smart pointer, allowing dynamic method invocation.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Demonstrates how to use Rust’s Arc and unsafe code to manage memory and refcounting effectively.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://martinfowler.com/articles/data-fetch-spa.html?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-405" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Data Fetching Patterns in Single-Page Applications</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 15 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: react, webdev, front-end</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Juntao Qiu outlines effective data fetching patterns for Single-Page Applications (SPAs) to enhance performance and user experience. He discusses various strategies such as Asynchronous State Handler, Parallel Data Fetching, and Code Splitting.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Asynchronous State Handler: Decouples data fetching from UI to streamline application architecture.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Parallel Data Fetching: Reduces wait time by loading multiple data sets simultaneously.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Code Splitting and Prefetching: Improves performance by loading only necessary code and data preemptively.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://workos.com/blog/a-guide-to-organization-modeling?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>A guide to organization modeling</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 16 February 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: sponsored, auth, architecture</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">WorkOS has published a guide that “surfaces complexities and implementation details” for supporting user-team-organization relationships in B2B auth.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">“if you ever want to sell to an enterprise your backend needs to be ready to support complex models of users and teams”</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">looks at the different ways you can implement the database tables for modeling the organization</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">most of the complexity comes from users that need to be a part of multiple organizations</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://shape-of-code.com/2024/05/19/a-surprising-retrospective-task-estimation-dataset/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-405" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>A surprising retrospective task estimation dataset</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 19 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: project management</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Derek Jones presents an analysis of a dataset concerning task estimation in software projects. The study reveals unexpected insights into how estimations have been historically inaccurate and the variability of these estimates over time (sHoCkEr).</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">The dataset includes 10,100 unique task estimates spanning ten years.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Analysis shows a significant discrepancy between estimated and actual task completion times.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Factors such as developer experience and project complexity influence estimation accuracy.</span></p></li></ul></div><h2 class="heading" style="text-align:center;" id="thanks-for-your-support"><span style="color:#4abb72;">Thanks for your Support!</span></h2><hr class="content_break"><p class="paragraph" style="text-align:center;">Big thanks to all of the Patreon supports and company sponsors. If you want to support the newsletter you can checkout the <a class="link" href="https://www.patreon.com/abyteofcoding?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-405" target="_blank" rel="noopener noreferrer nofollow">Patreon page</a>. It&#39;s not necessary, but it lets me know that I&#39;m doing a good job and that you&#39;re finding value in the content.</p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/powered-by?publication_logo=https%3A%2F%2Fmedia.beehiiv.com%2Fcdn-cgi%2Fimage%2Ffit%3Dscale-down%2Cformat%3Dauto%2Conerror%3Dredirect%2Cquality%3D80%2Fuploads%2Fpublication%2Flogo%2Fc73f5b09-6d69-42dd-abc1-05846a4edd6e%2Flogo-512.png%3Fv%3D1776376695&publication_name=A+Byte+of+Coding&utm_campaign=56af9988-cf5d-4f31-963b-1b4a534b1709&utm_medium=post_rss&utm_source=a_byte_of_coding">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>A Byte of Coding Issue 404</title>
  <description>A Byte of Coding Issue 404</description>
  <link>https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-404</link>
  <guid isPermaLink="true">https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-404</guid>
  <pubDate>Thu, 16 May 2024 09:00:00 +0000</pubDate>
  <atom:published>2024-05-16T09:00:00Z</atom:published>
    <dc:creator>Alex Zdanov</dc:creator>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><div class="image"><img alt="A Byte of Coding" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e2219c14-f29b-4388-ac9c-268f82e76033/abc-title.png?t=1707211516"/></div><p class="paragraph" style="text-align:left;"></p><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Oops,</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Error: not found.</span></p></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h3 class="heading" style="text-align:left;"><span style="color:#4abb72;"><b>Made possible through generous sponsorship by:</b></span></h3><div class="image"><a class="image__link" href="https://workos.com/?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5d245f33-30ac-4d05-b83c-204852ef2868/WorkOS_Logo_for_Byte.png?t=1710755300"/></a></div></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://xeiaso.net/blog/2024/homelab-v2/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-404" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Rebuilding my homelab: Suffering as a service</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 15 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: kubernetes, self hosting</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Xe Iaso shares her experience rebuilding her homelab, exploring various operating systems and tools like Rocky Linux, Kubernetes, and Ansible, detailing the challenges and solutions encountered. She highlights the complexities and rewards of managing a personal server environment for development and experimentation.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Evaluates Rocky Linux and the practical difficulties of installation on older hardware.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Discusses the advantages and disadvantages of using Kubernetes in a homelab setting.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Considers CoreOS and Fedora CoreOS as potential alternatives for an immutable infrastructure.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://blog.danlew.net/2024/05/15/javascript-nulls-and-programming-minutiae/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-404" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>JavaScript Nulls and Programming Minutiae</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 15 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: javascript</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Dan Lew delves into the nuances of handling absent data in JavaScript, comparing the use of null and undefined and their implications for code readability and maintainability. He concludes with practical advice for developers on choosing between these options.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Explores the challenges and subtle differences between using null and undefined in JavaScript.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Recommends using undefined to represent absent data for consistency and ease of handling.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Suggests using the isNil() function from Lodash for clear and concise null checks.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://workos.com/blog/the-developers-guide-to-directory-sync-scim?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>The Developer’s Guide to Directory Sync / SCIM</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 25 January 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: sponsored, auth</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">WorkOS discusses what Directory Sync and System for Cross Identity Management are, and why they’re necessary for large organizations.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Directory sync “automates the lifecycle management process by providing a single source of truth for identity”</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">“SCIM is an open source protocol for implementing Directory Sync”</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Includes comparison to just-in-time provisioning</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://easyperf.net/blog/2024/05/10/Thread-Count-Scaling-Part1?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-404" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Thread Count Scaling Part 1. Introduction</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 10 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: optimization, performance, multithreading, c++</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Denis Bakhvalov introduces a case study on thread count scaling for multithreaded applications, analyzing performance across different benchmarks to understand their efficiency on multicore systems. The study reveals that most benchmarks show suboptimal scaling, highlighting the complexities of multithreading.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Benchmarks include Blender, Clang, Zstandard, CloverLeaf, and CPython, each tested with varying thread counts.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">The best-performing benchmark, Blender, achieved a 6x speedup with 16 threads, far from ideal linear scaling.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Clang and Zstd experienced performance degradation beyond 11 threads, indicating challenges in multithreaded optimization.</span></p></li></ul></div><h2 class="heading" style="text-align:center;" id="thanks-for-your-support"><span style="color:#4abb72;">Thanks for your Support!</span></h2><hr class="content_break"><p class="paragraph" style="text-align:center;">Big thanks to all of the Patreon supports and company sponsors. If you want to support the newsletter you can checkout the <a class="link" href="https://www.patreon.com/abyteofcoding?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-404" target="_blank" rel="noopener noreferrer nofollow">Patreon page</a>. It&#39;s not necessary, but it lets me know that I&#39;m doing a good job and that you&#39;re finding value in the content.</p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/powered-by?publication_logo=https%3A%2F%2Fmedia.beehiiv.com%2Fcdn-cgi%2Fimage%2Ffit%3Dscale-down%2Cformat%3Dauto%2Conerror%3Dredirect%2Cquality%3D80%2Fuploads%2Fpublication%2Flogo%2Fc73f5b09-6d69-42dd-abc1-05846a4edd6e%2Flogo-512.png%3Fv%3D1776376695&publication_name=A+Byte+of+Coding&utm_campaign=26767976-3df1-4514-b657-a6aae31843c6&utm_medium=post_rss&utm_source=a_byte_of_coding">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>A Byte of Coding Issue 403</title>
  <description>A Byte of Coding Issue 403</description>
  <link>https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-403</link>
  <guid isPermaLink="true">https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-403</guid>
  <pubDate>Wed, 15 May 2024 09:00:00 +0000</pubDate>
  <atom:published>2024-05-15T09:00:00Z</atom:published>
    <dc:creator>Alex Zdanov</dc:creator>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><div class="image"><img alt="A Byte of Coding" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e2219c14-f29b-4388-ac9c-268f82e76033/abc-title.png?t=1707211516"/></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Hey-yo,</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">The theme of today’s issue is performance analysis and comparison!</span></p></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h3 class="heading" style="text-align:left;"><span style="color:#4abb72;"><b>Made possible through generous sponsorship by:</b></span></h3><table width="100%" class="bh__column_wrapper"><tr><td width="50%" class="bh__column"><div class="image"><a class="image__link" href="https://workos.com/?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5d245f33-30ac-4d05-b83c-204852ef2868/WorkOS_Logo_for_Byte.png?t=1710755300"/></a></div></td><td width="50%" class="bh__column"><div class="image"><a class="image__link" href="https://www.vpdae.com/redirect/9t164b97r9zazjd7i3rykuyi72o?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-403" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c3bab410-c86b-4a05-9126-d87a7c87ecc1/aviator-logo-dark.png?t=1715770641"/></a></div></td></tr></table></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://sujitpal.blogspot.com/2024/05/performance-analysis-of-float-vs-byte.html?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-403" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Performance Analysis of Float vs Byte vs Binary Vectors on OpenSearch</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 14 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: search, performance</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Sujit Pal explores the performance differences between float, byte, and binary vectors in vector search applications using OpenSearch. He compares their response times and effectiveness in matching vector similarity, showing that while float vectors perform slightly better, binary vectors offer much faster response times.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Sujit used the SentenceTransformers model to encode text inputs into vectors and experimented with float, byte, and binary vector types.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">The performance metrics used were Recall and Mean Reciprocal Rank (MRR) across various top-k nearest neighbors scenarios.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Among the three types, binary vectors had the fastest response times, though float vectors had marginally better precision in similarity matching.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="http://smalldatum.blogspot.com/2024/05/the-insert-benchmark-mariadb-mysql-new.html?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-403" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>The Insert Benchmark: MariaDB, MySQL, new small server, cached workload, some concurrency</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 14 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: mariadb, mysql, database, performance</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Mark Callaghan analyzes the performance of MariaDB and MySQL in an insert benchmark on a new small server with varying levels of concurrency and a cached workload. He provides detailed comparisons of throughput across different configurations and versions of the database systems.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">The tests measure performance with varying client loads and database configurations, focusing on how MariaDB and MySQL handle insert operations under concurrency.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Results indicate that modern MariaDB versions generally perform better than MySQL in benchmark tests, often significantly.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Detailed analysis of performance regression in MySQL over its successive versions, showing a decline in performance compared to earlier versions.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://www.aviator.co/blog/improving-dora-metrics-lead-time-for-changes/?utm_source=partner&utm_medium=email&utm_campaign=q2-2024-stacked-prs-static-ad-paved-byte-coding&utm_term=net-new&utm_content=awareness&pvd_cid=m-1e99778f-2114-8198-2950-sojodfawrhzp" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Improving DORA Metrics – Lead Time for Changes</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 5 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: sponsored, dora, devops</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Aviator discusses strategies for improving the &#39;Lead Time for Changes&#39; DORA metric, emphasizing faster software development cycles to enhance productivity and responsiveness to market demands. The article breaks down the cycle time, showing where optimizations can significantly shorten the software development process.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">The article explains the difference between &#39;lead time for changes&#39; and &#39;cycle time&#39;, providing a clear framework for measuring and improving these metrics.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Strategies for improvement include optimizing coding practices, streamlining code reviews, and enhancing merge and deployment processes.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Practical tips are offered, such as using AI-assisted tools, implementing smaller PRs, and employing feature flags to manage deployments effectively.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://www.pixelstech.net/article/1715394789-Performance-comparison-of-string-concatenation-in-Go-language?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-403" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Performance comparison of string concatenation in Go language</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 13 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: go, performance</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Sonic0002 offers a detailed performance analysis of string concatenation methods in Go language, comparing traditional and advanced techniques like the &#39;+&#39; operator, fmt.Sprintf, strings.Builder, bytes.Buffer, and []byte slice concatenation.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">strings.Builder and []byte pre-allocated methods show significant performance advantages in terms of both time and memory usage compared to other methods.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">The article details specific code examples and benchmark results for each method, providing clear guidance on their efficiency and practical use.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Optimization suggestions include choosing the right method based on specific needs, with a strong recommendation for using strings.Builder for general purposes due to its efficiency and simplicity.</span></p></li></ul></div><div class="custom_html"><img src="https://www.vpdae.com/open/1e99778f.gif?opens=1" width="1" height="1"></div><h2 class="heading" style="text-align:center;" id="thanks-for-your-support"><span style="color:#4abb72;">Thanks for your Support!</span></h2><hr class="content_break"><p class="paragraph" style="text-align:center;">Big thanks to all of the Patreon supports and company sponsors. If you want to support the newsletter you can checkout the <a class="link" href="https://www.patreon.com/abyteofcoding?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-403" target="_blank" rel="noopener noreferrer nofollow">Patreon page</a>. It&#39;s not necessary, but it lets me know that I&#39;m doing a good job and that you&#39;re finding value in the content.</p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/powered-by?publication_logo=https%3A%2F%2Fmedia.beehiiv.com%2Fcdn-cgi%2Fimage%2Ffit%3Dscale-down%2Cformat%3Dauto%2Conerror%3Dredirect%2Cquality%3D80%2Fuploads%2Fpublication%2Flogo%2Fc73f5b09-6d69-42dd-abc1-05846a4edd6e%2Flogo-512.png%3Fv%3D1776376695&publication_name=A+Byte+of+Coding&utm_campaign=2696e33b-596f-47e7-b90c-ff349148daa5&utm_medium=post_rss&utm_source=a_byte_of_coding">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>A Byte of Coding Issue 402</title>
  <description>A Byte of Coding Issue 402</description>
  <link>https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-402</link>
  <guid isPermaLink="true">https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-402</guid>
  <pubDate>Tue, 14 May 2024 09:00:00 +0000</pubDate>
  <atom:published>2024-05-14T09:00:00Z</atom:published>
    <dc:creator>Alex Zdanov</dc:creator>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><div class="image"><img alt="A Byte of Coding" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e2219c14-f29b-4388-ac9c-268f82e76033/abc-title.png?t=1707211516"/></div><p class="paragraph" style="text-align:left;"></p><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Hi,</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Not tech related, but I read </span><span style="color:#555555;"><a class="link" href="https://phys.org/news/2024-04-squids-birthday-male-spear-shown.html?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-402" target="_blank" rel="noopener noreferrer nofollow">this interesting article</a></span><span style="color:#555555;"> on how the birth date of males for a species of squid determines what mating tactic they use for life. It made me think of the zodiac and astrology. Interestingly the latter assigns personality traits depending on the position of certain planets (and stars?), unlike the squid, whose personality traits depend on environmental factors (ie temperature of water). Why did astronomical factors become more popular than local ones for people?</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Anyway, here’s the issue.</span></p></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h3 class="heading" style="text-align:left;"><span style="color:#4abb72;"><b>Made possible through generous sponsorship by:</b></span></h3><table width="100%" class="bh__column_wrapper"><tr><td width="50%" class="bh__column"><div class="image"><a class="image__link" href="https://workos.com/?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5d245f33-30ac-4d05-b83c-204852ef2868/WorkOS_Logo_for_Byte.png?t=1710755300"/></a></div></td><td width="50%" class="bh__column"><div class="image"><a class="image__link" href="https://www.powersync.com/?utm_source=newsletter&utm_medium=sponsorship&utm_campaign=a-byte-of-coding" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/be41d0d2-3eb3-4a77-bd5a-280f95b0b754/powersync-logo-546x104.png?t=1714464996"/></a></div></td></tr></table></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://nora.codes/post/methods-should-be-object-safe/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-402" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Methods Should Be Object Safe</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 4 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: rust, oop</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Leonora Tindall proposes “the use of ‘method’, in Rust, to refer specifically to associated functions which would be object safe if put in a trait”.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">“</span><span style="color:#555555;">programmers often act like ‘OOP’ is one big concept, when, really, it’s more like a kind of Vietnamese spring roll of concepts that can be inserted or taken out depending on preference”.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">In rust, an object is “a type with a name including dyn Trait”.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">“In Rust, grouping values by trait rather than type is done through dynamic dispatch”.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://tratt.net/laurie/blog/2024/what_factors_explain_the_nature_of_software.html?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-402" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>What Factors Explain the Nature of Software?</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 14 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: software design, philosophy</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Laurence Tratt discusses the interacting factors that define the nature of software. He explores how software exists in a state between real-world constraints and fantastical possibilities, highlighting the complexities involved in specifying and observing software&#39;s behavior.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Software exists between the physical world&#39;s hard constraints and the fantasy of limitless possibilities, which impacts its development and understanding.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">The &quot;circular specification problem&quot; suggests that fully understanding what software should do often only comes after its creation, complicating development.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">The &quot;observer effect&quot; in software shows that seeing software in action can change perceptions and requirements, influencing its final form.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://www.powersync.com/blog/offline-first-local-first-is-a-big-deal-especially-for-the-web?utm_source=newsletter&utm_medium=sponsorship&utm_campaign=a-byte-of-coding" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Offline-First/Local-First is a Big Deal, Especially for the Web</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 22 November 2023</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: sponsored, web</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">PowerSync dives into why offline-first / local-first apps are advantageous and worth building.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Outlines the technical advantages, including fewer back-end compute resources, reduced API burden, and simplified state management.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Describes the UX improvements, including speed and offline use.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Highlights important design considerations.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://naildrivin5.com/blog/2024/05/10/estimates-are-fine.html?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-402" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Estimates are Fine. They Build Trust When You Provide Them And Deliver On Them</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 10 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: project management, philosophy, business</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Not a typically technical article, but interesting for the more business-oriented. David Bryant Copeland emphasizes the importance of providing and delivering on estimates in software development. He argues that estimates, when done well, build trust and improve project outcomes by aligning expectations and facilitating project management.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Providing accurate estimates requires experience and honest assessment of what can be achieved within a given timeframe.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Estimates help in managing project delivery and stakeholder expectations, reinforcing trust when they are met.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Copeland suggests strategies for estimation that include assessing known quantities, accommodating uncertainties, and revising estimates based on ongoing project insights.</span></p></li></ul></div><h3 class="heading" style="text-align:left;" id="a-newsletter-youll-love-stay-ahead-"><b>A Newsletter You’ll Love: Stay ahead on the business of AI</b></h3><p class="paragraph" style="text-align:left;">Need ONE newsletter to stay on top of everything?</p><p class="paragraph" style="text-align:left;">Prompts daily will make you more productive at work and help you look smarter in front of your friends (seriously!)</p><p class="paragraph" style="text-align:left;">It’s also FREE to sign up!</p><p class="paragraph" style="text-align:left;"><a class="link" href="https://magic.beehiiv.com/v1/54ea7a11-1b54-4ec3-aeb8-f03b2328f899?email={{email}}&utm_campaign=a_byte_of_coding&utm_source=beehiiv&redirect_to=https%3A%2F%2Fwww.neatprompts.com%2Fc%2Fthank-you&redirect_delay=2&_bhiiv=opp_9cffb7c5-42b7-4066-a92b-27d4d657a952_1b656273&bhcl_id=e763c753-aa72-432e-bab4-012a3cb559ba_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">In just ONE click, you can sign up for the daily newsletter (free)</a></p><h2 class="heading" style="text-align:center;" id="thanks-for-your-support"><span style="color:#4abb72;">Thanks for your Support!</span></h2><hr class="content_break"><p class="paragraph" style="text-align:center;">Big thanks to all of the Patreon supports and company sponsors. If you want to support the newsletter you can checkout the <a class="link" href="https://www.patreon.com/abyteofcoding?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-402" target="_blank" rel="noopener noreferrer nofollow">Patreon page</a>. It&#39;s not necessary, but it lets me know that I&#39;m doing a good job and that you&#39;re finding value in the content.</p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/powered-by?publication_logo=https%3A%2F%2Fmedia.beehiiv.com%2Fcdn-cgi%2Fimage%2Ffit%3Dscale-down%2Cformat%3Dauto%2Conerror%3Dredirect%2Cquality%3D80%2Fuploads%2Fpublication%2Flogo%2Fc73f5b09-6d69-42dd-abc1-05846a4edd6e%2Flogo-512.png%3Fv%3D1776376695&publication_name=A+Byte+of+Coding&utm_campaign=b7a028f0-acd3-4cf7-a79a-4181ec9142d3&utm_medium=post_rss&utm_source=a_byte_of_coding">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>A Byte of Coding Issue 401</title>
  <description>A Byte of Coding Issue 401</description>
  <link>https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-401</link>
  <guid isPermaLink="true">https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-401</guid>
  <pubDate>Mon, 13 May 2024 09:00:00 +0000</pubDate>
  <atom:published>2024-05-13T09:00:00Z</atom:published>
    <dc:creator>Alex Zdanov</dc:creator>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><div class="image"><img alt="A Byte of Coding" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e2219c14-f29b-4388-ac9c-268f82e76033/abc-title.png?t=1707211516"/></div><p class="paragraph" style="text-align:left;"></p><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Howdy,</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Hope you all had a nice weekend. I spent most of mine fiddling around with modelling electricity prices for individual providers in the US (for </span><span style="color:#555555;"><a class="link" href="http://findenergy.com?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-401" target="_blank" rel="noopener noreferrer nofollow">findenergy.com</a></span><span style="color:#555555;">). The issue is we get monthly sales / revenues / customers figures for some big providers in every state, but the rest are all reported anonymously in one block (more than half of the state total). All providers report on an annual basis, but that’s usually 1-2 years behind, compared to monthly data which is only 3 months behind. Obviously the latter is more interesting for most people. </span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">My theory was that if I could find the proportion of total annual sales / revenues / customers for each provider that published monthly data anonymously, I could use that ratio to predict what proportion of the monthly anonymous data could be attributed to them. The result works super well! Except for 2020. Maybe because of the pandemic? For some reason the model amount of electricity sold is much lower than the actual electricity sold, whereas revenues and customers are pretty much on point. Maybe a combination of more electricity use with subsidies that aren’t counted as revenue? What do you think?</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Anyway, here’s the issue.</span></p></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h3 class="heading" style="text-align:left;"><span style="color:#4abb72;"><b>Made possible through generous sponsorship by:</b></span></h3><div class="image"><a class="image__link" href="https://workos.com/?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5d245f33-30ac-4d05-b83c-204852ef2868/WorkOS_Logo_for_Byte.png?t=1710755300"/></a></div></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://sebastianraschka.com/blog/2024/how-good-open-llm.html?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-401" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>How Good Are the Latest Open LLMs? And Is DPO Better Than PPO?</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 12 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: llm, ai, machine learning</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Sebastian Raschka evaluates recent advancements in large language models (LLMs) such as Mixtral, Llama 3, and Phi-3, and discusses reinforcement learning methods for model fine-tuning, comparing Proximal Policy Optimization (PPO) and Direct Preference Optimization (DPO).</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Compares newer models to previous versions, highlighting improvements in architecture and training strategies.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Discusses the efficiency and scalability of models, particularly in terms of data use and processing capabilities.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Reviews practical implications of PPO and DPO in aligning LLMs with human preferences.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://two-wrongs.com/when-is-counter-strike-player-good?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-401" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>When Is a Counter-Strike Player Good?</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 10 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: math, data science, games</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Chris reflects on the complexities of measuring skill in Counter-Strike, highlighting the multifaceted nature of in-game performance which extends beyond simple metrics like kills and deaths, focusing instead on strategic gameplay and resource management.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Discusses the Leetify rating, a sophisticated metric that evaluates individual performance based on the impact of in-game events on the chances of winning.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Provides insights into the tactical considerations of Counter-Strike, such as map control and economy management.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Explores the difficulty of assessing individual contributions to team success in a game where strategic decision-making is crucial.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://workos.com/blog/sso-acronyms-demystified?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Single Sign-On: Acronyms Demystified</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 1 June 2023</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: sponsored, auth</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">WorkOS explains all the auth-related protocols and provides additional resources (for further reading) for OAuth, OIDC, and SAML.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">“OAuth is not an authentication protocol”</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">OIDC is built on top of OAuth</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">SAML is used for federated authentication</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://paulhammant.com/2024/04/12/playing-with-zig/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-401" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Playing with Zig and thinking about its package manager</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 12 April 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: zig</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Paul Hammant explores using the Zig programming language to build a virtual machine configuration tool and discusses the potential of federated Git repositories as a decentralized package management system.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Demonstrates a practical application of Zig by creating a command-line tool for virtual machine configuration.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Proposes leveraging Git for decentralized package management, akin to systems used by Carthage and Ansible Galaxy.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Discusses the benefits of a Git-based system for robust version control and distribution of software binaries.</span></p></li></ul></div><h2 class="heading" style="text-align:center;" id="thanks-for-your-support"><span style="color:#4abb72;">Thanks for your Support!</span></h2><hr class="content_break"><p class="paragraph" style="text-align:center;">Big thanks to all of the Patreon supports and company sponsors. If you want to support the newsletter you can checkout the <a class="link" href="https://www.patreon.com/abyteofcoding?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-401" target="_blank" rel="noopener noreferrer nofollow">Patreon page</a>. It&#39;s not necessary, but it lets me know that I&#39;m doing a good job and that you&#39;re finding value in the content.</p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/powered-by?publication_logo=https%3A%2F%2Fmedia.beehiiv.com%2Fcdn-cgi%2Fimage%2Ffit%3Dscale-down%2Cformat%3Dauto%2Conerror%3Dredirect%2Cquality%3D80%2Fuploads%2Fpublication%2Flogo%2Fc73f5b09-6d69-42dd-abc1-05846a4edd6e%2Flogo-512.png%3Fv%3D1776376695&publication_name=A+Byte+of+Coding&utm_campaign=25bdc98e-ff1c-4082-b710-bbc543fec976&utm_medium=post_rss&utm_source=a_byte_of_coding">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>A Byte of Coding Issue 400</title>
  <description>A Byte of Coding Issue 400</description>
  <link>https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-400</link>
  <guid isPermaLink="true">https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-400</guid>
  <pubDate>Thu, 09 May 2024 09:00:00 +0000</pubDate>
  <atom:published>2024-05-09T09:00:00Z</atom:published>
    <dc:creator>Alex Zdanov</dc:creator>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><div class="image"><img alt="A Byte of Coding" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e2219c14-f29b-4388-ac9c-268f82e76033/abc-title.png?t=1707211516"/></div><p class="paragraph" style="text-align:left;"></p><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Hi hi hi,</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Wowza, issue #400. That’s a lotta issues.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Anyway, here’s dat issue.</span></p></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h3 class="heading" style="text-align:left;"><span style="color:#4abb72;"><b>Made possible through generous sponsorship by:</b></span></h3><div class="image"><a class="image__link" href="https://workos.com/?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5d245f33-30ac-4d05-b83c-204852ef2868/WorkOS_Logo_for_Byte.png?t=1710755300"/></a></div></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://frontside.com/blog/2023-12-11-await-event-horizon/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-400" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>The await event horizon in JavaScript</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 11 December 2023</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: javascript</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Charles Lowell explores the concept of the &#39;await event horizon&#39; in JavaScript, likening it to a point of no return for asynchronous operations, highlighting the challenges this poses for error handling and resource management in async functions.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Discusses the limitations of current async programming patterns where functions can get indefinitely stuck waiting for promises to resolve.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Introduces the idea of structured concurrency as a potential solution to mitigate these issues by allowing better control over asynchronous operations.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Explores the use of generator functions as a more robust alternative to traditional async functions, providing a way to manage and abort asynchronous operations more effectively.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://www.reitzen.com/post/temporal-fuzzing-01/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-400" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Temporal Fuzzing I: Memory Models</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 1 July 2021</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: concurrency, memory</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Michael Reitzenstein introduces the concept of temporal fuzzing in memory models, explaining its application in analyzing shared memory concurrency and the unexpected outcomes that can arise from different processor memory models.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Temporal fuzzing is used to explore and expose concurrency issues by simulating different memory models and observing the outcomes.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">The article provides a detailed pseudocode scenario illustrating how simultaneous operations can lead to various results depending on execution timing.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Demonstrates how temporal fuzzing can aid in understanding complex systems and predicting their behavior under different conditions.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://workos.com/blog/guide-to-one-time-passwords-otps?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>A Developer’s Guide to One-Time Passwords (OTPs)</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 28 June 2021</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: sponsored, auth, web</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">WorkOS has published an extensive guide on how one-time passwords work, their benefits, and implementation details.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">“OTPs come in three different forms, and each form works differently: time-synchronized OTPs, lockstep synchronized OTPs, or transmission-based OTPs”</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">OTPs are more secure than static passwords, but can create a frustrating user experience due to potential delays</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Pros and cons for OTPs</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://injuly.in/blog/defunct/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-400" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Compiling higher order functions with GADTs</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 9 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: haskell, functional</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Srijan explains defunctionalization for flattening out higher order functions in compiler passes.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Based on a paper that demonstrates it in OCaml.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">“Defunctionalization is a transform – a way to re-write the original program without using higher order functions such that it can be trivially compiled to a flat IR in subsequent compiler passes.”</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">“Defunctionalization can transform first class functions with immutable variable captures”.</span></p></li></ul></div><h2 class="heading" style="text-align:center;" id="thanks-for-your-support"><span style="color:#4abb72;">Thanks for your Support!</span></h2><hr class="content_break"><p class="paragraph" style="text-align:center;">Big thanks to all of the Patreon supports and company sponsors. If you want to support the newsletter you can checkout the <a class="link" href="https://www.patreon.com/abyteofcoding?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-400" target="_blank" rel="noopener noreferrer nofollow">Patreon page</a>. It&#39;s not necessary, but it lets me know that I&#39;m doing a good job and that you&#39;re finding value in the content.<a class="link" href="https://app.beehiiv.com/posts/1bbcfe76-bb7f-4957-a6bf-9e26b648bb45/analytics?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-400" target="_blank" rel="noopener noreferrer nofollow">A Byte of Coding Issue 399</a></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/powered-by?publication_logo=https%3A%2F%2Fmedia.beehiiv.com%2Fcdn-cgi%2Fimage%2Ffit%3Dscale-down%2Cformat%3Dauto%2Conerror%3Dredirect%2Cquality%3D80%2Fuploads%2Fpublication%2Flogo%2Fc73f5b09-6d69-42dd-abc1-05846a4edd6e%2Flogo-512.png%3Fv%3D1776376695&publication_name=A+Byte+of+Coding&utm_campaign=12141e0d-a404-4280-bcba-d74251dcc219&utm_medium=post_rss&utm_source=a_byte_of_coding">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>A Byte of Coding Issue 399</title>
  <description>A Byte of Coding Issue 399</description>
  <link>https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-399</link>
  <guid isPermaLink="true">https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-399</guid>
  <pubDate>Wed, 08 May 2024 09:00:00 +0000</pubDate>
  <atom:published>2024-05-08T09:00:00Z</atom:published>
    <dc:creator>Alex Zdanov</dc:creator>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><div class="image"><img alt="A Byte of Coding" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e2219c14-f29b-4388-ac9c-268f82e76033/abc-title.png?t=1707211516"/></div><p class="paragraph" style="text-align:left;"></p><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Hey hey hey,</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Here’s dat issue.</span></p></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h3 class="heading" style="text-align:left;"><span style="color:#4abb72;"><b>Made possible through generous sponsorship by:</b></span></h3><table width="100%" class="bh__column_wrapper"><tr><td width="50%" class="bh__column"><div class="image"><a class="image__link" href="https://workos.com/?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5d245f33-30ac-4d05-b83c-204852ef2868/WorkOS_Logo_for_Byte.png?t=1710755300"/></a></div></td><td width="50%" class="bh__column"><div class="image"><a class="image__link" href="https://www.powersync.com/?utm_source=newsletter&utm_medium=sponsorship&utm_campaign=a-byte-of-coding" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/be41d0d2-3eb3-4a77-bd5a-280f95b0b754/powersync-logo-546x104.png?t=1714464996"/></a></div></td></tr></table></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://go.dev/blog/randv2?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-399" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Evolving the Go Standard Library with math/rand/v2</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 1 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: go</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Russ Cox discusses the introduction of math/rand/v2 in Go 1.22, a new version designed to address issues with the math/rand package while improving performance and flexibility for future upgrades.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">The math/rand/v2 package replaces the old pseudorandom number generator to fix repeatability issues and enhance performance.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">The new version introduces breaking changes, including the removal of outdated methods and the adoption of a more secure default random generator.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">It balances backward compatibility with the necessity of modern improvements.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://blog.cloudflare.com/lessons-from-building-an-automated-sdk-pipeline?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-399" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Lessons from building an automated SDK pipeline</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 23 April 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: sdk</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Jacob Bednarz discusses Cloudflare&#39;s development of an automated SDK pipeline, which enhances consistency and reduces manual efforts in SDK updates across programming languages using OpenAPI and the Stainless generation engine.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">The introduction of automated processes reduced the number of required pull requests and increased update frequency.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Emphasizes the importance of language-specific nuances in SDK generation to improve user experience.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Utilizes modern tools like codemods for large-scale code transformations and maintaining high quality across APIs.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://workos.com/blog/the-developers-guide-to-sso?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>The Developer’s Guide to SSO</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 27 October 2023</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: sponsored, auth, web</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">WorkOS has published a guide on how to best integrate single sign-on (SSO) in your app.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">SSO is a common requirement when organizations first start selling to enterprises</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">​describes the general request flow for a user logging in with SSO</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">summarizes how to build SSO from scratch and how to use existing providers</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://nullprogram.com/blog/2024/04/14/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-399" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>Speculations on arenas and custom strings in C++</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 14 April 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: c++, optimization, memory</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Chris Wellons discusses his approach to building custom strings and arenas in C++ by minimizing complexity and avoiding extensive use of C++ features, aiming to maintain simplicity and reduce potential errors.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Advocates for the use of minimal template usage and simple memory allocation techniques to improve clarity and performance.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Outlines the benefits and limitations of modifying traditional C++ string handling to better suit specific programming needs.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Emphasizes practical, straightforward programming without overreliance on C++&#39;s more complex features.</span></p></li></ul></div><h2 class="heading" style="text-align:center;" id="thanks-for-your-support"><span style="color:#4abb72;">Thanks for your Support!</span></h2><hr class="content_break"><p class="paragraph" style="text-align:center;">Big thanks to all of the Patreon supports and company sponsors. If you want to support the newsletter you can checkout the <a class="link" href="https://www.patreon.com/abyteofcoding?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-399" target="_blank" rel="noopener noreferrer nofollow">Patreon page</a>. It&#39;s not necessary, but it lets me know that I&#39;m doing a good job and that you&#39;re finding value in the content.</p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/powered-by?publication_logo=https%3A%2F%2Fmedia.beehiiv.com%2Fcdn-cgi%2Fimage%2Ffit%3Dscale-down%2Cformat%3Dauto%2Conerror%3Dredirect%2Cquality%3D80%2Fuploads%2Fpublication%2Flogo%2Fc73f5b09-6d69-42dd-abc1-05846a4edd6e%2Flogo-512.png%3Fv%3D1776376695&publication_name=A+Byte+of+Coding&utm_campaign=1bbcfe76-bb7f-4957-a6bf-9e26b648bb45&utm_medium=post_rss&utm_source=a_byte_of_coding">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>A Byte of Coding Issue 398</title>
  <description>A Byte of Coding Issue 398</description>
  <link>https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-398</link>
  <guid isPermaLink="true">https://abyteofcoding.beehiiv.com/p/a-byte-of-coding-issue-398</guid>
  <pubDate>Tue, 07 May 2024 09:00:00 +0000</pubDate>
  <atom:published>2024-05-07T09:00:00Z</atom:published>
    <dc:creator>Alex Zdanov</dc:creator>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><div class="image"><img alt="A Byte of Coding" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e2219c14-f29b-4388-ac9c-268f82e76033/abc-title.png?t=1707211516"/></div><p class="paragraph" style="text-align:left;"></p><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Howdy,</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">I shared a little </span><span style="color:#555555;"><a class="link" href="https://www.linkedin.com/posts/alex-zdanov_setting-up-dev-envs-for-some-hiring-test-activity-7193286382113452032-j7te?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-398" target="_blank" rel="noopener noreferrer nofollow">SQL snippet</a></span><span style="color:#555555;"> yesterday for determining what tables in your postgres database are taking up the most space. It was useful for determining what data I could skip exporting for a dev environment (or prod database is ~100GB, which isn’t huge, but a bit inconvenient to work with). I’d be curious to hear how people handle dev databases in these kinds of situations.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Anyway, here’s the issue.</span></p></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h3 class="heading" style="text-align:left;"><span style="color:#4abb72;"><b>Made possible through generous sponsorship by:</b></span></h3><div class="image"><a class="image__link" href="https://workos.com/?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5d245f33-30ac-4d05-b83c-204852ef2868/WorkOS_Logo_for_Byte.png?t=1710755300"/></a></div></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://www.figma.com/blog/figmas-journey-to-typescript-compiling-away-our-custom-programming-language/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-398" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>The evolution of Figma’s mobile engine: Compiling away our custom programming language</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 1 May 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: typescript</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Brandon Lin illuminates how Figma migrated from using their custom language Skew to industry standard TypeScript.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Switched because it was hard to ramp on talent and was missing a developer ecosystem.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Migration became possible because more mobile browsers started supporting WebAssembly.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">The process was broken into three steps, write skew → build skew, write skew → build typescript, write typescript → build typescript </span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://www.bitsaboutmoney.com/archive/the-business-of-wallets/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-398" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>The business of wallets</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 30 April 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: finance, business</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Patrick McKenzie explores the economics and functionality of electronic wallets, detailing how they manage money transfers within their ecosystems and generate revenue through both transaction fees and interest on stored funds.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Wallets like PayPal earn money by charging fees on transactions and earning interest on customer balances.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">The business model for wallets involves reducing transaction costs within their ecosystem while monetizing both deposits and withdrawals.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Discusses how electronic wallets have evolved from simply safeguarding money to becoming complex financial tools with broad applications.</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://workos.com/blog/the-developers-guide-to-domain-verification?utm_source=abyteofcoding&utm_medium=newsletter&utm_campaign=q12024" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>The Developer&#39;s Guide to Domain Verification</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 15 November 2024</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: sponsored, networking, auth, dns</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">WorkOS’ blog “examines best practices to consider when building in-house as well as a simple alternative” that they provide when it comes to domain verification.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">“Domain verification is a crucial security measure for SaaS providers, ensuring that services are securely delivered to the legitimate owners of a domain”</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">“Don’t place TXT records on the root domain”</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">WorkOS offers a simple API you can integrate with to do domain verification</span></p></li></ul></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><h2 class="heading" style="text-align:left;"><span style="color:#4abb72;"><a class="link" href="https://randomascii.wordpress.com/2014/01/27/theres-only-four-billion-floatsso-test-them-all/?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-398" target="_blank" rel="noopener noreferrer nofollow"><span style="text-decoration:underline;"><b>There are Only Four Billion Floats–So Test Them All!</b></span></a></span></h2><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Published: 27 January 2014</b></span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;"><b>Tags: testing</b></span></p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Bruce Dawson explores the idea of exhaustively testing all possible float values in programming to ensure the accuracy of functions that handle floating-point math, highlighting common errors and ways to correct them.</span></p><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Some highlights:</span></p><ul><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Demonstrates how exhaustive testing of all four billion possible floating-point values can identify and help rectify errors in mathematical functions.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Discusses common issues with ceil, floor, and round functions that fail due to incorrect rounding methods or handling of very small numbers.</span></p></li><li><p class="paragraph" style="text-align:left;"><span style="color:#555555;">Proposes that while conventional wisdom advises against exact float comparisons, there are situations where such precision is necessary for correctness.</span></p></li></ul></div><h2 class="heading" style="text-align:center;" id="thanks-for-your-support"><span style="color:#4abb72;">Thanks for your Support!</span></h2><hr class="content_break"><p class="paragraph" style="text-align:center;">Big thanks to all of the Patreon supports and company sponsors. If you want to support the newsletter you can checkout the <a class="link" href="https://www.patreon.com/abyteofcoding?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-398" target="_blank" rel="noopener noreferrer nofollow">Patreon page</a>. It&#39;s not necessary, but it lets me know that I&#39;m doing a good job and that you&#39;re finding value in the content.<a class="link" href="https://app.beehiiv.com/posts/d31d528f-f86f-4e36-be89-cbefc831a418/analytics?utm_source=abyteofcodingnewsletter&utm_medium=newsletter&utm_campaign=a-byte-of-coding-issue-398" target="_blank" rel="noopener noreferrer nofollow">A Byte of Coding Issue 397</a></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/powered-by?publication_logo=https%3A%2F%2Fmedia.beehiiv.com%2Fcdn-cgi%2Fimage%2Ffit%3Dscale-down%2Cformat%3Dauto%2Conerror%3Dredirect%2Cquality%3D80%2Fuploads%2Fpublication%2Flogo%2Fc73f5b09-6d69-42dd-abc1-05846a4edd6e%2Flogo-512.png%3Fv%3D1776376695&publication_name=A+Byte+of+Coding&utm_campaign=10a983a0-5a3b-4344-9e7b-0b425c1f4b3f&utm_medium=post_rss&utm_source=a_byte_of_coding">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

  </channel>
</rss>
