× Want to read this newsletter every week?! × 👋  Join FAUN
 
Golang Weekly Newsletter, Gopa. Curated Golang news, tutorials, tools and more!
🌐 View in your browser.   |  ✍️ Publish on FAUN   |  🦄 Become a sponsor
 
GoLang best tutorials, news and libraries from last week!
GoPa
 
 
⭐ Patrons
 
goteleport.com goteleport.com
 
Teleport Kubernetes Access
 
 
Consolidate identity-based access to Kubernetes clusters across all environments, meet compliance requirements, and have complete visibility into access and behavior:

👉 Easily secure your Kubernetes clusters using security best practices
👉 Meet compliance requirements (SOC 2, FedRAMP, HIPAA, ISO 27001, PCI and more)
👉 Complete visibility into access and behavior
👉 Secure access that doesn't get in the way
👉 Give an identity to all your microservices, CI/CD automation, and service accounts
👉 Works with everything you have (X.509 certificates, HTTPS, SAML, OpenID connect and others)
👉 Easy to get started

Get started for free.
 
 

👉 Spread the word and help developers find you by promoting your projects on FAUN. Get in touch for more information.

 
🐾 From FAUNers
 
faun.dev faun.dev
 
🐾🐾 What's new in FAUN - January 2023
 
 
We're glad to share with you the latest projects we've been working on recently!

ℹ️ Our YouTube channel:
We have never been active on Youtube before, but we're now experimenting with a concept of a weekly short video series that we called "5 Minutes FAUN". We're trying to share as much useful information as possible in a short video. The idea is to be efficient and to the point in each video.

So far, we published around 20 short videos. You can find them here .

These are some series we started so far, more are coming soon:
👉 5 Minutes Golang
👉 5 Minutes Python
👉 5 Minutes DevOps
👉 5 Minutes CloudNative
👉 5 Minutes AI
👉 5 Minutes Kubernetes
👉 5 Minutes Programming
👉 5 Minutes AWS

In less than 2 weeks, we've got:
⭐ 30,000 views
⭐ 500 watch hours
⭐ 200 new subscribers

Some of the most popular videos are:
🔗 Why is Kubernetes Written in Go ?!
🔗 The Real Reason why Go is not so Popular
🔗 Highest Paying Programming Languages
🔗 YAML = Your Abstraction Master Language
🔗 and others!

That's a great start! We're looking forward to growing our Youtube channel and sharing more useful information with you.

Please subscribe to the channel . If there are any topics you'd like us to cover, simply reply to this email or leave a comment on the Youtube channel. We'll do our best to cover them in future videos.


ℹ️ Our Youtube live music stream:
We're also experimenting with a new concept of a live music stream. This month, we launched a new Lo-Fi music live stream on Youtube . Many people listen to this genre of music while coding, so we thought it would be a good idea to create a live stream for our developer community. We're adding new songs to the stream every week.

You can find the stream here .

Are there other music genres you'd like us to stream? Let us know by replying to this tweet .

We're looking forward to growing this stream and sharing more music with you. Please subscribe to the channel. If there are any topics you'd like us to cover, simply reply to this email or leave a comment on the Youtube channel. We'll do our best to cover them in future videos.


ℹ️ FAUN community subreddits:
In addition to the old subreddit /r/DevOpsLinks, we launched multiple others. These subreddits are a place for FAUNers who are also Redditors to share links and start discussions. This is the complete list of the subreddits we have today:

👉 DevOps : /r/DevOpsLinks
👉 CloudNative : /r/CloudNativeLinks
👉 DevSecOps : /r/DevSecOpsLinks
👉 Golang : /r/GolangLinks
👉 Monitoring/Observability : /r/MonitoringLinks
👉 Programming : /r/ProgrammingLinks
👉 Python : /r/PythonLinks
👉 AI/ML : /r/AILinks
👉 Kubernetes : /r/KubernetesLinks

Don't forget to join your favorite subreddits! Let's make them a place to share and discuss the latest news and trends in the DevOps, CloudNative, DevSecOps, Golang, Monitoring, Programming, Python, AI, and Kubernetes ecosystems.

More subreddits are coming soon!

ℹ️ Our coming soon FAUN Topics (Weekly Newsletter):
As you may know, we're working on new weekly FAUN Topics:

👉 Kala: AI Weekly Newsletter.
👉 Secra: Security Weekly Newsletter.

