CINXE.COM

Golang Weekly

<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0"> <channel> <title>Golang Weekly</title> <description>A weekly newsletter about the Go programming language</description> <link>https://golangweekly.com/</link> <item> <title>What's coming in Go 1.24</title> <link>https://golangweekly.com/issues/533</link> <description> &lt;table border=0 cellpadding=0 cellspacing=0 align="center" border="0"&gt; &lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt; &lt;div&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt; &lt;td align="left" style="padding-left: 4px; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;p&gt;#​533 — November 26, 2024&lt;/p&gt;&lt;/td&gt; &lt;td align="right" style="padding-right: 4px; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;p&gt;&lt;a href="https://golangweekly.com/link/162706/rss" style=" color: #0099b4;"&gt;Unsub&lt;/a&gt;  |  &lt;a href="https://golangweekly.com/link/162707/rss" style=" color: #0099b4;"&gt;Web Version&lt;/a&gt;&lt;/p&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0; padding-right: 12px; padding-left: 12px;"&gt;&lt;p&gt;Go Weekly&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt; &lt;a href="https://golangweekly.com/link/162709/rss" style=" color: #0099b4;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/myanfq6dhkacspmavpnj.jpg" width="640" style=" line-height: 100%; "&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/162709/rss" title="eli.thegreenplace.net" style=" color: #0099b4; font-size: 1.1em; line-height: 1.4em;"&gt;GoMLX: ML in Go &lt;em&gt;without&lt;/em&gt; Python&lt;/a&gt;&lt;/span&gt; — Eli &lt;a href="https://golangweekly.com/link/162710/rss" style=" color: #0099b4; "&gt;recently wrote&lt;/a&gt; about Go’s suitability as a glue language for calling out to third party machine learning services and Python ‘sidecars’, but could you just do the heavy lifting from Go itself? &lt;a href="https://golangweekly.com/link/162711/rss" style=" color: #0099b4; "&gt;GoMLX&lt;/a&gt; provides one option.&lt;/p&gt; &lt;p&gt;Eli Bendersky &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;span&gt;📊 &lt;/span&gt; &lt;a href="https://golangweekly.com/link/162712/rss" title="docs.google.com" style=" color: #0099b4; font-size: 1.05em;"&gt;What's Coming in Go 1.24&lt;/a&gt;&lt;/span&gt; — A 52-slide deck that goes through language, tooling, and standard library changes coming to Go 1.24 (expected in January or February 2025). There’s quite a bit here, including generic type aliases, weak pointers, and an &lt;a href="https://golangweekly.com/link/162713/rss" style=" color: #0099b4; "&gt;experimental test package for concurrent code.&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Daniel Martí &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt;&lt;p&gt;💡 You may remember &lt;a href="https://golangweekly.com/link/162714/rss" style=" color: #0099b4; font-weight: 600;"&gt;▶️ Daniel's similar talk about Go 1.22&lt;/a&gt; a year ago – when the video for the new talk lands, we'll link to it.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;a href="https://golangweekly.com/link/162708/rss" style=" color: #0099b4; "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/1ea6f5f1.png" width="110" height="110" style="padding-top: 12px; padding-left: 12px; line-height: 100%; "&gt;&lt;/a&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/162708/rss" title="www.ardanlabs.com" style=" color: #0099b4; font-size: 1.05em;"&gt;Go! Unlock Your Tech Potential with Ardan Labs Consulting&lt;/a&gt;&lt;/span&gt; — Struggling with skill gaps, development speed or complex tech challenges? Ardan Labs specializes in Go, Rust, Docker and K8s to accelerate your software development, optimize architecture, and manage tech debt. Let us supercharge your team!&lt;/p&gt; &lt;p&gt;Ardan Labs Consulting &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em; color: #885 !important; padding-top: 1px; padding-right: 4px; padding-left: 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/162715/rss" title="www.dolthub.com" style=" color: #0099b4; font-size: 1.05em;"&gt;Are Go's Generics Simple or Incomplete? A Design Study&lt;/a&gt;&lt;/span&gt; — Some argue that Go’s generic implementation only added complexity to the language, while others disagree. Nick takes us through a complex problem that he struggled to solve with generics, eventually ending up with a solution that works but felt a bit harder than necessary. &lt;a href="https://golangweekly.com/link/162716/rss" style=" color: #0099b4; "&gt;Some commenters on Reddit&lt;/a&gt; felt that his approach was more OO / interface-based than it needed to be, though.&lt;/p&gt; &lt;p&gt;Nick Tobey (DoltHub) &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;▶  &lt;a href="https://golangweekly.com/link/162717/rss" title="www.youtube.com" style=" color: #0099b4; font-size: 1.05em;"&gt;WASI to Go: Write Once, Go Anywhere&lt;/a&gt;&lt;/span&gt; — A talk from the recent &lt;a href="https://golangweekly.com/link/162718/rss" style=" color: #0099b4; "&gt;WASMCon&lt;/a&gt; event exploring Go’s relationship with WebAssembly and how WASM can help ‘Go go anywhere.’ A pretty good primer on the topic as things currently stand.&lt;/p&gt; &lt;p&gt;Zhou and Reddig &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;strong&gt;IN BRIEF:&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt;🖼️ Preslav Rachev's ebook &lt;a href="https://golangweekly.com/link/162719/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;Generative Art in Go&lt;/a&gt; is half-off this week.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;Forget Go &lt;em&gt;versus&lt;/em&gt; Rust, &lt;a href="https://golangweekly.com/link/162720/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;Go and Rust together make a great pair of languages&lt;/a&gt; to know, says John Arundel.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;a href="https://golangweekly.com/link/162721/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;Matteo shows how a simple optimization&lt;/a&gt; sped up one of his dependencies &lt;em&gt;"by 38147125738.8x."&lt;/em&gt;&lt;/p&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/162722/rss" title="newsletter.pragmaticengineer.com" style=" color: #0099b4; font-size: 1.05em;"&gt;Inside Bluesky’s Engineering Culture&lt;/a&gt;&lt;/span&gt; — A writeup from May 2024 that’s perhaps become more relevant with Bluesky’s recent rapid ascent. Go sits at the heart of the social network’s backend.&lt;/p&gt; &lt;p&gt;Gergely Orosz and Elin Nilsson &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;📄 &lt;a href="https://golangweekly.com/link/162723/rss" style=" color: #0099b4; font-weight: 500 !important;"&gt;A Go Production Performance Gotcha with &lt;code&gt;GOMAXPROCS&lt;/code&gt;&lt;/a&gt; – A well understood but oft encountered gotcha when GOMAXPROCS isn’t set. &lt;cite&gt;Chris Battarbee&lt;/cite&gt;&lt;/p&gt; &lt;p&gt;📄 &lt;a href="https://golangweekly.com/link/162724/rss" style=" color: #0099b4; font-weight: 500 !important;"&gt;Investigating a Memory Leak with Pprof&lt;/a&gt; – Commonly trod ground, but well explained. &lt;cite&gt;Aviv Zohari&lt;/cite&gt;&lt;/p&gt; &lt;p&gt;📄 &lt;a href="https://golangweekly.com/link/162725/rss" style=" color: #0099b4; font-weight: 500 !important;"&gt;Testing with Go and Postgres using Ephemeral DBs&lt;/a&gt; &lt;cite&gt;Michael Stapelberg&lt;/cite&gt;&lt;/p&gt; &lt;p&gt;📄 &lt;a href="https://golangweekly.com/link/162726/rss" style=" color: #0099b4; font-weight: 500 !important;"&gt;Getting a Pointer to a Constant in Go&lt;/a&gt; &lt;cite&gt;Xe Iaso&lt;/cite&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0; padding-right: 0; padding-left: 0;"&gt;&lt;p&gt;🛠 Code &amp;amp; Tools&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt; &lt;a href="https://golangweekly.com/link/162727/rss" style=" color: #0099b4;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/bm6pjbifn6ybvemalwyk.jpg" width="640" style=" line-height: 100%; "&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/162727/rss" title="superfile.netlify.app" style=" color: #0099b4; font-size: 1.05em;"&gt;superfile: A Terminal-Based File Manager App&lt;/a&gt;&lt;/span&gt; — Built with Go and Bubble Tea, it combines a visually appealing design with the simplicity of terminal tools, providing a fresh, accessible approach to file management.&lt;/p&gt; &lt;p&gt;Yorukot &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;span&gt;♻︎&lt;/span&gt; &lt;a href="https://golangweekly.com/link/162731/rss" title="github.com" style=" color: #0099b4; font-size: 1.05em;"&gt;recur: Retry a Command with Exponential Backoff and Jitter&lt;/a&gt;&lt;/span&gt; — A Go-powered command line tool for retrying shell based commands in a controlled way until a condition (or success) is met.&lt;/p&gt; &lt;p&gt;D. Bohdan &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/162730/rss" title="workos.com" style=" color: #0099b4; font-size: 1.05em;"&gt;WorkOS: Sell to Enterprises with a Few Lines of Code&lt;/a&gt;&lt;/span&gt; — The modern identity platform for B2B SaaS, offering flexible, easy-to-use APIs to integrate SSO, SCIM, and FGA in minutes instead of months.&lt;/p&gt; &lt;p&gt;WorkOS &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em; color: #885 !important; padding-top: 1px; padding-right: 4px; padding-left: 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/162732/rss" title="github.com" style=" color: #0099b4; font-size: 1.05em;"&gt;Porcupine 1.0: A Fast Linearizability Checker&lt;/a&gt;&lt;/span&gt; — You write a spec for a system in Go, provide a concurrent history, and Porcupine figures out if the history is linearizable with respect to the spec. There’s &lt;a href="https://golangweekly.com/link/162733/rss" style=" color: #0099b4; "&gt;a 2017 blog post&lt;/a&gt; that explains more.&lt;/p&gt; &lt;p&gt;Anish Athalye &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt; &lt;a href="https://golangweekly.com/link/162734/rss" style=" color: #0099b4;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/zrt3xhgl9vskombkbs3y.jpg" width="640" style=" line-height: 100%; "&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/162734/rss" title="github.com" style=" color: #0099b4; font-size: 1.05em;"&gt;Sequin: Human-Readable ANSI Sequences&lt;/a&gt;&lt;/span&gt; — The latest work from the folks at Charm (well known for Bubble Tea, Lip Gloss and other libraries) interprets ANSI sequences into something you can actually understand..&lt;/p&gt; &lt;p&gt;Charm &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;⚙️ &lt;a href="https://golangweekly.com/link/162735/rss" style=" color: #0099b4; font-weight: 500 !important;"&gt;nats-mutex: Distributed Lock Library using NATS JetStream&lt;/a&gt; &lt;cite&gt;Yurii Biurher&lt;/cite&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt;🕒 &lt;a href="https://golangweekly.com/link/162736/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;Carbon 2.5&lt;/a&gt; – Developer friendly way to work with times and dates (&lt;a href="https://golangweekly.com/link/162737/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;examples&lt;/a&gt;).&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;a href="https://golangweekly.com/link/162738/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;Goose 3.23&lt;/a&gt; – Database migration tool. Supports SQL &lt;em&gt;and&lt;/em&gt; Go functions.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;a href="https://golangweekly.com/link/162739/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;GoReleaser 2.4.8&lt;/a&gt; – Build/release binaries for multiple platforms.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;a href="https://golangweekly.com/link/162740/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;Mockery 2.49&lt;/a&gt; – Generate mock implementations of interfaces.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;a href="https://golangweekly.com/link/162741/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;Ginkgo 2.22&lt;/a&gt; – Mature testing framework.&lt;/p&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 0px; padding-left: 0px;"&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;📰 Classifieds&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;📚 Risk mitigation is key to safeguarding your organization's future. &lt;a href="https://golangweekly.com/link/162742/rss" style=" color: #0099b4; font-weight: 500 !important;"&gt;Discover how Temporal enhances reliability and minimizes risk in finserv&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;🤖 Control RAG access with &lt;a href="https://golangweekly.com/link/162743/rss" style=" color: #0099b4; font-weight: 500 !important;"&gt;SpiceDB's fine-grained permissions in Go and open source&lt;/a&gt;.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0; padding-right: 0; padding-left: 0;"&gt;&lt;p&gt;🎁 And a little bonus quote..&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;I saw &lt;a href="https://golangweekly.com/link/162744/rss" style=" color: #0099b4; font-weight: 500 !important;"&gt;this 2020 blog post&lt;/a&gt; by Brad Fitzpatrick the other day and liked an insight he shared about complexity and how Go changed his opinion of it:&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 0px; padding-left: 0px;"&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;"I used to tolerate and expect complexity. Working on Go the past 10 years has changed my perspective, though. I now value simplicity above almost all else and tolerate complexity only when it's well isolated, well documented, well tested, and necessary to make things simpler overall at other layers for most people."&lt;/p&gt; &lt;p&gt;___&lt;br&gt;Brad Fitzpatrick (Go team member 2010-2020)&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;/div&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/table&gt; &lt;img src="https://golangweekly.com/open/533/rss" width="1" height="1" /&gt;</description> <pubDate>Tue, 26 Nov 2024 00:00:00 +0000</pubDate> <guid>https://golangweekly.com/issues/533</guid> </item> <item> <title>A Go-powered MIDI sequencer</title> <link>https://golangweekly.com/issues/532</link> <description> &lt;table border=0 cellpadding=0 cellspacing=0 align="center" border="0"&gt; &lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt; &lt;div&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt; &lt;td align="left" style="padding-left: 4px; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;p&gt;#​532 — November 19, 2024&lt;/p&gt;&lt;/td&gt; &lt;td align="right" style="padding-right: 4px; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;p&gt;&lt;a href="https://golangweekly.com/link/162400/rss" style=" color: #0099b4;"&gt;Unsub&lt;/a&gt;  |  &lt;a href="https://golangweekly.com/link/162401/rss" style=" color: #0099b4;"&gt;Web Version&lt;/a&gt;&lt;/p&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0; padding-right: 12px; padding-left: 12px;"&gt;&lt;p&gt;Go Weekly&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt; &lt;a href="https://golangweekly.com/link/162403/rss" style=" color: #0099b4;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/nktoojmhmsuwkrlb1pdf.jpg" width="640" style=" line-height: 100%; "&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/162403/rss" title="mailpit.axllent.org" style=" color: #0099b4; font-size: 1.1em; line-height: 1.4em;"&gt;Mailpit: Go-Powered Email and SMTP Testing Tool&lt;/a&gt;&lt;/span&gt; — A small, fast, efficient and zero-dependency email testing tool and API for developers. It acts as an SMTP server to which mail can be sent and provides a Web interface to read the mails. And being written in Go, it can be compiled to a single binary and put on whichever server you like. &lt;a href="https://golangweekly.com/link/162404/rss" style=" color: #0099b4; "&gt;GitHub repo.&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Ralph Slooten &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/162405/rss" title="blog.jetbrains.com" style=" color: #0099b4; font-size: 1.05em;"&gt;GoLand 2024.3 Released&lt;/a&gt;&lt;/span&gt; — The popular (commercial) Go IDE gets its latest big update with multiline AI code completion, improved startup times for large projects, a way to look for cyclic imports, and a way to emulate a terminal in the output console.&lt;/p&gt; &lt;p&gt;Ruslan Akhmetzianov (JetBrains) &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;a href="https://golangweekly.com/link/162402/rss" style=" color: #0099b4; "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/f9189b47.png" width="110" height="110" style="padding-top: 12px; padding-left: 12px; line-height: 100%; "&gt;&lt;/a&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/162402/rss" title="blacksmith.sh" style=" color: #0099b4; font-size: 1.05em;"&gt;Run GitHub Actions Up to 2x Faster at Half the Cost&lt;/a&gt;&lt;/span&gt; — Blacksmith runs your GitHub Actions substantially faster by running them on modern gaming CPUs. Integrating Blacksmith is a one-line code change. 100+ companies like Ashby, Superblocks, and Slope use Blacksmith to help developers merge code faster.&lt;/p&gt; &lt;p&gt;Blacksmith &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em; color: #885 !important; padding-top: 1px; padding-right: 4px; padding-left: 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/162406/rss" title="snyk.io" style=" color: #0099b4; font-size: 1.05em;"&gt;Understanding Command Injection Vulnerabilities in Go&lt;/a&gt;&lt;/span&gt; — If you’re calling out to system utilities from your code, there are some basic yet essential precautions you can take to avoid security issues, because you certainly don’t want anyone being able to convince your server to run &lt;code&gt;rm&lt;/code&gt; or worse..&lt;/p&gt; &lt;p&gt;Liran Tal (Snyk) &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;▶  &lt;a href="https://golangweekly.com/link/162407/rss" title="www.youtube.com" style=" color: #0099b4; font-size: 1.05em;"&gt;Developing a Terminal App in Go with Bubble Tea&lt;/a&gt;&lt;/span&gt; — A well produced 50-minute screencast walking through the creation of a practical note-taking command line tool using Go and Charm’s &lt;a href="https://golangweekly.com/link/162408/rss" style=" color: #0099b4; "&gt;Bubble Tea&lt;/a&gt; and &lt;a href="https://golangweekly.com/link/162409/rss" style=" color: #0099b4; "&gt;Lip Gloss&lt;/a&gt; for structure, views, and styling.&lt;/p&gt; &lt;p&gt;Package Main &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;strong&gt;IN BRIEF:&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt;🔥 &lt;a href="https://golangweekly.com/link/162410/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;Pyroscope's Go Playground&lt;/a&gt; lets you run Go code and immediately see &lt;a href="https://golangweekly.com/link/162411/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;a flame graph&lt;/a&gt; for it.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;🎧 On the latest episode of the &lt;em&gt;Go Time&lt;/em&gt; podcast, &lt;a href="https://golangweekly.com/link/162412/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;Anchor's Wesley Beary spoke about the challenges that arose&lt;/a&gt; when his team built a production-ready CLI tool in Go.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;🎤 Brian Kernighan, co-author of &lt;em&gt;The Go Programming Language&lt;/em&gt;, &lt;a href="https://golangweekly.com/link/162413/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;▶️ went on a podcast to discuss his new book&lt;/a&gt; &lt;em&gt;Unix: A History and a Memoir&lt;/em&gt; and what it was like working at Bell Labs.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;a href="https://golangweekly.com/link/162414/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;RIP to Thomas E. Kurtz,&lt;/a&gt; the inventor of the BASIC programming language, who has died aged 96. While not a direct influence on Go, BASIC had a pivotal role in bringing programming to the masses.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;🤖 &lt;a href="https://golangweekly.com/link/162415/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;Ollama&lt;/a&gt; is a popular Go app for running large language models locally. It's just had a major revamp with the addition of lots of Go-powered image processing routines &lt;a href="https://golangweekly.com/link/162416/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;to support Llama 3.2 Vision&lt;/a&gt; for doing things like OCR and Q&amp;amp;A against supplied images.&lt;/p&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/162417/rss" title="victoriametrics.com" style=" color: #0099b4; font-size: 1.05em;"&gt;Go sync.Once is Simple, But How Does It Work?&lt;/a&gt;&lt;/span&gt; — &lt;em&gt;“The &lt;code&gt;sync.Once&lt;/code&gt; is probably the easiest sync primitive to use, but there’s more under the hood than you might think..”&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Phuong Le &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/162418/rss" title="abenezer.org" style=" color: #0099b4; font-size: 1.05em;"&gt;Encountering &lt;em&gt;Hyrum's Law&lt;/em&gt; in Go&lt;/a&gt;&lt;/span&gt; — When the author encountered an intriguing comment in Go’s codebase warning others to not change some text due to “Hyrum’s Law”, he &lt;em&gt;had&lt;/em&gt; to find out what it was all about.&lt;/p&gt; &lt;p&gt;Abenezer Belachew &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;📄 &lt;a href="https://golangweekly.com/link/162419/rss" style=" color: #0099b4; font-weight: 500 !important;"&gt;Compiling a Go Program Into a Native Binary for &lt;em&gt;Nintendo Switch&lt;/em&gt;&lt;/a&gt; – Not new, but somehow I missed it at the time, but it’s interesting to see the details. &lt;cite&gt;Hajime Hoshi (Ebitengine)&lt;/cite&gt;&lt;/p&gt; &lt;p&gt;📄 &lt;a href="https://golangweekly.com/link/162420/rss" style=" color: #0099b4; font-weight: 500 !important;"&gt;The Go Module Proxy and Forcing Go to Actually Update Module Versions&lt;/a&gt; &lt;cite&gt;Chris Siebenmann&lt;/cite&gt;&lt;/p&gt; &lt;p&gt;📄 &lt;a href="https://golangweekly.com/link/162421/rss" style=" color: #0099b4; font-weight: 500 !important;"&gt;Migrating from Prisma to sqlc for Better Performance&lt;/a&gt; &lt;cite&gt;Alexander Belanger&lt;/cite&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0; padding-right: 0; padding-left: 0;"&gt;&lt;p&gt;🛠 Code &amp;amp; Tools&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt; &lt;a href="https://golangweekly.com/link/162422/rss" style=" color: #0099b4;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/wwtwadjyqrauezubsr5e.jpg" width="640" style=" line-height: 100%; "&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/162422/rss" title="empr.cl" style=" color: #0099b4; font-size: 1.05em;"&gt;Signls: A Non-Linear, Generative MIDI Sequencer&lt;/a&gt;&lt;/span&gt; — If you like noodling with music, you’ll enjoy this. It’s a Go-powered MIDI sequencer that runs in the terminal (cross-platform) and lets you create dynamic, generative music that evolves and changes over time. The author also created &lt;a href="https://golangweekly.com/link/162423/rss" style=" color: #0099b4; "&gt;Sektron&lt;/a&gt;, a Go-powered MIDI step sequencer. &lt;a href="https://golangweekly.com/link/162424/rss" style=" color: #0099b4; "&gt;GitHub repo.&lt;/a&gt;&lt;/p&gt; &lt;p&gt;emprcl &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/162425/rss" title="workos.com" style=" color: #0099b4; font-size: 1.05em;"&gt;WorkOS: Sell to Enterprises with a Few Lines of Code&lt;/a&gt;&lt;/span&gt; — The modern identity platform for B2B SaaS, offering flexible, easy-to-use APIs to integrate SSO, SCIM, and FGA in minutes instead of months.&lt;/p&gt; &lt;p&gt;WorkOS &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em; color: #885 !important; padding-top: 1px; padding-right: 4px; padding-left: 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/162426/rss" title="github.com" style=" color: #0099b4; font-size: 1.05em;"&gt;Act: Run Your GitHub Actions Locally&lt;/a&gt;&lt;/span&gt; — Run &lt;code&gt;act&lt;/code&gt; and it looks at your repo’s GitHub Actions, uses Docker to grab the necessary images, and runs the tasks locally.&lt;/p&gt; &lt;p&gt;Nektos &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/162427/rss" title="www.git-town.com" style=" color: #0099b4; font-size: 1.05em;"&gt;Git Town: Extra Commands for More Structured Git Usage&lt;/a&gt;&lt;/span&gt; — Provides additional &lt;code&gt;git&lt;/code&gt; commands to automate the creation, synchronization, shipping, and cleanup of branches. Compatible with popular workflows, mono-repos, and trunk-based development. &lt;a href="https://golangweekly.com/link/162428/rss" style=" color: #0099b4; "&gt;GitHub repo.&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Git Town Team &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/162429/rss" title="github.com" style=" color: #0099b4; font-size: 1.05em;"&gt;gosax: Libary for XML SAX (Simple API for XML) Parsing&lt;/a&gt;&lt;/span&gt; — A read-only XML parsing library focused on being ‘efficient and memory-conscious.’&lt;/p&gt; &lt;p&gt;Nao Yonashiro &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt;&lt;a href="https://golangweekly.com/link/162430/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;Go Blueprint 0.9&lt;/a&gt; – Streamline the initialization of new Go projects.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;a href="https://golangweekly.com/link/162431/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;Listmonk 4.1&lt;/a&gt; – Self hosted email newsletter system (&lt;a href="https://golangweekly.com/link/162432/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;homepage&lt;/a&gt;).&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;a href="https://golangweekly.com/link/162433/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;goshs 1.0&lt;/a&gt; – Imagine Python's &lt;code&gt;SimpleHTTPServer&lt;/code&gt; but in Go.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;a href="https://golangweekly.com/link/162434/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;html-to-markdown 2.2&lt;/a&gt; – Tool to convert HTML into clean Markdown.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;a href="https://golangweekly.com/link/162435/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;validator 10.23&lt;/a&gt; – Value validations for structs and fields based on tags.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;🖼️ &lt;a href="https://golangweekly.com/link/162436/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;avif 0.4.2&lt;/a&gt; – AVIF image format encoder/decoder.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;🖼️ &lt;a href="https://golangweekly.com/link/162437/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;jpegli 0.3.3&lt;/a&gt; – JPEG image format encoder/decoder.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;a href="https://golangweekly.com/link/162438/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;Mockery 2.48&lt;/a&gt; – Generate mocks for interfaces.&lt;/p&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 0px; padding-left: 0px;"&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;📰 Classifieds&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;🤖 Control RAG access with &lt;a href="https://golangweekly.com/link/162439/rss" style=" color: #0099b4; font-weight: 500 !important;"&gt;SpiceDB's fine-grained permissions in Go and open source&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;a href="https://golangweekly.com/link/162440/rss" style=" color: #0099b4; font-weight: 500 !important;"&gt;Hookdeck&lt;/a&gt;: An alternative to Amazon API Gateway + Lambda + SQS. With local dev, debugging, and observability built-in.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;/div&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/table&gt; &lt;img src="https://golangweekly.com/open/532/rss" width="1" height="1" /&gt;</description> <pubDate>Tue, 19 Nov 2024 00:00:00 +0000</pubDate> <guid>https://golangweekly.com/issues/532</guid> </item> <item> <title>A very demure, very mindful issue</title> <link>https://golangweekly.com/issues/531</link> <description> &lt;table border=0 cellpadding=0 cellspacing=0 align="center" border="0"&gt; &lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt; &lt;div&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt; &lt;td align="left" style="padding-left: 4px; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;p&gt;#​531 — November 12, 2024&lt;/p&gt;&lt;/td&gt; &lt;td align="right" style="padding-right: 4px; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;p&gt;&lt;a href="https://golangweekly.com/link/162072/rss" style=" color: #0099b4;"&gt;Unsub&lt;/a&gt;  |  &lt;a href="https://golangweekly.com/link/162073/rss" style=" color: #0099b4;"&gt;Web Version&lt;/a&gt;&lt;/p&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0; padding-right: 12px; padding-left: 12px;"&gt;&lt;p&gt;Go Weekly&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt; &lt;a href="https://golangweekly.com/link/162075/rss" style=" color: #0099b4;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/q39wwjnltirt5jecgfgo.jpg" width="640" style=" line-height: 100%; "&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/162075/rss" title="go.dev" style=" color: #0099b4; font-size: 1.1em; line-height: 1.4em;"&gt;Happy Birthday, Go! Go Turns 15&lt;/a&gt;&lt;/span&gt; — Grab a slice of cake, Go has celebrated its latest anniversary. Austin reflects on what Go’s latest year has brought to the language and what the ongoing priorities for the core team are.&lt;/p&gt; &lt;p&gt;Austin Clements &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/162076/rss" title="github.com" style=" color: #0099b4; font-size: 1.05em;"&gt;Proposal: Add Region-Based Memory Management to Go&lt;/a&gt;&lt;/span&gt; — If you have a long &lt;em&gt;memory&lt;/em&gt; you might recall an indefinitely stalled proposal for &lt;a href="https://golangweekly.com/link/162077/rss" style=" color: #0099b4; "&gt;adding memory arenas to Go.&lt;/a&gt; This new proposal comes up with a differently scoped alternative, based around &lt;em&gt;regions&lt;/em&gt;, and has attracted a lot of comments both in support of and against the idea.&lt;/p&gt; &lt;p&gt;Michael Knyszek &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;a href="https://golangweekly.com/link/162074/rss" style=" color: #0099b4; "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/2d45ce7c.png" width="150" height="150" style="padding-top: 12px; padding-left: 12px; line-height: 100%; "&gt;&lt;/a&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/162074/rss" title="frontendmasters.com" style=" color: #0099b4; font-size: 1.05em;"&gt;Polyglot Programming: TypeScript, Go, &amp;amp; Rust&lt;/a&gt;&lt;/span&gt; — A mind-bending tutorial journey about programming side-by-side in these three languages. This detailed video course shares how to get the most out of this multi-language approach, specifically by implementing a fully-unit tested CLI app and comparing the differences.&lt;/p&gt; &lt;p&gt;Frontend Masters &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em; color: #885 !important; padding-top: 1px; padding-right: 4px; padding-left: 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;span&gt;👀&lt;/span&gt; &lt;a href="https://golangweekly.com/link/162078/rss" title="github.com" style=" color: #0099b4; font-size: 1.05em;"&gt;wasmVision: A Way to Get &lt;em&gt;Go-&lt;/em&gt;ing with Computer Vision&lt;/a&gt;&lt;/span&gt; — Fresh from the genius behind &lt;a href="https://golangweekly.com/link/162079/rss" style=" color: #0099b4; "&gt;TinyGo&lt;/a&gt; and &lt;a href="https://golangweekly.com/link/162080/rss" style=" color: #0099b4; "&gt;GoCV&lt;/a&gt; comes a high-performance computer vision processing engine you can customize and extend with WebAssembly (which you can generate with TinyGo – or Rust or C, if you're so inclined).&lt;/p&gt; &lt;p&gt;The Hybrid Group &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/162081/rss" title="www.dolthub.com" style=" color: #0099b4; font-size: 1.05em;"&gt;&lt;code&gt;fmt.Sprintf&lt;/code&gt; vs String Concat&lt;/a&gt;&lt;/span&gt; — While code using &lt;code&gt;fmt.Sprintf&lt;/code&gt; might look better-structured, simple string concatenation (+) proves to be somewhat faster. Why? Max digs into how &lt;code&gt;fmt.Sprintf&lt;/code&gt; works under the hood.&lt;/p&gt; &lt;p&gt;Max Hoffman &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;strong&gt;IN BRIEF:&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt;&lt;a href="https://golangweekly.com/link/162082/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;Go 1.23.3&lt;/a&gt; has been released – a very minor bugfix release. Fingers crossed we also get the decidedly &lt;em&gt;euarithmous&lt;/em&gt; Go &lt;strong&gt;1.23.4&lt;/strong&gt; next.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;Matt Boyle has teamed up with JetBrains to offer a free, online &lt;a href="https://golangweekly.com/link/162083/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;&lt;em&gt;Mastering Go with GoLand'&lt;/em&gt; course.&lt;/a&gt; If you complete it, you even get a year's license, apparently.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;A mere tidbit from Julia Evans but if you haven't tried Go's cross-compiling support you might realize &lt;a href="https://golangweekly.com/link/162084/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;just how easy it is.&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/162085/rss" title="victoriametrics.com" style=" color: #0099b4; font-size: 1.05em;"&gt;Go Runtime Finalizer and Keep Alive&lt;/a&gt;&lt;/span&gt; — A look into Go’s &lt;code&gt;runtime.SetFinalizer&lt;/code&gt; and &lt;code&gt;runtime.KeepAlive&lt;/code&gt; APIs, two advanced features that have some interesting quirks and should be used cautiously. Finalizers are notoriously problematic (and may even &lt;a href="https://golangweekly.com/link/162086/rss" style=" color: #0099b4; "&gt;be deprecated&lt;/a&gt; one day) while KeepAlive is easier to grok but will stop objects from being collected.&lt;/p&gt; &lt;p&gt;Phuong Le (VictoriaMetrics) &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/162087/rss" title="jitesh117.github.io" style=" color: #0099b4; font-size: 1.05em;"&gt;Creating a 'Brainrot' Language Server in Go&lt;/a&gt;&lt;/span&gt; — So-called ‘brainrot’ is a mishmash of next generation slang and memes. Follow along with this tutorial as the rizzler Jitesh creates a bussin' basic LSP server – no cap. Perhaps you can put the lessons learnt to more productive use? 😅&lt;/p&gt; &lt;p&gt;Jitesh Kumar Sahoo &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt;&lt;p&gt;🤞 And let's hope that's the first and last time we use Gen Alpha slang here..&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/162088/rss" title="eli.thegreenplace.net" style=" color: #0099b4; font-size: 1.05em;"&gt;Machine Learning in Go with a Python Sidecar&lt;/a&gt;&lt;/span&gt; — While Python currently holds the ML crown when it comes to the diversity of projects and examples, Go is a great ‘glue’ language for working with ML and LLMs and tying things together, even if it involves talking to Python-based projects.&lt;/p&gt; &lt;p&gt;Eli Bendersky &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0; padding-right: 0; padding-left: 0;"&gt;&lt;p&gt;🛠 Code &amp;amp; Tools&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt; &lt;a href="https://golangweekly.com/link/162089/rss" style=" color: #0099b4;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/i5oykh2plnkljq3azy0h.jpg" width="640" style=" line-height: 100%; "&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;span&gt;🕒&lt;/span&gt; &lt;a href="https://golangweekly.com/link/162089/rss" title="github.com" style=" color: #0099b4; font-size: 1.05em;"&gt;When 1.1: Natural Language Date/Time Parser&lt;/a&gt;&lt;/span&gt; — A very long standing, and useful, library. The idea is simple: given a string like &lt;em&gt;“tonight at 11:10 pm”&lt;/em&gt; or &lt;em&gt;“next wednesday at 4:20 a.m”&lt;/em&gt;, you get the date/time you expect. Has rules for English, Portuguese, Chinese, Russian, and Dutch out of the box.&lt;/p&gt; &lt;p&gt;Oleg Lebedev &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/162090/rss" title="html-to-markdown.com" style=" color: #0099b4; font-size: 1.05em;"&gt;html-to-markdown 2.1: Convert HTML to Markdown&lt;/a&gt;&lt;/span&gt; — Actually parses HTML rather than just using regexes so can handle a lot of interesting edge cases. &lt;a href="https://golangweekly.com/link/162091/rss" style=" color: #0099b4; "&gt;v2 is a total rewrite&lt;/a&gt; and boasts improved accuracy. It can be used both as a CLI tool or Go library. &lt;a href="https://golangweekly.com/link/162092/rss" style=" color: #0099b4; "&gt;GitHub repo.&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Johannes Kaufmann &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/162093/rss" title="www.warpstream.com" style=" color: #0099b4; font-size: 1.05em;"&gt;Reduce Your Apache Kafka Costs by 80+%&lt;/a&gt;&lt;/span&gt; — Kafka with no local disks or interzone fees, zero ops auto-scaling and in your cloud with no cross-account access.&lt;/p&gt; &lt;p&gt;WarpStream &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em; color: #885 !important; padding-top: 1px; padding-right: 4px; padding-left: 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/162094/rss" title="github.com" style=" color: #0099b4; font-size: 1.05em;"&gt;Yokai: A Modular, Observable Go Framework for Backend Apps&lt;/a&gt;&lt;/span&gt; — A modular framework for production-grade Go backends that handles observability, configuration, and dependency wiring out of the box, meaning less infrastructure boilerplate for you to write.&lt;/p&gt; &lt;p&gt;Ankorstore &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/162095/rss" title="miniflux.app" style=" color: #0099b4; font-size: 1.05em;"&gt;Miniflux 2.2.3: Minimalist and Opinionated Feed Reader&lt;/a&gt;&lt;/span&gt; — So minimalist that no ORM or framework is used (just Postgres) and only the most essential JavaScript. &lt;a href="https://golangweekly.com/link/162096/rss" style=" color: #0099b4; "&gt;GitHub repo.&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Frédéric Guillot &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 0px; padding-left: 0px;"&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;📰 Classifieds&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;10x cheaper (and faster!) GitHub Actions with &lt;a href="https://golangweekly.com/link/162097/rss" style=" color: #0099b4; font-weight: 500 !important;"&gt;runs-on.com&lt;/a&gt;. Easily self-hosted on AWS. Perfect alternative to ARC or home-made solutions.&lt;/p&gt; &lt;p&gt;Legacy permissions systems can’t keep up with AI. &lt;a href="https://golangweekly.com/link/162098/rss" style=" color: #0099b4; font-weight: 500 !important;"&gt;Meet SpiceDB&lt;/a&gt;, the modern authorization system inspired by Zanzibar, in Go and Open Source.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt;🧋 &lt;a href="https://golangweekly.com/link/162099/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;Bubble Tea 1.2&lt;/a&gt; – A popular Elm-inspired functional and stateful way to build terminal apps. Now with much faster rendering.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;a href="https://golangweekly.com/link/162100/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;k6 0.55&lt;/a&gt; – Modern Go + JavaScript-powered load testing tool. (&lt;a href="https://golangweekly.com/link/162101/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;Homepage.&lt;/a&gt;)&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;a href="https://golangweekly.com/link/162102/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;Task 3.40&lt;/a&gt; – Imagine if &lt;code&gt;make&lt;/code&gt; were reimplemented in Go. (&lt;a href="https://golangweekly.com/link/162103/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;Homepage.&lt;/a&gt;)&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;a href="https://golangweekly.com/link/162104/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;BadgerDB 4.4&lt;/a&gt; – Embeddable, fast pure-Go key-value DB.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;a href="https://golangweekly.com/link/162105/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;gRPC-Go 1.68&lt;/a&gt; – Go implementation of gRPC for HTTP/2 based RPC.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;a href="https://golangweekly.com/link/162106/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;errorx 1.2&lt;/a&gt; – Comprehensive error handling library.&lt;/p&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;/div&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/table&gt; &lt;img src="https://golangweekly.com/open/531/rss" width="1" height="1" /&gt;</description> <pubDate>Tue, 12 Nov 2024 00:00:00 +0000</pubDate> <guid>https://golangweekly.com/issues/531</guid> </item> <item> <title>Tools for writing secure Go code</title> <link>https://golangweekly.com/issues/530</link> <description> &lt;table border=0 cellpadding=0 cellspacing=0 align="center" border="0"&gt; &lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt; &lt;div&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt; &lt;td align="left" style="padding-left: 4px; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;p&gt;#​530 — November 5, 2024&lt;/p&gt;&lt;/td&gt; &lt;td align="right" style="padding-right: 4px; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;p&gt;&lt;a href="https://golangweekly.com/link/161809/rss" style=" color: #0099b4;"&gt;Unsub&lt;/a&gt;  |  &lt;a href="https://golangweekly.com/link/161810/rss" style=" color: #0099b4;"&gt;Web Version&lt;/a&gt;&lt;/p&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0; padding-right: 12px; padding-left: 12px;"&gt;&lt;p&gt;Go Weekly&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt; &lt;a href="https://golangweekly.com/link/161812/rss" style=" color: #0099b4;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/z9w25ok6srswuynmlu2f.jpg" width="640" style=" line-height: 100%; "&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/161812/rss" title="jarosz.dev" style=" color: #0099b4; font-size: 1.1em; line-height: 1.4em;"&gt;Writing Secure Go Code&lt;/a&gt;&lt;/span&gt; — A handy article rounding up a variety of resources and techniques to keep in mind in order to write more robust and secure Go apps, including staying up to date with your Go version, leaning on Go’s tools like &lt;code&gt;go vet&lt;/code&gt;, and scanning your code for known vulnerabilities.&lt;/p&gt; &lt;p&gt;Jakub Jarosz &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt;&lt;p&gt;🗣️ This post also led to &lt;a href="https://golangweekly.com/link/161813/rss" style=" color: #0099b4; font-weight: 600;"&gt;an extensive discussion on Hacker News.&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;a href="https://golangweekly.com/link/161811/rss" style=" color: #0099b4; "&gt;&lt;img src="https://copm.s3.amazonaws.com/3261fd07.png" width="140" height="140" style="padding-top: 12px; padding-left: 12px; line-height: 100%; "&gt;&lt;/a&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/161811/rss" title="events.zoom.us" style=" color: #0099b4; font-size: 1.05em;"&gt;How to Compare Postgres EXPLAIN Plans &amp;amp; Tune Slow Queries&lt;/a&gt;&lt;/span&gt; — Are slow Postgres queries impacting your Go app performance? Join this webinar to learn how to diagnose and tune them effectively. We'll use pganalyze to walk through how to compare plans &amp;amp; debug common scenarios like inefficient nested loops &amp;amp; missing indexes.&lt;/p&gt; &lt;p&gt;pganalyze &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em; color: #885 !important; padding-top: 1px; padding-right: 4px; padding-left: 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/161814/rss" title="medium.com" style=" color: #0099b4; font-size: 1.05em;"&gt;Checking the Top 10 Million Web Sites with Go&lt;/a&gt;&lt;/span&gt; — Actually titled &lt;em&gt;‘27.6% of the Top 10 Million Sites are Dead’&lt;/em&gt;, I felt this is really more a look into using Go to do basic scraping at scale. Redis was coupled with Go (along with a lot of hardware) to perform the task in just ten minutes (~17k requests per second). &lt;a href="https://golangweekly.com/link/161815/rss" style=" color: #0099b4; "&gt;The source&lt;/a&gt; has been made public.&lt;/p&gt; &lt;p&gt;Tony Wang &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/161816/rss" title="eli.thegreenplace.net" style=" color: #0099b4; font-size: 1.05em;"&gt;Ranging Over Functions in Go 1.23&lt;/a&gt;&lt;/span&gt; — This post discusses several examples of using the new range-over functionality in 1.23, including simple linear iterators, recursive iterators, and a brief word on push vs pull iteration.&lt;/p&gt; &lt;p&gt;Eli Bendersky &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt; &lt;a href="https://golangweekly.com/link/161817/rss" style=" color: #0099b4;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/qe0rjp3l7zpkcp8a1prr.jpg" width="640" style=" line-height: 100%; "&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;▶  &lt;a href="https://golangweekly.com/link/161817/rss" title="www.youtube.com" style=" color: #0099b4; font-size: 1.05em;"&gt;The Business of Go&lt;/a&gt;&lt;/span&gt; — I often skip high level talks to focus on technical ones, but &lt;a href="https://golangweekly.com/link/161818/rss" style=" color: #0099b4; "&gt;Matt Boyle encouraged me&lt;/a&gt; to watch this, and it’s an interesting look at the processes of the Go team and how Go gets treated as a &lt;em&gt;product&lt;/em&gt;, rather than just a language. Cameron demonstrates why Go continues to grow and thrive in a space where it’s easy for technologies to go stale.&lt;/p&gt; &lt;p&gt;Cameron Balahan (Google) &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/161819/rss" title="blog.jetbrains.com" style=" color: #0099b4; font-size: 1.05em;"&gt;Creating a Full-Stack App with Go and React&lt;/a&gt;&lt;/span&gt; — A look at bringing together the best of the front end and back end into a single app, a contrived ‘Go Eats’ food ordering service.&lt;/p&gt; &lt;p&gt;Mukul Mantosh (JetBrains) &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/161820/rss" title="bitfieldconsulting.com" style=" color: #0099b4; font-size: 1.05em;"&gt;Constraints in Go&lt;/a&gt;&lt;/span&gt; — John has finished his 4-part series on generics (which &lt;a href="https://golangweekly.com/link/161821/rss" style=" color: #0099b4; "&gt;started here&lt;/a&gt;) with a look at placing constraints on types.&lt;/p&gt; &lt;p&gt;John Arundel &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/161822/rss" title="rybicki.io" style=" color: #0099b4; font-size: 1.05em;"&gt;Building Thread-Safe Abstractions in Java vs Go&lt;/a&gt;&lt;/span&gt; — A look at translating pieces of the &lt;em&gt;SimpleDB&lt;/em&gt; implementation from Java into Go, and differences between the concurrency and synchronization primitives the languages provide.&lt;/p&gt; &lt;p&gt;Chris Rybicki &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/161823/rss" title="dub.sh" style=" color: #0099b4; font-size: 1.05em;"&gt;The First Newsletter Dedicated to Product Engineers&lt;/a&gt;&lt;/span&gt; — Learn the skills and strategies the new generation of product engineers need to succeed.&lt;/p&gt; &lt;p&gt;PostHog &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em; color: #885 !important; padding-top: 1px; padding-right: 4px; padding-left: 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;📄 &lt;a href="https://golangweekly.com/link/161824/rss" style=" color: #0099b4; font-weight: 500 !important;"&gt;Writing Integration Tests for a Go CLI App&lt;/a&gt; – A look at Luca’s reasonably simple approach involving &lt;code&gt;make&lt;/code&gt;, golden files and table driven tests. &lt;cite&gt;Luca Pette&lt;/cite&gt;&lt;/p&gt; &lt;p&gt;📄 &lt;a href="https://golangweekly.com/link/161825/rss" style=" color: #0099b4; font-weight: 500 !important;"&gt;How to Build Smaller Container Images: Docker Multi-Stage Builds&lt;/a&gt; – Including &lt;em&gt;“How NOT to organize a Go application’s Dockerfile”.&lt;/em&gt; &lt;cite&gt;Ivan Velichko&lt;/cite&gt;&lt;/p&gt; &lt;p&gt;📄 &lt;a href="https://golangweekly.com/link/161826/rss" style=" color: #0099b4; font-weight: 500 !important;"&gt;Why is Go's Compilation Speed So Fast?&lt;/a&gt; &lt;cite&gt;Wild Thorn&lt;/cite&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0; padding-right: 0; padding-left: 0;"&gt;&lt;p&gt;🛠 Code &amp;amp; Tools&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt; &lt;a href="https://golangweekly.com/link/161827/rss" style=" color: #0099b4;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/u9r3oiwlw4azixvsgnvs.jpg" width="640" style=" line-height: 100%; "&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/161827/rss" title="github.com" style=" color: #0099b4; font-size: 1.05em;"&gt;vgt: The 'Missing Tool' for Visualizing Go Tests?&lt;/a&gt;&lt;/span&gt; — A browser-based tool for visualizing Go test results – described as being helpful for understanding the parallelism of tests along with identifying slow ones.&lt;/p&gt; &lt;p&gt;Robert Laszczak &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/161828/rss" title="github.com" style=" color: #0099b4; font-size: 1.05em;"&gt;jsony: A 'Blazing Fast', Safe JSON Serialization Library&lt;/a&gt;&lt;/span&gt; — Pure Go, reflection free, and faster than the stdlib approach, but you do have to lay everything out just right.&lt;/p&gt; &lt;p&gt;Orsinium Labs &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/161829/rss" title="www.pgflo.io" style=" color: #0099b4; font-size: 1.05em;"&gt;pg_flo: Stream, Transform, and Route Postgres Data in Real-time&lt;/a&gt;&lt;/span&gt; — Offers a set of filters and transformations that can make moving data between, say, production and staging databases simple using one of two modes: copy-and-stream or stream-only. Uses NATS and Postgres’s replication.&lt;/p&gt; &lt;p&gt;Shayon Mukherjee &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.2em !important; color: #000;"&gt;&lt;a href="https://golangweekly.com/link/161830/rss" title="github.com" style=" color: #0099b4; font-size: 1.05em;"&gt;Neotest: A Framework for Interacting with Tests from NeoVim&lt;/a&gt;&lt;/span&gt; — If you’re a NeoVim user, this is for you. It’s written in Lua but &lt;a href="https://golangweekly.com/link/161831/rss" style=" color: #0099b4; "&gt;neotest-golang&lt;/a&gt; extends it to support working with Go-based tests.&lt;/p&gt; &lt;p&gt;Rónán Carrigan et al. &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 0px; padding-left: 0px;"&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;📰 Classifieds&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;p&gt;&lt;a href="https://golangweekly.com/link/161832/rss" style=" color: #0099b4; font-weight: 500 !important;"&gt;Open Source Authorization&lt;/a&gt;: Zanzibar-inspired permissions, built for Go.&lt;/p&gt; &lt;p&gt;&lt;a href="https://golangweekly.com/link/161833/rss" style=" color: #0099b4; font-weight: 500 !important;"&gt;How Google handles authorization at scale&lt;/a&gt;. A technical comparison of Google's Relationship-based authz system and Oso's Authz as a Service.&lt;/p&gt; &lt;p&gt;🪝&lt;a href="https://golangweekly.com/link/161834/rss" style=" color: #0099b4; font-weight: 500 !important;"&gt;Hookdeck&lt;/a&gt;: The Amazon EventBridge Alternative. Receive, authenticate, transform, filter, route, and send messages across your EDAs.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; padding-top: 0px; padding-right: 15px; padding-left: 15px;"&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt;☸︎ &lt;a href="https://golangweekly.com/link/161835/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;Watermill 1.4&lt;/a&gt; – Library for building message/event-driven apps: &lt;em&gt;"Think of it like an HTTP router but for messages."&lt;/em&gt;&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;💋 &lt;a href="https://golangweekly.com/link/161836/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;Charm Lip Gloss 1.0&lt;/a&gt; – Style definitions for nice terminal layouts. An 'honorary' 1.0 release indicating the project is now stable.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;🤖 &lt;a href="https://golangweekly.com/link/161837/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;Gobot 2.4&lt;/a&gt; – The robotics / drones / IoT framework. Now supporting newer versions of Go.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;a href="https://golangweekly.com/link/161838/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;sqlrange 1.0&lt;/a&gt; – Use Go 1.23's range functions with &lt;code&gt;database/sql&lt;/code&gt;.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;a href="https://golangweekly.com/link/161839/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;Slack Dumper 2.6&lt;/a&gt; – Generate Slack exports without admin privileges.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;a href="https://golangweekly.com/link/161840/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;Asynq 0.25&lt;/a&gt; – Reliable, efficient Redis-backed distributed task queue.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;a href="https://golangweekly.com/link/161841/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;fsnotify 1.8&lt;/a&gt; – Cross-platform file system notifications in Go.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;a href="https://golangweekly.com/link/161842/rss" style=" color: #0099b4; font-weight: 500 !important; "&gt;Ginkgo 2.21&lt;/a&gt; – Mature testing framework.&lt;/p&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; "&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;/div&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/table&gt; &lt;img src="https://golangweekly.com/open/530/rss" width="1" height="1" /&gt;</description> <pubDate>Tue, 5 Nov 2024 00:00:00 +0000</pubDate> <guid>https://golangweekly.com/issues/530</guid> </item> </channel> </rss>