Golang Ninja Newsletter - Issue #12
Tags: go, backend, programming, google
Published: 2018-07-23 14:09:05

---
title: Golang Ninja Newsletter - Issue #12
published: yes
description: Stay up-to-date and ahead of your peers with Maarten Bezemer’s weekly newsletter for Golang Ninjas.
tags: golang, backend, programming, google
---
Weekly · <a href="https://medium.com/@veger" data-href="https://medium.com/@veger" data-anchor-type="2" data-user-id="e06b7bac5111" data-action-value="e06b7bac5111" data-action="show-user-card" data-action-type="hover" class="markup--user markup--blockquote-user" target="_blank">Maarten Bezemer</a> · July 22 · <a href="https://www.getrevue.co/profile/golang-jexia/issues/golang-ninjas-newsletter-issue-9-119028?" data-href="https://www.getrevue.co/profile/golang-jexia/issues/golang-ninjas-newsletter-issue-9-119028?" class="markup--anchor markup--blockquote-anchor" rel="nofollow noopener noopener noopener noopener nofollow noopener" target="_blank">Join for free</a> or add the <a href="http://fetchrss.com/rss/5b27d6348a93f858388b4567788630470.xml" data-href="http://fetchrss.com/rss/5b27d6348a93f858388b4567788630470.xml" class="markup--anchor markup--blockquote-anchor" rel="noopener nofollow" target="_blank">newsletter rss</a>

<img src="https://thepracticaldev.s3.amazonaws.com/i/0r4kshz09w5whrvmmtop.jpg"></img>

<strong>Stay up-to-date and ahead of your peers with Maarten Bezemer’s weekly newsletter for Golang Ninjas.</strong>