If you'd like to subscribe to these newsletters, head over to FAUN website, click on the top menu, then " Newsletters settings ". You can subscribe to any newsletter you like. You can also unsubscribe from any newsletter you no longer want to receive using the same page.

ℹ️ How to support FAUN?
If you'd like to support FAUN and future projects, you can subscribe or donate here .

Alternatively, follow us on our social media channels, subscribe to our Youtube channel, and share our content with your friends or share your feedback with us by replying to one of our weekly newsletters.
 
 

👉 Create your FAUN Page if it's not done yet and start sharing your blog posts, news, and tools on FAUN Developer Community, collect badges and more!
 

 
🔗 Stories, Tutorials & Articles
 
blog.carlmjohnson.net blog.carlmjohnson.net
 
What’s New in Go 1.20
 
 
The Go team has added an experimental arena package to the Go standard library in version 1.20.

However, it cannot be imported by default and is not recommended for use. To enable it, users must set GOEXPERIMENT=arenas when calling the go tool.

The arena package is a memory management technique used to allocate and deallocate large blocks of memory efficiently. It is typically used in situations where the program needs to frequently allocate and deallocate a large number of small objects. This can reduce the overhead associated with memory management and improve performance. However, it is important to note that the arena package is still experimental and may be removed or changed without warning.
 
 
abhinavg.net abhinavg.net
 
Designing Go Libraries   ✅
 
 
This is a long-form version of a talk byAbhinav Gupta they gave in 2018 providing guidance on designing libraries in Go.

This post is discussing concerns and recommendations for good API design in Go. The primary concerns are usability, readability, flexibility, and testability. It also covers backwards compatibility, including breaking changes and semantic versioning. The recommendations include working backwards, minimizing surface area, avoiding unknown outputs, and avoiding global state.

The post also covers best practices for accepting and returning types, upgrading with upcasting, using functional options, handling errors, using goroutines, reflection, naming, documentation, and keeping a changelog.
 
 
betterstack.com betterstack.com
 
How to Work with SQL Databases in Go | Better Stack Community
 
 
The article discusses the use of the database/sql package in Go to connect to a database, execute SQL statements, and handle returned results. It also covers advanced topics like prepared statements, transactions, and connection pooling.

The article discusses also a list of database tools.Go has a variety of database tools that can be used to improve the overall quality of life when working with SQL databases. These tools are built on top of the database/sql package. The three categories of tools include:
  • Database migration tools, which migrate data from one source database to another target database, and can also migrate data from one schema to another schema while preserving the original data. Examples include Goose, migrate, and darwin.
  • Query builders, which generate functions for querying data based on a set of SQL queries written by the developer, and remove the boilerplate for writing database access queries. Examples include sqlc and jet.
  • ORMs, which allow you to query and manipulate data from a database using an object-oriented paradigm.
 
 
www.carted.com www.carted.com
 
How We Designed Our Scalable Microservice Architecture   ✅
 
 
Carted is building a universal commerce API that allows developers to embed commerce functionality into any app or website through a single API. They followed a process of defining their requirements, evaluating various approaches to find the best fit for their purposes.

They have decided to use a microservice-based architecture, because of the flexibility to add, remove, and maintain multiple versions of similar functionality, ability to easily scale, cloud-native, ease of onboarding new team members, and alignment with a fully distributed team. They use gRPC as a method of inter-service communication, because it has support for their preferred languages, good performance, and a simple service definition.
 
 
gorse.io gorse.io
 
How to Use AVX512 in Golang via C Compiler
 
 
AVX512 is a set of SIMD (Single Instruction, Multiple Data) instructions that can process 512 bits of data in one instruction cycle, which can accelerate the training and inference process of recommendation models in Go.

Unfortunately, the Go compiler does not automatically generate SIMD instructions. A toolkit called goat has been developed to convert C code to Go assembly functions, which allows for the use of AVX512 instructions in Go.

The toolkit uses the C source code to generate Go assembly functions and Go function definitions, eliminating the need for manual assembly code writing. It also converts assembly instructions to machine code and handles function arguments and jump instructions to make the assembly code compatible with Go.

The goat library also provides a collection of vectorized functions that can be used in Go applications. Overall, using goat allows for the use of AVX512 instructions in Go and can potentially bring significant performance improvements for vector computation tasks.
 
 
 
