There was a question in CatOps chat regarding the resources to learn the Go programming language from scratch with the background in other technologies.
So, here is a quick ad-hoc list of resources, we came up with:
Books:
- Go in Practice
- The Go Programming Language
Courses and tutorials:
- Practical Go Lessons
- Algorythms with Go
- Go by Example
- Effective Go
Blogs:
- Three Dots Labs
Of course, you can also find a great list of learning materials in the Awesome Go list
If you would like to add to this short list - welcome in the comments!
#programming #go
So, here is a quick ad-hoc list of resources, we came up with:
Books:
- Go in Practice
- The Go Programming Language
Courses and tutorials:
- Practical Go Lessons
- Algorythms with Go
- Go by Example
- Effective Go
Blogs:
- Three Dots Labs
Of course, you can also find a great list of learning materials in the Awesome Go list
If you would like to add to this short list - welcome in the comments!
#programming #go
Telegram
CatOps Chat
Chat of the @catops channel
DevOps-ish community loves Go.
So, here's a short story about simple re-arranging fields in a
#programming #go #performance
So, here's a short story about simple re-arranging fields in a
struct
that saved 1/3 of memory consumption.#programming #go #performance
Upcoming features of Go 1.18
Yes, generics, but not only.
Also, here's the draft for release notes, but it's still in progress.
#go #programming
Yes, generics, but not only.
Also, here's the draft for release notes, but it's still in progress.
#go #programming
sebastian-holstein.de
Upcoming Features in Go 1.18 | Sebastian Holstein
Not so long time ago, I shared with you a tool called Acra for encryption/decryption of sensitive data in a database. This tool is written in Go, and obviously it uses TLS.
Now, they have written an article about TLS implementation in Go, specifically about the implementation of OCSP and CRL extensions.
This article would be interesting for you, foremost, to get some ideas on OCSP and CRL extensions and their use cases. Secondly, if you need to implement TLS in your apps or advise on the implementation to your developers.
#security #programming #go #tls
Now, they have written an article about TLS implementation in Go, specifically about the implementation of OCSP and CRL extensions.
This article would be interesting for you, foremost, to get some ideas on OCSP and CRL extensions and their use cases. Secondly, if you need to implement TLS in your apps or advise on the implementation to your developers.
#security #programming #go #tls
Cossack Labs
TLS certificate validation in Golang: CRL & OCSP examples | Cossack Labs
All developers need to know about using OCSP and CRL for validating TLS certificates in Go apps. Things we’ve learnt while building our own OCSP/CRL validation tooling: design, implementation and security tips, example code and popular mistakes.
A nice small article on when it makes sense to use pointers in Go.
As with the previous article, if you write in Go a lot that would probably provide you no new information. However, if you’re just learning it or switching from another language like Python, or writing Go code not that frequent; this article should be interesting.
And a quote:
#go #programming
As with the previous article, if you write in Go a lot that would probably provide you no new information. However, if you’re just learning it or switching from another language like Python, or writing Go code not that frequent; this article should be interesting.
And a quote:
In fact, I'll quote Ben Darnell, who is the lead engineer of CockroachDB (built in Go) :
"Whenever in doubt, use a value instead of a pointer"
#go #programming
Go long with Golang
When Should You Use Pointers in Go
The concept of pointers in programming languages is quite old. Golang also implements them.
So, on Friday I told you that I’m working on something new and now I’m ready to drop yet another teaser!
In nutshell, I’m going to write a series of articles on the basics of CLI applications in Go. A teaser or Part 0 of this series is already available in my blog!
There I talk about side projects and my motivation to write that tiny app as well as to start this series.
I will post new parts here as they appear. Also, you can subscribe to the CatOps newsletter to get bi-weekly digest of what has happened here.
#go #programming #blog #oc
In nutshell, I’m going to write a series of articles on the basics of CLI applications in Go. A teaser or Part 0 of this series is already available in my blog!
There I talk about side projects and my motivation to write that tiny app as well as to start this series.
I will post new parts here as they appear. Also, you can subscribe to the CatOps newsletter to get bi-weekly digest of what has happened here.
#go #programming #blog #oc
grem1.in
Building a CLI application in Go: Part 0
Building a CLI application in Go: Part 0 Intro I have written a tiny CLI app that can update the storage class of objects in an AWS S3 Bucket. To be completely honest, this tool is rather useless in the wild. You can achieve the same results natively with…
Now, Go ecosystem has a vulnerability checker in their toolset.
From the doc:
Just keep in mind that you have to have Go version >= 1.18.
#go #programming
From the doc:
new govulncheck command is a low-noise, reliable way for Go users to learn about known vulnerabilities that may affect their projects. Govulncheck analyzes your codebase and only surfaces vulnerabilities that actually affect you, based on which functions in your code are transitively calling vulnerable functions.
Just keep in mind that you have to have Go version >= 1.18.
#go #programming
go.dev
Vulnerability Management for Go - The Go Programming Language
Announcing vulnerability management for Go, to help developers learn about known vulnerabilities in their dependencies.
This is a small nice article about how small changes could impact performance.
I like such stories very much. I believe, they expose the beauty of software engineering. Just like in maths classes complex equations result in something like x = 1.
Also, one can learn from this article a thing or two about the memory allocation in Go as well as some performance profiling techniques.
#programming #go #performance
I like such stories very much. I believe, they expose the beauty of software engineering. Just like in maths classes complex equations result in something like x = 1.
Also, one can learn from this article a thing or two about the memory allocation in Go as well as some performance profiling techniques.
#programming #go #performance
Hmarr
Making a Go program run 1.7x faster with a one character change • Harry Marr
Programmer and engineering manager working at GitHub. Co-founded Dependabot, and helped build Monzo and GoCardless.
Here’s an article on Currying in Go. Currying is a technique borrowed from the functional programming. It’s essentially a partial implementation of a function.
Anyways, I find such articles interesting, because they show some unconventional angles of a language. I haven’t personally used currying in Go yet. However, examples in that article look reasonable. Maybe, one I day I will try it.
I’m not saying that you should use this technique in your code, but maybe you find it useful. In the latter case, you’re welcome!
#go #programming
Anyways, I find such articles interesting, because they show some unconventional angles of a language. I haven’t personally used currying in Go yet. However, examples in that article look reasonable. Maybe, one I day I will try it.
I’m not saying that you should use this technique in your code, but maybe you find it useful. In the latter case, you’re welcome!
#go #programming
Notify is a simple Go library to send notifications to various channels e.g. popular messengers, social apps and message services such as SNS.
You can find the list of all supported destinations as well as an example of usage in the README.
#programming #go
You can find the list of all supported destinations as well as an example of usage in the README.
#programming #go
GitHub
GitHub - nikoksr/notify: A dead simple Go library for sending notifications to various messaging services.
A dead simple Go library for sending notifications to various messaging services. - nikoksr/notify
So, I was out for some time because both FOSDEM and Cfgmgmt Camp conferences are back offline.
Here you can find some notes from a friend of mine on some talks from the Go devroom:
- Summary “Five Steps to Make Your Go Code Faster & More Efficient”
- Summary “Squeezing a go function”
- Summary “Recipes for reducing cognitive load”
I need some time to process both conferences and write something on my own. I'll try to do it this week, but no commitments.
Also, a lot of FOSDEM videos are already available online. You can check them out on the official website.
#slides #go #programing
Here you can find some notes from a friend of mine on some talks from the Go devroom:
- Summary “Five Steps to Make Your Go Code Faster & More Efficient”
- Summary “Squeezing a go function”
- Summary “Recipes for reducing cognitive load”
I need some time to process both conferences and write something on my own. I'll try to do it this week, but no commitments.
Also, a lot of FOSDEM videos are already available online. You can check them out on the official website.
#slides #go #programing
Medium
Summary “Five Steps to Make Your Go Code Faster & More Efficient” FOSDEM 04.02.2023 by Bartek Plotka
Summary of the ‘Efficient Go’ Book. Story from Thanos project inspired it.
I've been working a lot with Makefiles lately, and I must say, it's not the most pleasant experience. Back in a day, I had a post here about how to replace GNU Make with Python's Invoke.
Today, I want to share a tool called Mage. It is a make/rake-like build tool using Go that depends only on Go's standard library. Ofc, some other Go-based task execution tools exist, like, for example Task.
However, unlike Task, Mage leverages plain Go syntax while Task uses YAML to define its recipes. Thus, Mage is much more flexible, especially when it comes to loops and so on. Also, you can write automation for your projects with Go!
P.S. A link to the post about Invoke.
#go #tools
Today, I want to share a tool called Mage. It is a make/rake-like build tool using Go that depends only on Go's standard library. Ofc, some other Go-based task execution tools exist, like, for example Task.
However, unlike Task, Mage leverages plain Go syntax while Task uses YAML to define its recipes. Thus, Mage is much more flexible, especially when it comes to loops and so on. Also, you can write automation for your projects with Go!
P.S. A link to the post about Invoke.
#go #tools
Handling concurrency is hard, even if it was made simple.
The Go 1.19 Atomic Wrappers and why to use them explores the sync/atomic package which was introduced in Go 1.19 and use cases for it.
I haven't used this one personally, but we have
#go #programming
The Go 1.19 Atomic Wrappers and why to use them explores the sync/atomic package which was introduced in Go 1.19 and use cases for it.
I haven't used this one personally, but we have
sync.Map
in one of the projects to get the results from goroutines in one place.#go #programming
Medium
The Go 1.19 Atomic Wrappers and why to use them
Here’s a short blog on Go’s (1.19+) sync/atomic additions to the library and why you’d want to use them. This article will assume that you…
Avoiding Pitfalls in Go is a good article for those who just starts their journey with this language.
Yet, there are some aspects that are useful even if you use it already. Especially, if your use cases were limited to some simple code.
#programming #go
Yet, there are some aspects that are useful even if you use it already. Especially, if your use cases were limited to some simple code.
#programming #go
Dolthub
Avoiding Pitfalls in Go
Blog for DoltHub, a website hosting databases made with Dolt, an open-source version-controlled SQL database with Git-like semantics.
Bounded channels is a common way of limiting the concurrency in Go applications.
From this article you can learn some theory behind this approach as well as about the
#programming #go
From this article you can learn some theory behind this approach as well as about the
sync/semaphore
package. I didn’t know about the latter.#programming #go
Medium
Go’s Extended Concurrency: Semaphores (Part 1)
Goroutines, Channels and Mutexes — if you’ve spent any significant time with Go’s tried and true synchronization primitives at all you…
If you have AWS Lambdas in Go, you likely know that AWS is going to deprecate the
The premise is that the new runtime is more performant. However, here is an article that argues why this move is bad for Go users on AWS as well as goes through some caveats you may encounter during the migration.
#go #aws #serverless
go1.x
runtime and forces its users to migrate to the generic al2.provided
runtime.The premise is that the new runtime is more performant. However, here is an article that argues why this move is bad for Go users on AWS as well as goes through some caveats you may encounter during the migration.
#go #aws #serverless
www.wolfe.id.au
RIP AWS Go Lambda Runtime | Mark Wolfe's Blog
Amazon Web Services (AWS) is deprecating the go1.x runtime on Lambda, this is currently scheduled for December 31, 2023. Customers need to migrate their Go based lambda functions to the al2.provided runtime, which uses Amazon Linux 2 as the execution environment.…
I think I have posted something like this before, but anyway...
Here's a two part story of how to optimize memory usage of a Go application just by reshuffling fields in structs.
Part one provides some theory on this matter, while part two has some benchmarking results.
I'm not trying to say that you should run and reshuffle fields in all your Go structs right now. Especially, if you're satisfied with the memory consumption of your app - sometimes it makes sense to optimize for readability or just store pointers in structs.
However, these articles describe some details of how memory allocation works in Go, which you may find interesting.
#programming #go
Here's a two part story of how to optimize memory usage of a Go application just by reshuffling fields in structs.
Part one provides some theory on this matter, while part two has some benchmarking results.
I'm not trying to say that you should run and reshuffle fields in all your Go structs right now. Especially, if you're satisfied with the memory consumption of your app - sometimes it makes sense to optimize for readability or just store pointers in structs.
However, these articles describe some details of how memory allocation works in Go, which you may find interesting.
#programming #go
Programming Bytes with Satyarth
Golang Structs Memory Allocation
The article discusses about Golang memory allocation inside structs and how it can be optimized for better performance.
Go is super popular in platform engineering. Just recently I participated in a discussion about it on Reddit :D
And at last, HumbleBundle has a book collection dedicated to this language!
#go #programming #books
And at last, HumbleBundle has a book collection dedicated to this language!
#go #programming #books
Humble Bundle
Golang Programming by Packt
Add the powerful open source language Go to your programming repertoire with this bundle of 19 books! Your purchase helps Save the Children.