f you’ve used Go for a while you’re probably aware of some of the basic Go concurrency primitives:
go keyword for spawning goroutines
- Channels, for communicating between goroutines
context package for propagating cancellation
sync/atomic packages for lower-level primitives such as mutexes and atomic memory access
These language features and packages combine to provide a very rich set of tools for building concurrent applications. What you might not have discovered yet is a set of higher-level concurrency primitives available in the “extended standard library” available at golang.org/x/sync. We’ll be taking a look at these in this article.
It’s been another busy year for our favourite Gopher and to close out the year, we’ve taken a look at the data from the popular Golang Weekly newsletter.
The email newsletter is read by over 29,000 developers — here’s a look at what they clicked on in 2019…
BitTorrent is a protocol for downloading and distributing files across the Internet. In contrast with the traditional client/server relationship, in which downloaders connect to a central server (for example: watching a movie on Netflix, or loading the web page you’re reading now), participants in the BitTorrent network, called peers, download pieces of files from each other—this is what makes it a peer-to-peer protocol. We’ll investigate how this works, and build our own client that can find peers and exchange data between them.
The protocol evolved organically over the past 20 years, and various people and organizations added extensions for features like encryption, private torrents, and new ways of finding peers. We’ll be implementing the original spec from 2001 to keep this a weekend-sized project.
While machine learning has a rich history dating back to 1959, the field is evolving at an unprecedented rate. In a recent article, I discussed why the broader artificial intelligence field is booming and likely will for some time to come. Those interested in learning ML may find it daunting to get started.
This post is part of the https://medium.com/gett-engineering/before-you-go-go-bf4f861cdec7 series, where we explore the world of Golang, provide tips and insights you should know when writing Go, so you don’t have to learn them the hard way.