CINXE.COM

Golang Weekly Issue 475: September 12, 2023

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Golang Weekly Issue 475: September 12, 2023</title> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="stylesheet" href="/css/app.css"> <link rel="alternate" type="application/rss+xml" title="Golang Weekly" href="/rss/"> <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&display=swap" rel="stylesheet"> <link rel="shortcut icon" href="/favicon.png"> <meta name="facebook-domain-verification" content="lml32j8e8q00yrgpg4hs968ah31mxv" /> </head> <body class="go dom dom-go issues 475 issue go issue"> <header class="contained"> <nav> <div class="sitename" style="cursor: pointer" onclick="window.location.href='/'"><a href="/">Golang Weekly</a></div> <div class="items"> <a href="/issues" class="issues">Archives</a><span class="divider">|</span> <a href="/latest" class="latest">Latest</a><span class="nomobile"><span class="divider">|</span> <a href="/rss/">RSS</a></span> </div> </nav> </header> <main> <section class="contained"> <div class="nomobile"> <div class="subscribe_box" class=""> <form class="subscribe" action="/subscribe" method="POST"> <input type="email" placeholder="Want to subscribe? Enter your address here" class="email" name="yemail" id="email" /><button class="awesome" type="submit">Subscribe now &raquo;</button> <div class="smallprint">Easy to unsubscribe at any time. Your e-mail address <a href="https://cooperpress.com/spam.html">is safe</a> &mdash; here's <a href="https://cooperpress.com/legal/privacy/">our privacy policy.</a></div> <input type="hidden" name="_csrf" value="NJfTv1a6ePwtjs_TXDU1gnSDl7an2hYsCqp8HLOReQc" /> </form> </div> </div> <div class="pager"> <div class="prev"> <a href="/issues/474">&laquo; Prev</a> </div> <div class="center"> <!-- Issue 475 --> </div> <div class="next"> <a href="/issues/476">Next &raquo;</a> </div> </div> <div class="issue-html"> <!--[if (gte mso 9)|(IE)]> <table cellpadding="0" cellspacing="0" align="center" bgcolor="#ffffff" width="600"><tr><td valign="top" style="width: 600px;" bgcolor="#ffffff"><![endif]--> <table align="center" border="0" cellpadding="0" cellspacing="0" id="main" width="100%" style="table-layout: fixed; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; max-width: 600px; height: 100% !important; direction: ltr; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"> <tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse;"> <div id="content"> <!-- left/right splitbar --> <table class="el-splitbar" width="100%" cellpadding="0" cellspacing="0" style="border-collapse: collapse;"><tr> <td width="50%" align="left" style="padding-left: 4px; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse;"><p style="font-size: 12px; color: #999999; text-transform: uppercase; line-height: 1.0em; margin-top: 0.8em; margin-bottom: 0.8em;">#​475 — September 12, 2023</p></td> <td width="50%" align="right" style="padding-right: 4px; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse;"><p style="font-size: 12px; text-transform: uppercase; line-height: 1.0em; margin-top: 0.8em; margin-bottom: 0.8em;"><a target="_blank" href="https://golangweekly.com/leave/*%7CUID%7C*" style="text-decoration: none; color: #0099b4;">Unsub</a>  |  <a target="_blank" href="https://golangweekly.com/issues/475" style="text-decoration: none; color: #0099b4;">Web Version</a></p></td> </tr></table> <table class="norss" id="together" width="100%" align="center" style="text-align: center; border-collapse: collapse; margin-top: 0; margin-right: 0; margin-bottom: 0; margin-left: 0;"> <tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; margin-top: 0; margin-right: 0; margin-bottom: 0; margin-left: 0; padding-top: 0; padding-right: 0; padding-bottom: 0; padding-left: 0;"> <table align="center" style="margin-top: 4px; margin-bottom: 4px; border-collapse: collapse;"> <tr> <td style="vertical-align: middle; text-align: right; text-transform: uppercase; letter-spacing: -0.2px; font-weight: 500; color: #222; font-size: 0.9em; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; line-height: 1.48em; border-collapse: collapse;">Together with </td> <td style="vertical-align: middle; text-align: left; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse;"> <a target="_blank" href="https://www.ardanlabs.com/consulting/?utm_source=cooperpress" style="outline: none; text-decoration: none; color: #0099b4; border-top-width: 0; border-right-width: 0; border-bottom-width: 0; border-left-width: 0;"> <img src="https://res.cloudinary.com/cpress/image/upload/e_make_transparent/co_white,e_outline:7,q_auto/uf5bdgdgdbgcbdrzi6r7.png" style="max-width: 110px; outline: none; height: auto; text-decoration: none; line-height: 100%; border-top-width: 0; border-right-width: 0; border-bottom-width: 0; border-left-width: 0;" width="110" alt="Ardan Labs"> </a> </td> </tr> </table> </td></tr> </table> <!-- masthead --> <table width="100%" cellpadding="0" cellspacing="0" style="background-color: #6cd7f2; text-align: center; color: #003322; border-collapse: collapse;" class="el-masthead"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0; padding-right: 12px; padding-bottom: 0; padding-left: 12px;"><p style="font-size: 1.8em; font-weight: 600; line-height: 1.0em; margin-top: 0.8em; margin-bottom: 0.8em;">Go Weekly</p></td></tr></table> <table width="100%" class="el-fullwidthimage " cellpadding="0" cellspacing="0" style="border-collapse: collapse;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse;"> <a target="_blank" href="https://go.dev/blog/pgo" style="text-decoration: none; color: #0099b4;"><img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/ehdmc5luqjaalihbbm3n.jpg" alt="" width="640" style="outline: none; height: auto; text-decoration: none; max-width: 100%; line-height: 100%; width: 100%; border-bottom-color: #6cd7e5; border-bottom-style: solid; border-top-width: 0; border-right-width: 0; border-bottom-width: 3px; border-left-width: 0;"></a> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://go.dev/blog/pgo" title="go.dev" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.1em; line-height: 1.4em;">Profile-Guided Optimization (PGO) in Go 1.21</a></span> — <a target="_blank" href="https://go.dev/doc/pgo" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;">PGO</a> has been a popular topic for blog posts recently, but here’s an as-close-to-official-as-it-gets example of using it to improve code, including deeper dives into two major optimizations enabled by the process. If nothing else convinces you to give it a shot, consider this: <em>“In Go 1.21, workloads typically get between 2% and 7% CPU usage improvements from enabling PGO.”</em></p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Michael Pratt (The Go Team) </p> </td></tr></table> <!-- normal content section --> <table width="100%" cellpadding="0" cellspacing="0" class="content el-content blue" style="color: #222; border-collapse: collapse;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"><p style="margin-top: 0; margin-bottom: 0.8em; background-color: #f0f9ff; line-height: 1.4em; font-size: 0.9em; padding-top: 8px; padding-right: 8px; padding-bottom: 8px; padding-left: 8px;">And if you fancy <em>another</em> article on the topic, Landon Clipp has <a target="_blank" href="https://landontclipp.github.io/blog/2023/08/25/profile-guided-optimizations-in-go/" style="text-decoration: none; color: #0099b4; font-weight: 600;">another practical intro to PGO here</a> that provides more of a "user-facing perspective."</p></td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <a target="_blank" target="_blank" href="https://www.ardanlabs.com/consulting/?utm_source=cooperpress" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;"><img src="https://copm.s3.amazonaws.com/bcc68a3c.png" width="110" height="110" style="padding-top: 12px; padding-left: 12px; outline: none; height: auto; text-decoration: none; max-width: 100%; line-height: 100%; border-top-width: 0; border-right-width: 0; border-bottom-width: 0; border-left-width: 0;" align="right" alt="" class="som"></a> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://www.ardanlabs.com/consulting/?utm_source=cooperpress" title="www.ardanlabs.com" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.05em;">Go! Experts at Your Service</a></span> — Do you need help filling skill gaps, speeding up development &amp; creating high performing software with Go, Docker, K8s, Terraform and Rust? We’ll help you maximize your architecture, structure, tech-debt and human capital.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Ardan Labs Consulting <span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em; border-radius: 2px; background-color: #ffc; color: #885 !important; padding-top: 1px; padding-right: 4px; padding-bottom: 1px; padding-left: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #dd9; border-right-color: #dd9; border-bottom-color: #dd9; border-left-color: #dd9; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid;" class="tag-sponsor">sponsor</span></p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://go.dev/blog/gopls-scalability" title="go.dev" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.05em;">Scaling <code style='font-family: menlo, monaco, "Ubuntu Mono", courier, monospace; font-weight: normal; background-color: inherit;'>gopls</code> for the Growing Go Ecosystem</a></span> — The official Go blog gives us <em>two</em> posts to sink our teeth into this week. This time, the spotlight shines on the <a target="_blank" href="https://pkg.go.dev/golang.org/x/tools/gopls" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;"><code style='font-family: menlo, monaco, "Ubuntu Mono", courier, monospace; font-weight: normal; background-color: inherit;'>gopls</code> Go language server</a> used by a variety of IDEs to enhance their Go support. This post looks at some recent advancements and speedups, and invites you to <a target="_blank" href="https://google.qualtrics.com/jfe/form/SV_4SnGxpcSKN33WZw" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;">take this survey</a> if you’re a <code>gopls</code> user.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Robert Findley and Alan Donovan </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="content el-md " style="border-collapse: collapse;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p style="margin-top: 0.8em; margin-bottom: 0.8em;"><em>QUICK BITS:</em></p> <ul> <li style="color: #222; line-height: 1.35em; margin-bottom: 12px; margin-left: 0px !important;"> <p style="margin-top: 0.8em; margin-bottom: 0.8em;"><a target="_blank" href="https://groups.google.com/g/golang-announce/c/Fm51GRLNRvM" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">Go 1.21.1 and 1.20.8 have been released.</a> Minor point releases with some security fixes.</p> </li> <li style="color: #222; line-height: 1.35em; margin-bottom: 12px; margin-left: 0px !important;"> <p style="margin-top: 0.8em; margin-bottom: 0.8em;">I want to take another opportunity to link to <a target="_blank" href="https://github.com/MariaLetta/free-gophers-pack" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">The Free Gophers Pack</a> by Maria Letta – it's a helpful set of Go gopher illustrations (based upon the original by Renée French) and we used it in today's lead image.</p> </li> <li style="color: #222; line-height: 1.35em; margin-bottom: 12px; margin-left: 0px !important;"> <p style="margin-top: 0.8em; margin-bottom: 0.8em;">Talking of the Go gopher, back in 2016 Renée French gave an <a target="_blank" href="https://www.youtube.com/watch?v=4rw_B4yY69k" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">▶️ interesting talk about the Go gopher</a>, how it came together, and some of Renée's favorite adaptations of it.</p> </li> <li style="color: #222; line-height: 1.35em; margin-bottom: 12px; margin-left: 0px !important;"> <p style="margin-top: 0.8em; margin-bottom: 0.8em;">If you've got to write any C++, <a target="_blank" href="https://github.com/idealvin/coost" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">coost</a> is worth a look. It's a tiny Boost-esque library to make C++ easier to write and with a little more Go flavor, including Go-style coroutines.</p> </li> <li style="color: #222; line-height: 1.35em; margin-bottom: 12px; margin-left: 0px !important;"> <p style="margin-top: 0.8em; margin-bottom: 0.8em;"><em>IEEE Spectrum</em> has released its <a target="_blank" href="https://spectrum.ieee.org/the-top-programming-languages-2023" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">list of 'top programming languages' in 2023</a> and Go does pretty well in 8th place.</p> </li> <li style="color: #222; line-height: 1.35em; margin-bottom: 12px; margin-left: 0px !important;"> <p style="margin-top: 0.8em; margin-bottom: 0.8em;">📅 🤖 In a few weeks I'm attending the <a target="_blank" href="https://www.ai.engineer/summit" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">AI Engineer Summit</a> in SF – if you're into the rapidly growing field of using AI and ML tools and technologies alongside software development, check it out. Even if you can't attend, you can snag a free remote ticket to watch from afar.</p> </li> </ul> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item video" style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink">▶  <a target="_blank" href="https://www.youtube.com/watch?v=rH0bpx7I2Dk" title="www.youtube.com" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.05em;">'This Will Make Everyone Understand Go Interfaces'</a></span> — For anyone experiencing confusion, Anthony GG takes on the task in his inimitable style.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Anthony GG </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://henrikwarne.com/2023/09/10/what-i-have-changed-my-mind-about-in-software-development/" title="henrikwarne.com" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.05em;">What I Have Changed My Mind About in Software Development</a></span> — <em>“Anybody who doesn’t change their mind a lot is dramatically underestimating the complexity of the world we live in.”</em> – Jeff Bezos</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Henrik Warne </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://t.mp/3sOBjhi" title="t.mp" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.05em;">Free Course: Temporal 102 with Go</a></span> — Learn how to utilize the full development cycle in Temporal with this practical follow-up to our essentials 101 course.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Temporal Technologies <span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em; border-radius: 2px; background-color: #ffc; color: #885 !important; padding-top: 1px; padding-right: 4px; padding-bottom: 1px; padding-left: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #dd9; border-right-color: #dd9; border-bottom-color: #dd9; border-left-color: #dd9; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid;" class="tag-sponsor">sponsor</span></p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="miniitem item " style="border-collapse: collapse;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #5a5a5a; line-height: 1.35em !important; margin-top: 8px; margin-right: 0px; margin-bottom: 6px; margin-left: 0px;"><span style="font-weight: 600; font-size: 1.0em; color: #000;"><a target="_blank" href="https://blog.cloud66.com/using-tailscale-for-authentication-of-internal-tools" style="text-decoration: none; color: #0099b4; font-size: 1.0em !important; font-weight: 500; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">Using Tailscale for Authentication of Internal Tools</a></span> <br><span class="name" style="color: #5a5a5a; margin-top: 4px; text-transform: uppercase; font-size: 12px; line-height: 1.3em;">Khash Sajadi</span> </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="miniitem item " style="border-collapse: collapse;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #5a5a5a; line-height: 1.35em !important; margin-top: 8px; margin-right: 0px; margin-bottom: 6px; margin-left: 0px;"><span style="font-weight: 600; font-size: 1.0em; color: #000;"><a target="_blank" href="https://1823.pl/articles/implementing-a-clickhouse-output-plugin-for-telegraf" style="text-decoration: none; color: #0099b4; font-size: 1.0em !important; font-weight: 500; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">Implementing a ClickHouse Output Plugin for Telegraf in Go</a></span> <br><span class="name" style="color: #5a5a5a; margin-top: 4px; text-transform: uppercase; font-size: 12px; line-height: 1.3em;">David Wołosowicz</span> </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="miniitem item " style="border-collapse: collapse;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #5a5a5a; line-height: 1.35em !important; margin-top: 8px; margin-right: 0px; margin-bottom: 6px; margin-left: 0px;"><span style="font-weight: 600; font-size: 1.0em; color: #000;"><a target="_blank" href="https://www.honeybadger.io/blog/comprehensive-guide-to-file-operations-in-go/" style="text-decoration: none; color: #0099b4; font-size: 1.0em !important; font-weight: 500; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">A Practical Tour of Common File Operations in Go</a></span> <br><span class="name" style="color: #5a5a5a; margin-top: 4px; text-transform: uppercase; font-size: 12px; line-height: 1.3em;">Adebayo Adams</span> </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-heading" style="background-color: none !important; text-align: left; margin-top: 15px; color: #333333; border-collapse: collapse;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0; padding-right: 0; padding-bottom: 0; padding-left: 0;"><p style="font-size: 1.6em !important; font-weight: 400 !important; text-transform: none !important; line-height: 1.4em; display: inline-block; border-bottom-width: 6px; border-bottom-color: #f4f4f4; border-bottom-style: solid; margin-top: 0.5em; margin-right: 0; margin-bottom: 0.5em; margin-left: 0;">🛠 Code &amp; Tools</p></td></tr></table> <table width="100%" class="el-fullwidthimage " cellpadding="0" cellspacing="0" style="border-collapse: collapse;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse;"> <a target="_blank" href="https://wails.io/" style="text-decoration: none; color: #0099b4;"><img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/xowkecrguksufntfsd0g.jpg" alt="" width="640" style="border-top-color: #dddddd; border-top-style: solid; border-bottom-color: #dddddd; border-bottom-style: solid; outline: none; height: auto; text-decoration: none; max-width: 100%; line-height: 100%; width: 100%; border-top-width: 3px; border-right-width: 0; border-bottom-width: 3px; border-left-width: 0;"></a> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://wails.io/" title="wails.io" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.05em;">Wails 2.6: Create Desktop Apps with Go, JS and CSS</a></span> — Ever been envious of JavaScript developers being able to use Electron to build desktop apps? Wails brings a similar option to Go. v2 is mature and solid, but <a target="_blank" href="https://wails.io/blog/the-road-to-wails-v3" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;">Wails v3 is on the way</a> and promises to be a big update. <a target="_blank" href="https://github.com/wailsapp/wails" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;">GitHub repo.</a></p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Lea Anthony </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://github.com/Shpota/goxygen" title="github.com" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.05em;">Goxygen 0.7: Quickly Generate a Go Backend for a JS Project</a></span> — A tool that sets up a new Go-based project with Angular, React, or Vue in the front-end, and Docker and Docker Compose files to make it all work. v0.7 introduces Go 1.21 support.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Sasha Shpota </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://goteleport.com/blog/how-to-hack-kubernetes/?utm_campaign=0912Cooperpress&amp;utm_medium=partner&amp;utm_source=golang" title="goteleport.com" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.05em;">[Blog] How to Hack Kubernetes (And How to Protect It)</a></span> — This roundup covers the top seven ways your cluster will likely be attacked and a corresponding countermeasure.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Teleport | goteleport.com <span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em; border-radius: 2px; background-color: #ffc; color: #885 !important; padding-top: 1px; padding-right: 4px; padding-bottom: 1px; padding-left: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #dd9; border-right-color: #dd9; border-bottom-color: #dd9; border-left-color: #dd9; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid;" class="tag-sponsor">sponsor</span></p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://github.com/alecthomas/participle" title="github.com" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.05em;">Participle 2.1: A Simple Parser Package</a></span> — Aims to provide a straightforward and idiomatic way to define parsers in Go using a familiar approach of using struct field tags to define a grammar, so if you’ve used <code>encoding/json</code> before, you’re well on your way.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Alec Thomas </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" style="border-collapse: collapse;"><tr><td style="height: 8px; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse;"></td></tr></table> <table width="100%" class="el-fullwidthimage bordered" cellpadding="0" cellspacing="0" style="border-collapse: collapse;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse;"> <a target="_blank" href="https://github.com/charmbracelet/lipgloss" style="text-decoration: none; color: #0099b4;"><img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/bvx2zuwg3zxmabc9gxmn.jpg" alt="" width="640" style="outline: none; height: auto; text-decoration: none; max-width: 100%; line-height: 100%; width: 100%; border-top-color: #ddd; border-top-style: solid; border-bottom-color: #ddd; border-bottom-style: solid; border-top-width: 3px; border-right-width: 0; border-bottom-width: 3px; border-left-width: 0;"></a> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://github.com/charmbracelet/lipgloss" title="github.com" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.05em;">Lip Gloss 0.8: Style Definitions for Nice Terminal Layouts</a></span> — Provides a ‘fluent’-style API for stylizing text output from your programs in an attractive way, as you'd expect being a <em>Charm</em> project.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Charm </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://github.com/zmb3/spotify" title="github.com" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.05em;">Spotify 2.4.0: A Go Wrapper for the Spotify Web API</a></span> — There are a variety of <a target="_blank" href="https://github.com/zmb3/spotify/tree/master/examples" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;">examples</a>, but you can do all the obvious things like search for tracks, playlists, and control playing tracks.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Zac Bergquist </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://github.com/jhillyerd/enmime" title="github.com" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.05em;">Enmime 1.0: MIME Encoding and Decoding Package</a></span> — Focused on generating and parsing MIME encoded emails.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">James Hillyerd </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="content el-md releases flat" style="border-collapse: collapse;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p style="margin-top: 0.8em; margin-bottom: 0.8em;"><em>QUICK RELEASES:</em></p> <ul style="padding-left: 0; margin-left: 0px; list-style-type: none; list-style-position: inside;"> <li style="color: #222; line-height: 1.35em; margin-bottom: 12px; margin-left: 0px !important;"> <p style="margin-top: 0.8em; margin-bottom: 0.8em;"><a target="_blank" href="https://github.com/alecthomas/chroma" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">Chroma 2.9</a><br> ↳ Pure Go general purpose syntax highlighter.</p> </li> <li style="color: #222; line-height: 1.35em; margin-bottom: 12px; margin-left: 0px !important;"> <p style="margin-top: 0.8em; margin-bottom: 0.8em;"><a target="_blank" href="https://github.com/pemistahl/lingua-go" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">Lingua 1.4</a><br> ↳ Natural language detection library.</p> </li> <li style="color: #222; line-height: 1.35em; margin-bottom: 12px; margin-left: 0px !important;"> <p style="margin-top: 0.8em; margin-bottom: 0.8em;"><a target="_blank" href="https://github.com/sqlc-dev/sqlc/releases/tag/v1.21.0" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">sqlc 1.21</a><br> ↳ Generate type-safe code from SQL.</p> </li> <li style="color: #222; line-height: 1.35em; margin-bottom: 12px; margin-left: 0px !important;"> <p style="margin-top: 0.8em; margin-bottom: 0.8em;"><a target="_blank" href="https://github.com/benthosdev/benthos/releases/tag/v4.21.0" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">Benthos 4.21</a><br> ↳ Fancy stream processing made operationally mundane.</p> </li> <li style="color: #222; line-height: 1.35em; margin-bottom: 12px; margin-left: 0px !important;"> <p style="margin-top: 0.8em; margin-bottom: 0.8em;"><a target="_blank" href="https://github.com/deepmap/oapi-codegen/releases/tag/v1.15.0" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">OpenAPI Client and Server Code Generator 1.15</a><br> ↳ Generate boilerplate from OpenAPI 3 specs.</p> </li> <li style="color: #222; line-height: 1.35em; margin-bottom: 12px; margin-left: 0px !important;"> <p style="margin-top: 0.8em; margin-bottom: 0.8em;"><a target="_blank" href="https://github.com/google/go-github" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">go-github 55.0</a><br> ↳ GitHub v3 API client library.</p> </li> <li style="color: #222; line-height: 1.35em; margin-bottom: 12px; margin-left: 0px !important;"> <p style="margin-top: 0.8em; margin-bottom: 0.8em;"><a target="_blank" href="https://github.com/NdoleStudio/lemonsqueezy-go" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">lemonsqueezy-go 1.0.3</a><br> ↳ Go API client for the <a target="_blank" href="https://www.lemonsqueezy.com/" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">Lemon Squeezy</a> SaaS platform.</p> </li> </ul> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-subtable " style="background-color: #F3F4F6; margin-top: 15px; border-collapse: collapse;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"> <!-- normal content section --> <table width="100%" cellpadding="0" cellspacing="0" class="content el-content " style="color: #222; border-collapse: collapse; margin-top: 0 !important;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"><p style="text-transform: uppercase; font-weight: 600; font-size: 15px; border-bottom-width: 3px; border-bottom-color: #6cd7e5; border-bottom-style: solid; line-height: 1.4em; display: inline-block; margin-top: 0.8em; margin-bottom: 0.8em;">Jobs</p></td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="miniitem item " style="border-collapse: collapse;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #5a5a5a; line-height: 1.35em !important; margin-top: 8px; margin-right: 0px; margin-bottom: 6px; margin-left: 0px;"><span style="font-weight: 600; font-size: 1.0em; color: #000;"><a target="_blank" href="https://hired.com/join/?utm_source=newsletter&amp;utm_medium=sponsor&amp;utm_campaign=(b2c)(l-all)(r-all)(cooper-golangweekly)&amp;utm_content=find-your-next-job" style="text-decoration: none; color: #0099b4; font-size: 1.0em !important; font-weight: 500; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">Find a Job Through Hired</a></span> — Hired makes job hunting easy-instead of chasing recruiters, companies approach you with salary details up front. Create a free profile now. <br><span class="name" style="color: #5a5a5a; margin-top: 4px; text-transform: uppercase; font-size: 12px; line-height: 1.3em;">Hired</span> </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" style="border-collapse: collapse;"><tr><td style="height: 10px; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse;"></td></tr></table> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" style="border-collapse: collapse;"><tr><td style="height: 16px; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse;"></td></tr></table> </div> </td></tr> </table> <!--[if (gte mso 9)|(IE)]></td></tr></table><![endif]--> </div> <div class="pager"> <div class="prev"> <a href="/issues/474">&laquo; Prev</a> </div> <div class="center"> <!-- Issue 475 --> </div> <div class="next"> <a href="/issues/476">Next &raquo;</a> </div> </div> <div class="subscribe_box" class=""> <form class="subscribe" action="/subscribe" method="POST"> <input type="email" placeholder="Want to subscribe? Enter your address here" class="email" name="yemail" id="email" /><button class="awesome" type="submit">Subscribe now &raquo;</button> <div class="smallprint">Easy to unsubscribe at any time. Your e-mail address <a href="https://cooperpress.com/spam.html">is safe</a> &mdash; here's <a href="https://cooperpress.com/legal/privacy/">our privacy policy.</a></div> <input type="hidden" name="_csrf" value="NJfTv1a6ePwtjs_TXDU1gnSDl7an2hYsCqp8HLOReQc" /> </form> </div> </section> <img src="/open/475/web" /> </main> <script src="/js/app.js"></script> <script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create','UA-32535004-16','golangweekly.com');ga('send', 'pageview'); </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10