Golang Ninja Newsletter - Issue #10
Tags: go, backend, programming, google
Published: 2018-07-15 19:47:58

---
title: Golang Ninja Newsletter - Issue #10
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 15 · <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>Fundamentals</h2>
<p>
<strong style='display: block;'><a href="https://dave.cheney.net/2018/07/12/slices-from-the-ground-up?utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">Slices from the ground up</a></strong>
<p>Inspired by a conversation with a co-worker about using a slice as a stack. The conversation turned into a discussion on the way slices work in Go.</p>
</p>
<p>
<strong style='display: block;'><a href="https://medium.com/@parikshit/understanding-the-context-package-in-golang-b1392c821d14?utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">Understanding the context package in Golang</a></strong>
<p>The context package in Go can come in handy while interacting with APIs and slow processes, especially in production-grade systems that serve web requests.</p>
</p>
<h2>Best-practices</h2>
<p>
<strong style='display: block;'><a href="https://medium.com/coinmonks/building-my-own-telemetry-system-for-f1-2017-game-using-golang-influxdb-and-grafana-48dedbd2cdc1?utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">Telemetry system for F1 2017, using Go, InfluxDB and Grafana</a></strong>
<p>I discovered a feature in my F1 2017 Game (PS4), navigating in a menu I sow an option called UDP Telemetry Settings with many network configurations.</p>
</p>
<p>
<strong style='display: block;'><a href="https://medium.com/dm03514-tech-blog/you-are-going-to-need-it-using-interfaces-and-dependency-injection-to-future-proof-your-designs-2cf6f58db192?utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">Use interfaces and dependency injection to future proof designs</a></strong>
<p>The use of interfaces is an easy to understand technique which enables the creation of both testable and extensible code.&nbsp;</p>
</p>
<h2>Tutorials</h2>
<p>
<strong style='display: block;'><a href="https://micro.mu/blog/2018/07/04/go-config.html?utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">Simplifying cloud native development</a></strong></p>
<p>
The micro blog is a resource for microservices and distributed systems.
</p>
<p>
<strong style='display: block;'><a href="https://sebastian-holstein.de/post/2018-07-05-go-wasm-application/?utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">Using Go for WebAssembly Applications</a></strong>
<p>A week ago, the first beta of Go 1.11 came out. For me this is a special release because it’s the first version that ships with initial WebAssembly (WASM) support.</p>
</p>
<p>
<strong style='display: block;'><a href="https://medium.zenika.com/go-webassembly-binding-structures-to-js-references-4eddd6fd4d23?gi=4269d691a23e&amp;utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">Go WebAssembly: Binding structures to JS references</a></strong>
<p>Support for WebAssembly will be shipped with Go 1.11 (expected in august 2018), and with it also the brand new syscall/js package.</p>
</p>
<h2>Tools</h2>
<p>
<strong style='display: block;'><a href="https://medium.com/azure-developers/https-medium-com-marstr-introducing-buffalo-azure-f7243670c7f9?utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">Introducing Buffalo-Azure</a></strong>
<p>For Go developers, Buffalo is a Ruby-on-Rails style rapid web development framework.</p>
</p>
<p>
<strong style='display: block;'><a href="https://outcrawl.com/go-dependency-injection/?utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">Dependency Injection in Go</a></strong>
<p>Small utility package to handle dependency injection in Go (it's in tinrab/kit, among other things). The goal was simplicity and for it to fit well in my current side project.</p>
</p>
<p>
<strong style='display: block;'><a href="https://medium.zenika.com/go-1-11-webassembly-for-the-gophers-ae4bb8b1ee03?gi=e4dff26f7fe6&amp;utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">Go 1.11: WebAssembly for the Gophers</a></strong>
<p>In February 2017, the issue for WebAssembly support was opened at golang/go by Brad Fitzpatrick member of the Go team.</p>
<p>
<strong style='display: block;'><a href="https://hackernoon.com/writing-a-reverse-proxy-in-just-one-line-with-go-c1edfa78c84b?gi=6b5cffc0b74d&amp;utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">Writing a reverse proxy in just one line with Go</a></strong>
<p>Leave your programming language hang ups at the door and come admire the best standard library I’ve ever come across.&nbsp;</p>
</p>
<p>
<strong style='display: block;'><a href="https://dspace.mit.edu/bitstream/handle/1721.1/112838/1015201398-MIT.pdf?sequence=1&amp;utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">G.E.R.T: a Go-based toolkit for embedded apps</a></strong>
<p>This paper presents a new embedded toolkit, the Golang Embedded RunTime (GERT),&nbsp;<span style="background-color: transparent;">which is specifically intended for concurrent, bare-metal embedded apps. GERT&nbsp;</span><span style="background-color: transparent;">is a modified version of the Go runtime which can boot on a bare-metal ARMv7a system&nbsp;</span><span style="background-color: transparent;">and execute Go code.</span></p>
</p>
<p>
<strong style='display: block;'><a href="https://github.com/rystsov/fast-jepsen?utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">Making Jepsen check linearizability in linear time</a></strong>
<p>Testing consistency guarantees of distributed systems. Jepsen performs operations, injects faults, collects history and then tries to see if the history is linearizable.<br></p>
</p>
<p>
<strong style='display: block;'><a href="https://medium.com/perlin-network/noise-an-opinionated-p2p-networking-stack-for-decentralized-protocols-in-go-bfc6fecf157d?utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">Opinionated, P2P networking stack for decentralized protocols</a></strong>
<p>The thing is, there has been no standardized solution to develop P2P applications that has been widely adopted by any community.</p>
</p>
<h2>Perspectives</h2>
<p>
<strong style='display: block;'><a href="https://medium.com/@markbates/i-fought-the-code-and-the-code-won-7860a1d7fd90?utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">I fought the code, and the code won</a></strong></p>
<p>
I’ve been a “professional” developer now for almost 20 years. I’ve learned a lot in the time. I want to tell you a story about the last few weeks of my life when I ignored those life lessons.
</p>
<p>
<strong style='display: block;'><a href="https://www.duo.uio.no/bitstream/handle/10852/59130/nwpt17.proceedings.mmgo.pdf?isAllowed=y&amp;sequence=2&amp;utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">Operational semantics of a weak memory model</a></strong>
<p>On one hand, memory models must be lax enough&nbsp;<span style="background-color: transparent;">to allow common hardware and compiler optimisations. On the other the more lax, the harder&nbsp;</span><span style="background-color: transparent;">it is for devs to reason about their programs. To alleviate the burden a&nbsp;</span><span style="background-color: transparent;">weak memory model should provide what is called the data-race freedom guarantee, which allows&nbsp;</span><span style="background-color: transparent;">reasoning in terms of sequential consistency provided a program is data-race free.</span></p>
<p>
<strong style='display: block;'><a href="https://segment.com/blog/goodbye-microservices/?utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">Bye microservices: From 100s of problem children to 1 superstar</a></strong>
<p>Segment is the analytics API you've always wanted. It's the easiest way to install all of your favourite analytics tools at once!</p>

<h2>Videos</h2>
<p>
<strong style='display: block;'><a href="https://www.youtube.com/watch?feature=youtu.be&amp;utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter&amp;v=t6f7438oMmM">Simple Web App With Golang &amp; WebAssembly</a></strong>
<p>You'll see how to use Golang and WebAssembly to build a simple webapp.</p>
<p>
<strong style='display: block;'><a href="https://www.youtube.com/watch?feature=youtu.be&amp;utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter&amp;v=ryA1M1iA8pw">Killer Robots 101 with Go</a></strong>
<p>Thejana Sakunajith Satanarachchi presents 'Killer Robots 101 with Go'. Robotics has always been an elusive art for most developers.</p>
<p>
<strong style='display: block;'><a href="https://www.youtube.com/watch?time_continue=6&amp;utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter&amp;v=rfXSrgIGrKo">Measuring memory allocations and how to reduce them</a></strong>
<p>In this episode we learn how to measure how many memory allocations a program is performing and how to reduce them thanks to sync.Pool, as well as how to identify which piece of your code is&nbsp;<span style="background-color: transparent;">allocating the memory thanks to pprof.</span></p>
</p>
<h2>Podcast</h2>
<p>
<strong style='display: block;'><a href="https://changelog.com/gotime/79?utm_campaign=Revue%20newsletter&amp;utm_medium=Newsletter&amp;utm_source=Golang%20Ninjas%20Newsletter">Go Time #79: New Go branding strategy  with Steve Francia</a></strong></p>
<p>
Steve Francia joined the show and told us EVERYTHING about Go's new branding strategy (and don't worry, the gopher isn't going anywhere!) 
</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 15 · <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>