CINXE.COM

Golang Weekly Issue 364: May 28, 2021

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Golang Weekly Issue 364: May 28, 2021</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 364 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="KJdKAU8aW2Ua2TyzM_AfA2Oxt-V5685D300WPG2AHn0" /> </form> </div> </div> <div class="pager"> <div class="prev"> <a href="/issues/363">&laquo; Prev</a> </div> <div class="center"> <!-- Issue 364 --> </div> <div class="next"> <a href="/issues/365">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.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; max-width: 600px; height: 100% !important; direction: ltr; padding: 0px;"> <tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse;"> <div id="content"> <!-- left/right splitbar --> <table class="el-splitbar" width="100%" cellpadding="0" cellspacing="0" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; 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.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; 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;">#​364 — May 28, 2021</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.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; 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; border-bottom-width: 1px; border-bottom-color: #00aadd; border-bottom-style: dotted;">Unsubscribe</a>  |  <a target="_blank" href="https://golangweekly.com/issues/364" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px; border-bottom-color: #00aadd; border-bottom-style: dotted;">Read on the Web</a></p></td> </tr></table> <!-- masthead --> <table width="100%" cellpadding="0" cellspacing="0" style="background-color: #6cd7e5; text-align: center; color: #222222; text-shadow: 0px 0px 10px #dff; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse;" class="el-masthead"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; padding: 0 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="mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse;"> <a target="_blank" href="https://ani.dev/2021/05/25/functional-programming-in-go-with-generics/" style="text-decoration: none; color: #0099b4;"><img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/y4hd5qf24azqkq29s3na.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-width: 0 0 3px;"></a> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; margin-bottom: 4px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; padding: 0px 15px;"> <p class="desc" style="color: #444; margin-top: 0.8em; margin-bottom: 0; line-height: 1.65em;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://ani.dev/2021/05/25/functional-programming-in-go-with-generics/" title="ani.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;">Functional Programming in Go with Generics</a></span> — The author runs through functional options in Go today, and how 1.18 brings improvements through generics – however.. that’s not to say you <em>should</em> go functional wherever possible as Jeremy Bowers opined in <a target="_blank" href="http://www.jerf.org/iri/post/2955" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;">“Why Go Getting Generics Will Not Change Idiomatic Go”</a> last year.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Ani Channarasappa </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; margin-bottom: 4px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; padding: 0px 15px;"> <p class="desc" style="color: #444; margin-top: 0.8em; margin-bottom: 0; line-height: 1.65em;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://pkg.go.dev/rsc.io/rf" title="pkg.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;">rf: An Experimental Refactoring Tool for Go</a></span> — When a project says its <em>“incredibly rough and likely to be buggy and change incompatibly”</em>, you know you’re in for a fun time. This is a truly experimental command-line Go refactoring tool that lets you address pieces of code with what are called <em>“code addresses.”</em> It reminds me of the more general <a target="_blank" href="https://comby.dev/" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;">Comby</a> tool.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Russ Cox, Matthew Dempsky, et al. </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; margin-bottom: 4px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; padding: 0px 15px;"> <a target="_blank" target="_blank" href="https://fauna.com/go/serverless?utm_source=GoNewsletter&amp;utm_medium=Newsletter&amp;utm_campaign=CooperPress_Newsletters_2021" 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/0edc701b.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: 0;" align="right" alt="" class="som"></a> <p class="desc" style="color: #444; margin-top: 0.8em; margin-bottom: 0; line-height: 1.65em;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://fauna.com/go/serverless?utm_source=GoNewsletter&amp;utm_medium=Newsletter&amp;utm_campaign=CooperPress_Newsletters_2021" title="fauna.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;">A Global Serverless Database for Your Golang Apps</a></span> — Modern applications need a serverless database. Fauna is the “Data API” for modern applications. Whether you’re building new microservices or augmenting existing services applications, Fauna lets you simplify code, reduce costs and ship faster.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Fauna <span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em; border-radius: 2px; background-color: #ffc; color: #885 !important; padding: 1px 4px; border: 1px solid #dd9;" class="tag-sponsor">sponsor</span></p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; margin-bottom: 4px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; padding: 0px 15px;"> <p class="desc" style="color: #444; margin-top: 0.8em; margin-bottom: 0; line-height: 1.65em;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://github.com/tailscale/go-mod-archiver" 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;">go-mod-archiver: A GitHub Actions Workflow to Preserve Old Dependencies</a></span> — <em>“Afraid of being unable to build historical versions of your Go program?”</em> asked Brad Fitzpatrick. He made this GitHub Actions based tool to archive your go.mod dependency code to git tags in your project to ensure you can rebuild old versions again in future.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Tailscale </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="content el-md " style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; color: #444444;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; padding: 0px 15px;"> <p style="margin-top: 0.8em; margin-bottom: 0.8em;"><strong style="font-weight: 600;">QUICK BITS:</strong></p> <ul style="padding-left: 20px; list-style-type: circle;"> <li> <p style="margin-top: 0.8em; margin-bottom: 0.8em;">It's behind an email wall (sorry) but Manning is letting you get a <a target="_blank" href="https://freecontent.manning.com/free-ebook-go-in-action/" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #00aadd; border-bottom-style: dotted;">free copy of <em>Go in Action</em></a> for the next couple of days.</p> </li> <li> <p style="margin-top: 0.8em; margin-bottom: 0.8em;">As of Go 1.17, you'll be <a target="_blank" href="https://twitter.com/inancgumus/status/1397168068955021312" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #00aadd; border-bottom-style: dotted;">able to shuffle the execution order of tests and benchmarks</a>.</p> </li> </ul> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; margin-bottom: 4px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; padding: 0px 15px;"> <p class="desc" style="color: #444; margin-top: 0.8em; margin-bottom: 0; line-height: 1.65em;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://stonecode.ca/benchmarking-with-go/" title="stonecode.ca" 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;">On Benchmarking with Go</a></span> — A key to accurate benchmarking is ensuring the number of samples taken is adequate to disprove performance hypotheses.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Stone Code </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; margin-bottom: 4px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; padding: 0px 15px;"> <p class="desc" style="color: #444; margin-top: 0.8em; margin-bottom: 0; line-height: 1.65em;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://go.lightstep.com/register-tracing-will-replace-logging-guide-co21?utm_campaign=golang&amp;utm_source=cooper&amp;utm_medium=Email" title="go.lightstep.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;">Why Tracing Might Replace (Almost) All Logging</a></span></p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Lightstep <span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em; border-radius: 2px; background-color: #ffc; color: #885 !important; padding: 1px 4px; border: 1px solid #dd9;" class="tag-sponsor">sponsor</span></p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; margin-bottom: 4px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; padding: 0px 15px;"> <p class="desc" style="color: #444; margin-top: 0.8em; margin-bottom: 0; line-height: 1.65em;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://sayedalesawy.hashnode.dev/top-5-lessons-i-learned-while-working-with-go-for-two-years" title="sayedalesawy.hashnode.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;">Top Five Lessons I Learned Working with Go for Two Years</a></span> — Always interesting to read about someone’s experiences.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Sayed Alesawy </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; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; padding: 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: 0.5em 0;">🛠 Code &amp; Tools</p></td></tr></table> <table width="100%" class="el-fullwidthimage" cellpadding="0" cellspacing="0" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse;"> <a target="_blank" href="https://github.com/dundee/gdu" style="text-decoration: none; color: #0099b4;"><img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/lumxdamlgnkcidxyibpi.jpg" alt="" width="640" style="outline: none; height: auto; text-decoration: none; max-width: 100%; line-height: 100%; width: 100%; border: 0;"></a> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse;"><tr><td style="height: 4px; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse;"></td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; margin-bottom: 4px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; padding: 0px 15px;"> <p class="desc" style="color: #444; margin-top: 0.8em; margin-bottom: 0; line-height: 1.65em;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://github.com/dundee/gdu" 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;">gdu 5.0: A Disk Usage Analyzer with Console Interface</a></span> — Written in Go, naturally. This is a neat tool. Rapidly analyze your disk space usage – it benchmarks strongly against other tools in the space.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Daniel Milde </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; margin-bottom: 4px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; padding: 0px 15px;"> <p class="desc" style="color: #444; margin-top: 0.8em; margin-bottom: 0; line-height: 1.65em;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://github.com/mgechev/revive" 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;">Revive: A Fast(er), Configurable, Flexible Linter for Go</a></span> — A drop-in replacement of golint that aims to provide a little more structure and configurability. It boasts being at least double the speed, too.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Minko Gechev </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; margin-bottom: 4px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; padding: 0px 15px;"> <p class="desc" style="color: #444; margin-top: 0.8em; margin-bottom: 0; line-height: 1.65em;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://snyk.io/lp/golang-security/?utm_campaign=CNAS-UA-2021&amp;utm_medium=Paid-Email&amp;utm_source=Cooperpress&amp;utm_content=GW-Go" title="snyk.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;">Free Golang Vulnerability Scanner &amp; Fix Advice - Secure Go Projects for Free</a></span> — Scan your Go code for vulnerabilities in seconds. Fix quickly with automated fix suggestions. Try Snyk for free.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Snyk <span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em; border-radius: 2px; background-color: #ffc; color: #885 !important; padding: 1px 4px; border: 1px solid #dd9;" class="tag-sponsor">sponsor</span></p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; margin-bottom: 4px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; padding: 0px 15px;"> <p class="desc" style="color: #444; margin-top: 0.8em; margin-bottom: 0; line-height: 1.65em;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://github.com/esimov/caire" 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;">Caire 1.3: A Content-Aware Image Resizing Library</a></span> — Uses <em><a target="_blank" href="https://inst.eecs.berkeley.edu/~cs194-26/fa16/hw/proj4-seamcarving/imret.pdf" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;">seam carving</a></em> to stretch out unimportant parts of an image when resizing. We first linked this a few years ago, so it’s neat to see it still getting updates and performance boosts.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Endre Simo </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; margin-bottom: 4px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; padding: 0px 15px;"> <p class="desc" style="color: #444; margin-top: 0.8em; margin-bottom: 0; line-height: 1.65em;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://github.com/Kangaroux/go-map-schema" 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;">go-map-schema: Simple JSON Type Checking</a></span> — Check the JSON payload of a request against a schema to catch bad input before any processing occurs.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Kangaroux </p> </td></tr></table> <table width="100%" class="el-fullwidthimage" cellpadding="0" cellspacing="0" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse;"> <a target="_blank" href="https://github.com/fatih/color" style="text-decoration: none; color: #0099b4;"><img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/huexj4aqw7hxzlvw8uxl.jpg" alt="" width="640" style="outline: none; height: auto; text-decoration: none; max-width: 100%; line-height: 100%; width: 100%; border: 0;"></a> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse;"><tr><td style="height: 4px; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse;"></td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; margin-bottom: 4px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; padding: 0px 15px;"> <p class="desc" style="color: #444; margin-top: 0.8em; margin-bottom: 0; line-height: 1.65em;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://github.com/fatih/color" 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;">color 1.12.0: A Color Text Output Package</a></span> — Another long standing package that continues to see updates. You’d use this if you want to colorize your program’s output on the terminal in as simple a way as possible.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Fatih Arslan </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; margin-bottom: 4px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; padding: 0px 15px;"> <p class="desc" style="color: #444; margin-top: 0.8em; margin-bottom: 0; line-height: 1.65em;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://github.com/unrolled/render" 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;">Render 1.4.0: Easily Render JSON, XML, Binary Data, and HTML Template Responses</a></span> — A package for rendering various types of output in a more structured way if you’re putting together a Go-powered HTTP service, say.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Cory Jacobsen </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; margin-bottom: 4px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; padding: 0px 15px;"> <p class="desc" style="color: #444; margin-top: 0.8em; margin-bottom: 0; line-height: 1.65em;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://github.com/elastic/go-elasticsearch" 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;">go-elasticsearch 7.13.0: The Official Go Client for Elasticsearch</a></span> — <a target="_blank" href="https://github.com/elastic/elasticsearch" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;">Elasticsearch</a> is a popular search engine/document database used to implement search features in apps.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">elastic </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; margin-bottom: 4px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; padding: 0px 15px;"> <p class="desc" style="color: #444; margin-top: 0.8em; margin-bottom: 0; line-height: 1.65em;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://github.com/auxten/go-sqldb" 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;">go-sqldb: A Pure Go SQL Database for Learning Database Theory</a></span> — This looks like a solid weekend 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;">auxten </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="miniitem item " style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; padding: 0px 15px;"> <p class="desc" style="color: #5a5a5a; line-height: 1.4em !important; margin: 8px 0px 6px;"><span style="font-weight: 600; font-size: 1.0em; color: #000;"><a target="_blank" href="https://github.com/nanmu42/limitio" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid; font-weight: 500; font-size: 1.1em;">LimitIO: <code style='font-family: menlo, monaco, "Ubuntu Mono", courier, monospace; font-weight: normal; background-color: inherit;'>io.Reader</code> and <code style='font-family: menlo, monaco, "Ubuntu Mono", courier, monospace; font-weight: normal; background-color: inherit;'>io.Writer</code>, But With Limits</a></span> <br><span class="name" style="color: #5a5a5a; margin-top: 4px; text-transform: uppercase; font-size: 12px; line-height: 1.6em;">LI Zhennan</span> </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse;"><tr><td style="height: 6px; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse;"></td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-subtable " style="background-color: #F3F4F6; margin-top: 15px; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; padding: 0px;"> <!-- normal content section --> <table width="100%" cellpadding="0" cellspacing="0" class="content el-content " style="color: #444; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; margin-top: 0 !important;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; padding: 0px 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="mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; padding: 0px 15px;"> <p class="desc" style="color: #5a5a5a; line-height: 1.4em !important; margin: 8px 0px 6px;"><span style="font-weight: 600; font-size: 1.0em; color: #000;"><a target="_blank" href="https://x-team.com/remote-go-developer-jobs/?utm_source=cooperpress&amp;utm_medium=email-ad&amp;utm_campaign=go" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid; font-weight: 500; font-size: 1.1em;">Golang Developer at X-Team (Remote)</a></span> — Join the most energizing community for developers and work on long-term projects for Riot Games, FOX, Sony, Coinbase, and more. <br><span class="name" style="color: #5a5a5a; margin-top: 4px; text-transform: uppercase; font-size: 12px; line-height: 1.6em;">X-Team</span> </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse;"><tr><td style="height: 10px; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse;"></td></tr></table> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse;"><tr><td style="height: 18px; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.55em; mso-table-lspace: 0pt; mso-table-rspace: 0pt; 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/363">&laquo; Prev</a> </div> <div class="center"> <!-- Issue 364 --> </div> <div class="next"> <a href="/issues/365">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="KJdKAU8aW2Ua2TyzM_AfA2Oxt-V5685D300WPG2AHn0" /> </form> </div> </section> <img src="/open/364/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