---
title: "Control your computer with Go"
publication: "Go Weekly"
issue: 314
published_at: "2020-05-29"
canonical_url: "https://golangweekly.com/issues/314"
---

Plus more Go news and links.       

#314 — May 29, 2020 

[Unsubscribe](https://golangweekly.com/leave/*|UID|*)|[Read on the Web](https://golangweekly.com/issues/314)   

🐱 Some fun side projects at the end of the issue this week, especially if you like dancing gophers.. 😄  

Golang Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/v1590748997/bvrjjkfsfe1acbfgrg9r.jpg)](https://github.com/go-vgo/robotgo)  

[RobotGo 0.90: Native Cross-Platform GUI Automation](https://github.com/go-vgo/robotgo) — We’ve linked this a few times over the years but it’s just had a _huge_ update. Control the pointer, keyboard, read the screen, etc.. you could use this to automate many computer-based jobs with enough creativity 😁 [0.90.0 release notes.](https://github.com/go-vgo/robotgo/releases/tag/v0.90.0) The [examples](https://github.com/go-vgo/robotgo#examples) give a good sense of the API too. 

V Caesar et al.   

[Diamond Interface Composition in Go 1.14](https://dave.cheney.net/2020/05/24/diamond-interface-composition-in-go-1-14) — Go 1.14 permits embedding interfaces with overlapping method sets ([specified here](https://github.com/golang/proposal/blob/master/design/6977-overlapping-interfaces.md)) and Dave quickly looks at what that means. 

Dave Cheney   [![\](https://copm.s3.amazonaws.com/1c609764.png)](https://link.sqreen.com/54eYLYto) 

[Secure Your Go Application with Sqreen](https://link.sqreen.com/54eYLYto) — Join us and learn more about Go application security best practices and how to secure your Go apps with Sqreen. 

Sqreen sponsor   

[Micro: A Go-Powered Terminal-Based Text Editor](https://github.com/zyedidia/micro) — Now aiming to be “somewhat of a successor to the nano editor”, Micro is now a pretty mature and good example of building a text editor in Go. [2.0.4](https://github.com/zyedidia/micro/releases/tag/v2.0.4) just dropped. 

Zachary Yedidia   

[What Are Goroutines and How Big Are They?](https://tpaschalis.github.io/goroutines-size/) — Goroutines are frequently called ‘lightweight’ threads, but just how light? Paschalis goes poking and benchmarking to find out more. 

Paschalis Tsilias  

💻 Jobs  

[Want to Build a Platform Ecosystem in Go?](https://jobs.lever.co/skool/8138378a-62c6-4b1c-a6c0-594126b83634?lever-origin=applied&lever-source%5B%5D=Go%20newsletter&lever-source%5B%5D=Go%20newsletter) — Skool is hiring its 2nd backend engineer in Los Angeles, CA. Go, PostgreSQL, Redis, Elasticsearch, Docker. [Apply now](https://jobs.lever.co/skool/8138378a-62c6-4b1c-a6c0-594126b83634). 

SKOOL   

[Golang Developer at X-Team (Remote)](https://x-team.com/remote-go-developer-jobs/?utm_source=cooperpress&utm_medium=email-ad&utm_campaign=go) — Join X-Team and work on projects for companies like Riot Games, FOX, Coinbase, and more. Work from anywhere. 

X-Team   

[Find a Job Through Vettery](https://www.vettery.com/tech?utm_source=newsletter&utm_medium=cooper-golangweekly&utm_term=tech&utm_content=grouped&utm_campaign=ad-77582) — Vettery specializes in tech roles and is completely free for job seekers. Create a profile to get started. 

Vettery  

📚 Articles & Tutorials  

[Instrumentation in Go](https://gbws.io/articles/instrumentation-in-go/) — Thoughts on how Go programs should be instrumented “in a clean and flexible way.” Then once you’ve got the basics down, you could move on to using things like [OpenTelemetry](https://opentelemetry.io/). 

Sergey Kamardin   

[Diving Into Go by Building a CLI Application](https://eryb.space/2020/05/27/diving-into-go-by-building-a-cli-application.html) — A straightforward code-heavy tutorial aimed at someone _“somewhere between a beginner and an intermediate.”_ 

Eryb   

[Go and CPU Caches](https://medium.com/@teivah/go-and-cpu-caches-af5d32cc5592) — How can understanding the basics of processor architecture help us in optimizing performance? 

Teiva Harsanyi   

[Find & Fix Code Performance Issues](https://blackfire.io/go?utm_source=golang_weekly&utm_medium=newsletter&utm_campaign=g_beta_launch) — Install in minutes. Profile & understand Go code’s behavior & performance. Browse through appealing graphs. 

Blackfire.io sponsor   

[A Book Review of _Writing an Interpreter in Go_](https://joeprevite.com/book-review-writing-an-interpreter-in-go) — Thorsten Ball’s [Writing A Compiler in Go](https://compilerbook.com/) gets lot of kudos but is it worth the money? Joe, a total newcomer to Go, decided to dive in and learnt a lot along the way, much of which he shares here. 

Joe Previte   

[Optional JSON Fields in Go](https://eli.thegreenplace.net/2020/optional-json-fields-in-go/) — If you need to set default values, this post points (HA!) out a couple of approaches, along with their pros & cons. 

Eli Bendersky   

[Build a Go Application using OpenShift Pipelines](https://developers.redhat.com/blog/2020/05/26/build-a-go-application-using-openshift-pipelines/) — You only need this if you’re in the OpenShift world. It’s an introduction to using the OpenShift and Tekton-based _Pipelines_ CI/CD system as part of a Go app building process. 

Don Schenck   

[maybedoer: The Maybe Monoid for Go](https://christine.website/blog/maybedoer-2020-05-23) 

Christine Dodrill   

[Immutability Patterns in Go](https://rauljordan.com/2020/05/25/immutability-patterns-in-go.html) 

Raul Jordan  

🛠 Code & Tools  

[Introducing Athenadriver: An Open Source Amazon Athena Database Driver for Go](https://eng.uber.com/introducing-athenadriver/) — Amazon Athena is a service for doing analysis directly on data in S3 using standard SQL. Uber has created a Go driver that is `database/sql` compatible. 

Uber Engineering   

[SDNS: A Lightweight, Fast Recursive DNS Server with DNSSEC Support](https://github.com/semihalev/sdns) — We first linked this two years ago but this week it’s reached [version 1.0.](https://github.com/semihalev/sdns/releases/tag/v1.0.0) Congrats. 

Yasar Alev   

[go-git 5.1: An Extensible Git Implementation in Pure Go](https://github.com/go-git/go-git) — _“Manipulate git repositories at low level (plumbing) or high level (porcelain), through an idiomatic Go API.”_ 

go-git   

[Optimize Your Golang Apps with End-To-End Tracing in One Place](https://www.datadoghq.com/dg/apm/go-application-performance/?utm_source=Advertisement&utm_medium=CooperPress&utm_campaign=CooperPress-GoWeeklyPerformanceB) 

Datadog sponsor   

[A Collection of Technical Interview-Style Questions Solved with Go](https://github.com/shomali11/go-interview) — Things like ‘implement a doubly linked list’, ‘count the number of digits in a number’, etc. Not examples to be taken as _the_ best solution but worth revising if you think you’ll need to code these sorts of things on the fly at some point. 

Raed Shomali   

[go-mod-outdated: A Tool to Find Outdated Dependencies](https://github.com/psampaz/go-mod-outdated) 

Pantelis Sampaziotis  

🎲 Fun and Side Projects 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/v1590671393/au8t7sibtbblbsetismo.png)](https://github.com/80at8/gopherdance/)  

[gopherdance: Some Dancing Gophers in Your Terminal](https://github.com/80at8/gopherdance/) — The creator is working on the [PIXterm](https://github.com/eliukblau/pixterm) ANSI art library and this is a neat proof of concept. 

80at8   

[Netris: A Multiplayer Tetris Clone](https://gitlab.com/tslocum/netris) — Built in Go and designed to be played _over SSH_ (indeed, you can `ssh netris.rocketnine.space` right now, but there were no other players when I tried it). 

Trevor Slocum   

[Go-Powered Autopilot for Docking the SpaceX Dragon Capsule](https://github.com/mbertschler/dragon-iss-docking-autopilot) — Calm down, this isn’t for the _real_ SpaceX capsule, but for [this official online simulation](https://iss-sim.spacex.com/) of the docking process. Still very cool though :-) 

Martin Bertschler   

If you want to get into a section like this in a future issue, let us know if you work on any interesting Go related projects you think we should include. Bonus points for games, musical, or anything with a nice visual angle we can include, but everything welcome. 😄       

Curated by [Glenn Goodrich](https://twitter.com/ruprict) and [Peter Cooper](https://twitter.com/peterc). 

[Change your email address](https://golangweekly.com/edit_subscription/*|UID|*) or[Stop getting this newsletter](https://golangweekly.com/leave/*|UID|*) 

© Cooper Press Ltd · Fairfield Enterprise Centre, Louth, LN11 0LS, United Kingdom