<h2>News</h2>
<p>
<strong style='display: block;'><a href="https://jaxenter.com/go-modules-land-go-1-11-146903.html?utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">Go modules lands in Go 1.11</a></strong>
Go 1.11 (expected to be released in August 2018) adds experimental support for modules. Let’s take a look and see what this means for Go developers.
</p>
<p>
<strong style='display: block;'><a href="https://dave.cheney.net/2018/07/14/taking-go-modules-for-a-spin?utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">Taking Go modules for a spin</a></strong>
<p>I wanted to play with Ubuntu 18.04 on a spare machine. This gave me an excuse to try out the modules feature recently merged into the Go 1.11 development branch.</p>
</p>
<a href="https://twitter.com/_rsc/status/1019743820299341824"><img src="https://thepracticaldev.s3.amazonaws.com/i/c93aqmu0yiv8iz2bl18n.png"</a></img>
<h2>Fundamentals</h2>
<p>
<strong style='display: block;'><a href="https://medium.com/@geghamjivanyan/types-in-go-and-python-9aa0fbc25882?utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">Types in Go and Python</a></strong>
<p>Despite of other properties programming languages are statically typed (eg. GO) and dynamically typed (eg. Python).&nbsp;</p>
</p>
<p>
<strong style='display: block;'><a href="https://medium.com/jexia/from-ruby-to-golang-ruby-each-equivalent-in-go-1a78e371c520?utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">From Ruby to Golang — Ruby ‘each’ equivalent in Go</a></strong>
<p>We create an array with 4 items, then using each, we create a block iterating over the fruits array, with a local variable fruit, then we print the value of fruit using puts.</p>
</p>
<h2>Best-practices</h2>
<p>
<strong style='display: block;'><a href="https://www.ardanlabs.com/blog/2018/02/focus-on-being-precise.html?utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">Focus on being precise</a></strong>
<p>I was guided for many years to write generalised functions and to create layers upon layers of abstraction so things don’t break as business requirements change.</p>
</p>
<p>
<strong style='display: block;'><a href="https://www.zachjohnsondev.com/posts/lambda-go-middleware/?utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">Writing Go middleware for AWS Lambda</a></strong>
<p>This post assumes a base level of knowledge in AWS Lambda functions written in Go.<br></p>
</p>
<a href="https://twitter.com/chimeracoder/status/1019331017302298632"><img src="https://thepracticaldev.s3.amazonaws.com/i/0fuzwo9jcxych0vb2njc.png"</a></img>
<p>
<strong style='display: block;'><a href="https://medium.com/@karanbirchahal/implementing-in-memory-data-structures-in-go-ef6ee1a88146?utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">Implementing in-memory data structures in Go</a></strong>
<p>We talk about how the DHT is implemented for hydra. We are assuming that the reader is already aware of the Kademlia protocol. If not read this to get up to date.</p>
</p>
<p>
<strong style='display: block;'><a href="https://medium.com/@KentGruber/building-a-high-performance-port-scanner-with-golang-9976181ec39d?utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">Building a high performance port scanner with Golang</a></strong>
<p>Go has a fantastic multi-threading API which allows for all sorts of opportunities for building high performance tools, including one of my favourites, a port scanner!</p>
</p>
<h2>Tutorials</h2>
<p>
<strong style='display: block;'><a href="https://tapoueh.org/blog/2018/07/postgresql-listen/notify/?utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">PostgreSQL LISTEN/NOTIFY</a></strong>
<p>Maintain an external cache in another
application layer. We are going to maintain an in-memory
cache in a Go service, using PostgreSQL
LISTEN and
NOTIFY
features.</p>
</p>
<p>
<strong style='display: block;'><a href="https://devtheweb.io/?utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Master%20the%20World%20of%20Golang">How to test TCP/UDP connections in Go - part 2</a></strong>
<p>Before continuing please ensure you’ve read the first installment of this series - <a href="https://devtheweb.io/blog/2018/07/testing-net-connections-part-one/">How to test TCP/UDP connections in Go - Part 1.</a><br></p>
</p>
<a href="https://twitter.com/rakyll/status/1019455441300963328"><img src="https://thepracticaldev.s3.amazonaws.com/i/k84cxqiurjafrtih8kpt.png"</a></img>
<p>
<strong style='display: block;'><a href="https://medium.com/@errata.ai/prodigy-prose-radically-efficient-machine-teaching-in-go-93389bf2d772?utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">Prodigy + Prose: Radically efficient machine teaching in Go</a></strong>
<p>We’ll learn how to teach the prose library to recognize a completely new entity label called PRODUCT. It will represent various brand names such as “Windows 10”.&nbsp;</p>
</p>
<p>
<strong style='display: block;'><a href="https://blog.couchbase.com/authorization-with-graphql-golang-and-couchbase-nosql-using-jwt/?utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">Authorise with GraphQL, Go,and Couchbase NoSQL using JWT</a></strong>
<p>Create a web app that uses Couchbase as the NoSQL database, Go for the web application backend, GraphQL for the frontend query technology, and JSON web tokens (JWT) for the authorization component.</p>
</p>
<h2>Tools</h2>
<p>
<strong style='display: block;'><a href="https://medium.com/neo4j/neo4j-drivers-are-go-9697baf4d116?utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">Neo4j Drivers are Go</a></strong>
Depending on where you’re from, it could be said that 2016 was a year with some pretty significant events. When I look back to that year, one of the most exciting moments for me came in April, when…
</p>
<p>
<strong style='display: block;'><a href="https://blog.usejournal.com/contributing-to-go-with-go-critic-88a25e162bf6?gi=10f6e367184b&amp;utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">Contributing to Go with go-critic</a></strong>
<p>We’ve verified golang/go repository and have send few patches, that are fixing found problems. In this post, we will inspect the suggested changes.</p>
</p>
<a href="https://twitter.com/fatih/status/1019643295490871296"><img src="https://thepracticaldev.s3.amazonaws.com/i/rlvfc0kw8idfn6rh3lr2.png"</a></img>
<p>
<strong style='display: block;'><a href="https://github.com/rtr7/router7?utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Master%20the%20World%20of%20Golang">Pure-Go small home internet router</a></strong>
<p>Router7 is a pure-Go implementation of a small home internet router. It comes with all the services required to make a fiber7 internet connection work.<br></p>
</p>
<p>
<strong style='display: block;'><a href="https://medium.com/@errata.ai/introducing-prose-v2-0-0-bringing-nlp-to-go-a1f0c121e4a5?utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">Introducing prose v2.0.0: bringing NLP to Go</a></strong>
<p>We’re pleased to announce the v2.0.0 release of prose, a natural language processing (NLP) library for Go.</p>
</p>
<p>
<strong style='display: block;'><a href="https://medium.freecodecamp.org/the-benefits-of-using-lodash-in-the-go-language-without-reflection-1d64b5115486?gi=159b8c4dd57a&amp;utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">Benefits of using Lodash in the Go language without reflection</a></strong>
<p>Working with Node.js, I’ve grown to rely on Lodash as an invaluable tool.</p>
</p>
<a href="https://twitter.com/tbpalsulich/status/1019343917068800003"><img src="https://thepracticaldev.s3.amazonaws.com/i/wkzsvs4b1pkk47orgoix.png"</a></img>
<h2>Scientific paper</h2>
<p>
<strong style='display: block;'><a href="https://arxiv.org/pdf/1807.03585.pdf?utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">Two-phase dynamic Analysis of Message-Passing Go Programs
based on Vector Clocks</a></strong>
<p>Understanding the run-time behavior of concurrent programs is&nbsp;<span style="background-color: transparent;">a challenging task. A popular approach is to establish a happens-before&nbsp;</span><span style="background-color: transparent;">relation via vector clocks. T</span></p>
</p>
<h2>Talks about Golang</h2>
<p>
<strong style='display: block;'><a href="https://blog.golang.org/ismmkeynote?utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Master%20the%20World%20of%20Golang">Getting to Go: journey of Go&#39;s garbage collector</a></strong>
<p>Go features goals and use cases forced us to rethink the entire garbage collection stack and led us to a surprising place. This talk describes our journey.<br></p>
</p>
<p>
<img width="140" height="140" alt="Episode 124. nil and AST · " style="float: right; margin-left: 20px; margin-bottom: 20px;" src="https://s3.amazonaws.com/revue/items/images/003/240/240/thumb/cover.png?1532119439" />
<strong style='display: block;'><a href="http://golangshow.com/episode/2018/06-17-124-en/?utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">Episode 124. nil and AST · </a> &mdash; <a href="http://golangshow.com/episode/2018/06-17-124-en/">golangshow.com</a></strong>
<p>Episode 124 [en]. nil and AST. Bonus: an Interview with @bradfitz and @bketelsen at @GopherConRu.</p>

Weekly · <a href="https://medium.com/@veger" data-href="https://medium.com/@veger" data-anchor-type="2" data-user-id="e06b7bac5111" data-action-value="e06b7bac5111" data-action="show-user-card" data-action-type="hover" class="markup--user markup--blockquote-user" target="_blank">Maarten Bezemer</a> · July 22 · <a href="https://www.getrevue.co/profile/golang-jexia/issues/golang-ninjas-newsletter-issue-9-119028?" data-href="https://www.getrevue.co/profile/golang-jexia/issues/golang-ninjas-newsletter-issue-9-119028?" class="markup--anchor markup--blockquote-anchor" rel="nofollow noopener noopener noopener noopener nofollow noopener" target="_blank">Join for free</a> or add the <a href="http://fetchrss.com/rss/5b27d6348a93f858388b4567788630470.xml" data-href="http://fetchrss.com/rss/5b27d6348a93f858388b4567788630470.xml" class="markup--anchor markup--blockquote-anchor" rel="noopener nofollow" target="_blank">newsletter rss</a>