CINXE.COM
Golang Weekly Issue 362: May 14, 2021
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Golang Weekly Issue 362: May 14, 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 362 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 »</button> <div class="smallprint">Easy to unsubscribe at any time. Your e-mail address <a href="https://cooperpress.com/spam.html">is safe</a> — here's <a href="https://cooperpress.com/legal/privacy/">our privacy policy.</a></div> <input type="hidden" name="_csrf" value="wwY2uH9gDue7tCsM9lFfKEedz3QVP3qJiC9-M7XkSHE" /> </form> </div> </div> <div class="pager"> <div class="prev"> <a href="/issues/361">« Prev</a> </div> <div class="center"> <!-- Issue 362 --> </div> <div class="next"> <a href="/issues/363">Next »</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;">#362 — May 14, 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/362" 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://changelog.com/posts/on-go-application-structure" style="text-decoration: none; color: #0099b4;"><img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/k78mihty9ah8urasmfv9.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://changelog.com/posts/on-go-application-structure" title="changelog.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.1em; line-height: 1.4em;">Thoughts on How to Structure Go Code</a></span> — Many languages have conventions on how to structure files and directories for an application, but Go leaves it up to you. This is mostly a good thing, right?</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Jon Calhoun </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://blog.khanacademy.org/half-a-million-lines-of-go/" title="blog.khanacademy.org" 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;">Reflecting on Half a Million Lines of Go</a></span> — Back in 2019, Kevin Dangoor of Khan Academy wrote about <a target="_blank" href="https://blog.khanacademy.org/go-services-one-goliath-project/" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;">how KA was embarking on an effort</a> to rebuild its server software with Go. And.. they did just that, with the end result being more than 500,000 lines of Go now running in production. Here’s a brief update of how it’s feeling to them.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Kevin Dangoor (Khan Academy) </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://www.ardanlabs.com/training/?utm_source=Cooperpress%20PrimaryV4" 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/0f4741bf.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://www.ardanlabs.com/training/?utm_source=Cooperpress%20PrimaryV4" 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;">Remote Instructor-Led Go, Docker, Kubernetes & Python Training</a></span> — We offer live-streaming remote training sessions for individual engineers and companies that want to augment their knowledge in Go, Docker, Kubernetes and Python. We’ve trained over 10,000 engineers via our carefully crafted classes.</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 <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://eng.uber.com/pprof-go-profiler/" title="eng.uber.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;">pprof++: A Go Profiler with Hardware Performance Monitoring</a></span> — Uber takes us on a ride to create a better profiler that taps into hardware performance monitoring features of modern CPUs and is more accurate than pprof at scale. It’s powerful, but a big downside (<a target="_blank" href="https://news.ycombinator.com/item?id=27119777" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;">amongst a few explained here</a>) is it requires a fork of the compiler and runtime to operate.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Milind Chabbi (Uber Engineering) </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://encore.dev/guide/go.mod" title="encore.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;">A Go Modules Cheat Sheet</a></span> — If you have to keep looking up what’s needed to work with dependencies, this page brings all the basics into one place (which you could even print out if you wanted). It’s not exhaustive, just the essentials.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">André Eriksson </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://eli.thegreenplace.net/2021/rest-servers-in-go-part-6-authentication/" title="eli.thegreenplace.net" 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;">REST Servers in Go: Authentication</a></span> — Eli returns with part <em>six</em> of his epic blog series on creating REST-oriented servers with Go. This time he focuses on HTTP basic auth over HTTPS.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Eli Bendersky </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://marcofranssen.nl/how-to-do-enums-in-go" title="marcofranssen.nl" 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;">How to Do Enums in Go</a></span> — Go doesn’t natively have an <code>enum</code> type like you might see in some languages, but <code>iota</code> can go a long way to helping out.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Marco Franssen </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-observability-replace-monitoring-co?utm_campaign=golang&utm_source=cooper&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;">Observability Won’t Replace Monitoring (Because It Shouldn’t)</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 video" 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://www.youtube.com/watch?v=nmNVd7FbSYs" 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;"><code style='font-family: menlo, monaco, "Ubuntu Mono", courier, monospace; font-weight: normal; background-color: inherit;'>printf</code> vs Delve for Debugging Go Tests</a></span> — A five-minute video that shows how easy it is to run and debug tests with Delve.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Felix Geisendörfer </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://arjitjaiswal.medium.com/building-okayar-part-1-how-it-started-back-end-crud-serverless-lambda-api-in-go-3248ae93c97c" 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;">The Story of Building a Serverless CRUD App with AWS Lambda and Go</a></span> <br><span class="name" style="color: #5a5a5a; margin-top: 4px; text-transform: uppercase; font-size: 12px; line-height: 1.6em;">Arjit Jaiswal</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; 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 & 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/bits-and-blooms/bloom" style="text-decoration: none; color: #0099b4;"><img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/kktoaqalprwyxn8jkngn.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/bits-and-blooms/bloom" 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;">Bloom 3.0: A Package for Implementing Bloom Filters</a></span> — Bloom filters are memory efficient data structures for determining set membership with a defined potential rate of false positives. They have <a target="_blank" href="https://en.wikipedia.org/wiki/Bloom_filter#Examples" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;">numerous use cases</a> including in caching, spell checking, and rate limiting.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Will Fitzgerald </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/labstack/echo" 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;">Echo 4.3: A High Performance, Minimalist Web Framework</a></span> — A framework aimed at building REST APIs complete with a router, middleware framework, HTTP/2 support, automatic TLS with Let’s Encrypt, and more.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">LabStack LLC </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://learn.launchdarkly.com/effective-feature-management/?utm_source=cooperpress&utm_medium=display&utm_campaign=q4-cooperpress&utm_content=ebook_oreilly_efm" title="learn.launchdarkly.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;">[Free Download] Guide to Effective Feature Management</a></span> — Learn feature management practices to accelerate release cycles and deploy every 6 hours, instead of every 6 weeks.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">LaunchDarkly <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/gojek/heimdall" 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;">Heimdall 7.0: An Enhanced HTTP Client for Go</a></span> — Designed for making large numbers of requests, including a built in circuit breaker to control failing requests, multiple and custom retry strategies, plus a fluent API.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Gojek </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/krotik/eliasdb" 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;">EliasDB: A Graph-Based Database Written in Go</a></span> — We first linked to this <em>5 years ago</em> but the project is still going and getting updates with v1.2.0 released this week. You get a GraphQL interface or a REST API and data is stored within a indexed key-value store.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Matthias Ladkau </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/rogchap/v8go" 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;">v8go 0.6.0: Execute JavaScript from Go(lang)</a></span> — Lets you create V8 contexts and run code <code>eval</code>-style. This <a target="_blank" href="https://github.com/rogchap/v8go/releases/tag/v0.6.0" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;">latest release</a> upgrades V8 to 9.0, offers a static binary for Windows, and other tweaks.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Roger Chapman </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/darylhjd/mangadesk" 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;">Mangadesk: A Terminal Client for MangaDex</a></span> — You could write everything I know about manga on the back of a postage stamp but this looks useful if you’re into it(?)</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">darylhjd </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/secure" 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;">Secure: HTTP Middleware for Some 'Quick Security Wins'</a></span> — Covers areas like content security policy, SSL redirects, allowing certain hosts, setting a referrer policy, etc.</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" 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://www.crossriver.com/greenhouse?gh_jid=4352227003" 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;">Backend Engineer at Cross River Bank (Remote)</a></span> — Enjoy designing APIs with Go on AWS? Join us in making banking more accessible with the best banking platform for fintechs. <br><span class="name" style="color: #5a5a5a; margin-top: 4px; text-transform: uppercase; font-size: 12px; line-height: 1.6em;">Cross River Bank</span> </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://angel.co/company/stream/jobs/241159-backend-software-engineer-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;">Enjoy Building Scalable Infrastructure in Go? Stream Is Hiring</a></span> — Like coding in Go? We do too. Stream is hiring in Amsterdam. <a target="_blank" href="https://angel.co/company/stream/jobs/241159-backend-software-engineer-go" style="font-size: 1.0em; text-decoration: none; color: #0099b4; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid; font-weight: 500;">Apply now</a>. <br><span class="name" style="color: #5a5a5a; margin-top: 4px; text-transform: uppercase; font-size: 12px; line-height: 1.6em;">Stream</span> </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&utm_medium=email-ad&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/361">« Prev</a> </div> <div class="center"> <!-- Issue 362 --> </div> <div class="next"> <a href="/issues/363">Next »</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 »</button> <div class="smallprint">Easy to unsubscribe at any time. Your e-mail address <a href="https://cooperpress.com/spam.html">is safe</a> — here's <a href="https://cooperpress.com/legal/privacy/">our privacy policy.</a></div> <input type="hidden" name="_csrf" value="wwY2uH9gDue7tCsM9lFfKEedz3QVP3qJiC9-M7XkSHE" /> </form> </div> </section> <img src="/open/362/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>