CINXE.COM

Golang Weekly Issue 494: February 6, 2024

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Golang Weekly Issue 494: February 6, 2024</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 494 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="AgZeqk9G3Pjpo-hZHDwQ5qXlGdZqqMd7aDRULjUKa9M" /> </form> </div> </div> <div class="pager"> <div class="prev"> <a href="/issues/493">&laquo; Prev</a> </div> <div class="center"> <!-- Issue 494 --> </div> <div class="next"> <a href="/issues/495">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;">#​494 — February 6, 2024</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/494" 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.crunchydata.com/products/crunchy-bridge?utm_source=cpgo-prim-0206" 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/c_fill,g_auto,w_430,h_100/e_make_transparent/co_white,e_outline:7/xyflkz7n00elwtgja9ne.png" style="max-width: 120px; 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="120" alt="Crunchydata"> </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://www.dolthub.com/blog/2024-02-02-profile-guided-optimization/" style="text-decoration: none; color: #0099b4;"><img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/n0h8x9mkafk85pkagqlj.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 " ok 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.dolthub.com/blog/2024-02-02-profile-guided-optimization/" title="www.dolthub.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;">Testing Out Profile-Guided Optimization on Dolt's SQL Benchmarks</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;">Profile-guided optimization</a> was introduced in Go 1.20. The Dolters(?) created a benchmark and saw small (though not <em>trivial</em>) improvements to both read and write latency without changing any code. It’s almost certainly worth trying if your apps would benefit from some marginal performance improvements in return for a little experimentation time.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Zach Musgrave (DoltHub) </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " ok 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://andrewwphillips.github.io/blog/pgo.html" title="andrewwphillips.github.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;">Getting the Best from Profile Guided Optimization</a></span> — Related to the above item, PGO was a nifty addition to Go 1.21 (first previewed in 1.20) but there are some things worth appreciating if you want to get the most out of 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;">Andrew Phillips </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " ok 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.crunchydata.com/products/crunchy-bridge?utm_source=cpgo-prim-0206" 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/ccc372d1.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.crunchydata.com/products/crunchy-bridge?utm_source=cpgo-prim-0206" title="www.crunchydata.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;">❤️ Postgres</a></span> — You need a database provider that loves Postgres as much as you do. We'll take care of all the hassle - monitoring, backups, HA, disaster recovery so you don't have to. Want amazing support? We'll be there when you have questions.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Crunchy Bridge <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 " ok 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://thenewstack.io/golang-co-creator-rob-pike-what-go-got-right-and-wrong/" title="thenewstack.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;">Go Co-Creator Rob Pike: 'What Go Got Right and Wrong'</a></span> — A high level, journalistic look at Rob’s talk from GopherCon AU late last year – well worth a read if you don’t want to <a target="_blank" href="https://www.youtube.com/watch?v=yE5Tpp2BSGw" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;">▶️ watch the talk</a> itself. He covered the bits of Go he felt got things right, what got left out, and some qualms over how Go’s mascot is used (the original was created by Rob’s wife, <a target="_blank" href="https://en.wikipedia.org/wiki/Ren%C3%A9e_French" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;">Renée French</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;">David Cassel (The New Stack) </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;" ok><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;">💡 There's more detail in <a target="_blank" href="https://commandcenter.blogspot.com/2024/01/what-we-got-right-what-we-got-wrong.html" style="text-decoration: none; color: #0099b4; font-weight: 600;">Rob's own writeup of his talk</a>, which we featured a few issues ago.</p></td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="content el-md releases" style="border-collapse: collapse;" ok><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 style="padding-left: 0; margin-left: 18px; 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;">🚨 The latest <a target="_blank" href="https://google.qualtrics.com/jfe/form/SV_083SVAUCji98YeO?s=b" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">official Go developer survey</a> is open for just five more days – take it now to have your say.</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;">📅 The <a target="_blank" href="https://sessionize.com/gophercon-2024/" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">GopherCon 2024 CFP</a> is open until February 26.</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;">🔐 Filippo Valsorda, cryptography expert and former Go team member, shares <a target="_blank" href="https://words.filippo.io/dispatches/mlkem768/" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">the details behind creating a post-quantum cryptography library for Go</a> called <code>mlkem768</code>.</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;">🎧 Dominic St-Pierre's <a target="_blank" href="https://gopodcast.dev/" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">go podcast()</a> has been <em>Go-</em>ing for a year now, and he's decided to extend its short, personal format by bringing guests on, as in this week's episode: <a target="_blank" href="https://gopodcast.dev/episodes/027-debugging-in-go-with-matt-boyle" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">▶️ Debugging in Go with Matt Boyle.</a></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;">Elsewhere in Go podcast land, Neil S Primmer and Benji Vesterby went on <em>Go Time</em> to <a target="_blank" href="https://changelog.com/gotime/301" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">▶️ talk about last year's GopherCon 'Capture the Flag' event</a>, with host Angelica Hill.</p> </li> </ul> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " ok 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.bytesizego.com/blog/history-of-dependency-management-go" title="www.bytesizego.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 Brief History of Dependency Management in Go</a></span> — A quick dash through six eras of dependency management from, well, <em>nothing</em> to Go modules. If you weren’t around in the early days, you may not remember all this.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Matt Boyle </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " ok 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://zenhorace.dev/blog/context-control-go/" title="zenhorace.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;">Context Control in Go</a></span> — A look at a few easy violated rules for handling contexts in Go. The fixes demonstrated will help you identify violations in your own code and, as a bonus, remind you that <em>clever</em> is rarely <em>better.</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;">Horace </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " ok 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://pages.temporal.io/download-saga-pattern-made-easy-co" title="pages.temporal.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;">Saga Pattern Made Easy</a></span> — Sagas are a common development blueprint, but they can be difficult to build, test, and maintain–learn how we can help.</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="el-item item " ok 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://utcc.utoronto.ca/~cks/space/blog/programming/GoAvoidingAnyAsAType" title="utcc.utoronto.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;">'I'm Going to Avoid using <code style='font-family: menlo, monaco, "Ubuntu Mono", courier, monospace; font-weight: normal; background-color: inherit;'>any</code> as an Actual Type'</a></span> — Generics introduced the <code>any</code> type, which, conceptually, is similar to <code>interface{},</code> but using <code>any</code> as a type outside generics in place of <code>interface{}</code> means something different.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Chris Siebenmann </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " ok 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://eli.thegreenplace.net/2024/using-gemini-models-in-go-with-langchaingo/" 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;">Using Gemini Models in Go with LangChainGo</a></span> — In this context, <a target="_blank" href="https://deepmind.google/technologies/gemini/#introduction" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;"><em>Gemini</em></a> refers to Google’s multimodal AI model which you can use via Google Cloud.</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="miniitem item " ok 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://rednafi.com/go/type_assertion_vs_type_switches/" 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;">Type Assertion vs Type Switches</a></span> — A little <em>aide memoire.</em> <br><span class="name" style="color: #5a5a5a; margin-top: 4px; text-transform: uppercase; font-size: 12px; line-height: 1.3em;">Redowan Delowar</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%" cellpadding="0" cellspacing="0" class="el-item item " ok 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/nichady/golte" 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;">Golte: Render Svelte Components in Go HTTP Handlers</a></span> — A library that works with your router of choice, where layouts can be treated like middleware, and pages can be treated like handlers.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Nicholas Thai </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " ok 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/yuin/goldmark" 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;">Goldmark 1.7: A Markdown Parser Written in Go</a></span> — Pure Go, easy to extend, and <a target="_blank" href="https://commonmark.org/" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;">CommonMark</a> compliant (which GitHub-Flavored Markdown is based upon). There’s a WebAssembly-powered <a target="_blank" href="https://yuin.github.io/goldmark/playground/" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;">Goldmark playground</a> you can play with, 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;">Yusuke Inuzuka </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-subtable classifieds" style="background-color: #ffffee; margin-top: 15px; box-shadow: 6px 6px 0px #eee; border-collapse: collapse; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #eec; border-right-color: #eec; border-bottom-color: #eec; border-left-color: #eec; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid;" ok><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;"> <table width="100%" cellpadding="0" cellspacing="0" style="border-collapse: collapse; margin-top: 0 !important;"><tr><td style="height: 4px; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse;"></td></tr></table> <!-- normal content section --> <table width="100%" cellpadding="0" cellspacing="0" class="content el-content " 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="font-size: 1.2em; text-transform: uppercase; font-weight: 600; display: inline-block; margin-bottom: 8px; margin-top: 0.8em;">📰 Classifieds</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;">🪐 <a target="_blank" href="https://authzed.com/spicedb?utm_source=sponsored_newsletter&amp;utm_medium=display&amp;utm_campaign=golang_newsletter" style="text-decoration: none; color: #0099b4; font-weight: 600;">Build application permissions with Zanzibar-inspired SpiceDB:</a> tunable consistency, dynamic policy evaluation, robust observability, and <a target="_blank" href="https://authzed.com/spicedb?utm_source=sponsored_newsletter&amp;utm_medium=display&amp;utm_campaign=golang_newsletter" style="text-decoration: none; color: #0099b4; font-weight: 600;">more</a>.</p> <hr> <p style="margin-top: 0.8em; margin-bottom: 0.8em;">📢 100% PostgreSQL distributed across 3 regions with multi-master, latency-based DNS routing available in a fully managed cloud - <a target="_blank" href="https://www.pgedge.com/get-started/cloud" style="text-decoration: none; color: #0099b4; font-weight: 600;">free sign up</a>.</p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" style="border-collapse: collapse;"><tr><td style="height: 12px; 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: 18px; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse;"></td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " ok 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/mmcdole/gofeed" 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;">Gofeed: A Parser for RSS, Atom, and JSON Feeds</a></span> — A mature, heavily relied upon, and robust option for parsing RSS, Atom <em>and</em> JSON feeds.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">mmcdole </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " ok 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/allaboutapps/integresql" 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;">IntegreSQL: Manages Isolated Postgres Databases for Testing</a></span> — Provides a RESTful JSON API for managing Postgres templates and spinning up (and managing the pool of) databases for integration testing purposes.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">all about apps GmbH </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " ok 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://inbucket.org/" title="inbucket.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;">Inbucket: Disposable Webmail Server with SMTP and POP3</a></span> — A self hostable service for testing email – it accepts messages for any address and makes them available over Web, REST and POP3 interfaces. <a target="_blank" href="https://github.com/inbucket/inbucket" 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;">James Hillyerd </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="content el-md releases flat" style="border-collapse: collapse;" ok><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;"> <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/SolarLune/tetra3d" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">Tetra3D 0.15.0</a> – 3D renderer for games built atop <a target="_blank" href="https://ebitengine.org/" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">Ebitengine.</a></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/knadh/listmonk/releases/tag/v3.0.0" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">Listmonk 3.0</a> – Self hosted email newsletter system (<a target="_blank" href="https://listmonk.app/" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">homepage</a>).</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/nicksnyder/go-i18n" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">go-i18n 2.4</a> – Translate programs into multiple (natural) languages.</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/charmbracelet/wish" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">Wish 1.3</a> – Charm's tooling to make Go-powered SSH apps.</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/goreleaser/goreleaser" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">GoReleaser 1.24</a> – Build/release binaries for multiple platforms.</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/dunglas/frankenphp" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">FrankenPHP 1.1</a> – Modern Go-powered PHP app server.</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/charmbracelet/bubbles/releases/tag/v0.18.0" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">Bubbles 0.18</a> – TUI components for <a target="_blank" href="https://github.com/charmbracelet/bubbletea" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">Bubble Tea.</a></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/golang-module/carbon" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">Carbon 2.3.8</a> – Friendly time manipulation 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/knqyf263/pet" style="text-decoration: none; color: #0099b4; font-weight: 600; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">Pet 0.6</a> – Simple CLI-based snippet manager.</p> </li> </ul> </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;">🀄️ Pattern recognition..</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://github.com/cel7t/TileEx" style="text-decoration: none; color: #0099b4;"><img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/vwqw1owlyc9qr3e3a0sa.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 " ok 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/cel7t/TileEx" 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;">TileEx: A Tile Pattern Extractor</a></span> — A fun little Go project that can take in an image that contains a pattern and then extract the actual repeating tile element from it. Surprisingly little code, 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;">Sarthak Shah </p> </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/493">&laquo; Prev</a> </div> <div class="center"> <!-- Issue 494 --> </div> <div class="next"> <a href="/issues/495">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="AgZeqk9G3Pjpo-hZHDwQ5qXlGdZqqMd7aDRULjUKa9M" /> </form> </div> </section> <img src="/open/494/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