📺 Quick Hits
 
 
The Go team released the January 2023 edition of the Go Developer Survey to learn about developers' experiences working with Go. 
 
 
⭐ Supporters
 
faun.dev faun.dev
 
Post Developers Jobs for Free on FAUN
 
 
FAUN's Job Board offers an exceptional platform to connect with skilled developers, DevOps professionals, and software engineers who are eager to contribute to the success of your organization.

Post your job openings on FAUN's Job Board today and watch your talent pool grow.

Get started now .
 
 
faun.dev faun.dev
 
Join Humans Behind Code
 
 
👉 If you're a Developer or a maintainer of a widely adopted Open Source project and you think it's worth talking about it and your experiences in building it, join Humans Behind Code and get interviewed and published on faun.dev!
 
 
faun.dev faun.dev
 
Advertise with FAUN
 
 
Meet developers where they are, not where you want them to be. Fill out the form and download our mediakit .
 
 
👉 Spread the word and help developers find you by promoting your projects on FAUN. Get in touch for more information.
 
🛍️ Swag, Deals, And Offers
 
 
Kubernetes Mug
 
 
"My Code, My Rules" Mousepad
 

❤️ Get a 20% exclusive discount on all our swag (with free shipping) when you use the code "THANKSFAUN".

 
🎦 Videos, Talks & Presentations
 
www.youtube.com www.youtube.com
 
How to Build a CLI with Go (calling the Stripe HTTP API)
 
 
This video shows how to build a CLI (Command Line Interface) with Go and goes through the following:
  • Init the skeleton of the CLI
  • Add a command
  • Difference between go get / go install
  • Installation of Stripe SDK for Go
  • Add flags to a specific command
 
 
www.youtube.com www.youtube.com
 
Why is Kubernetes Written in Go ?!
 
 
Why Golang is the language of choice for many popular container orchestration frameworks? The video tries to give a concrete answer to that question.
 
 
 
📚 Book picks
 
www.amazon.com www.amazon.com
 
Hands-On Software Architecture with Golang
 
 
Design and architect highly scalable and robust applications using Go.

What you will learn
  • Understand architectural paradigms and deep dive into Microservices
  • Design parallelism/concurrency patterns and learn object-oriented design patterns in Go
  • Explore API-driven systems architecture with introduction to REST and GraphQL standards
  • Build event-driven architectures and make your architectures anti-fragile
  • Engineer scalability and learn how to migrate to Go from other languages
  • Get to grips with deployment considerations with CICD pipeline, cloud deployments, and so on
  • Build an end-to-end e-commerce (travel) application backend in Go
 
 
 
⚙️ Tools, Apps & Software
 
github.com github.com
 
inancgumus/learngo
 
 
1000+ Hand-Crafted Go Examples, Exercises, and Quizzes. Learn Go by fixing 1000+ tiny programs.
 
 
github.com github.com
 
robertkrimen/otto
 
 
A JavaScript interpreter in Go (golang)
 
 
github.com github.com
 
joetifa2003/mm-go
 
 
Generic manual memory management for golang
 
 
github.com github.com
 
kevmo314/codec-from-scratch
 
 
Build a simple video encoder from scratch
 
 
github.com github.com
 
yuvalpress/version-notifier
 
 
Version Notifier is a modern solution for the "being notified" aspect of each Techy's day-to-day work. By using it, you'll be notified for any new global repository release you choose, directly to your Slack / Telegram channel.
 
 

👉 Spread the word and help developers find and follow your Open Source project by promoting it on FAUN. Get in touch for more information.

 
🤔 Did you know?
 
 
The first high-level programming language was Plankalkül, created by Konrad Zuse between 1942 and 1945.
 
 
😂 Meme of the week
 
 
 
 
❤️ Thanks for reading
 
 
👉 Never miss an issue
Join FAUN Developer Community and subscribe to our newsletter here.

👋 Keep in touch and follow us on social media:
- 💼LinkedIn
- 📝Medium
- 🐦Twitter
- 👥Facebook
- 📰Reddit
- 📸Instagram

👌 Was this newsletter helpful?
We'd really appreciate it if you could share it with your friends! You can also donate to help us keep this newsletter going.

ℹ️ Have a question or feedback?
Feel free to reach out to us at community@faun.dev. We'd love to hear from you!

🤩 Want to sponsor our newsletter?
Reach out to us at sponsors@faun.dev and we'll get back to you as soon as possible.