× 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 is the easiest, most secure way to access infrastructure
 
 
The open-source Teleport Access Plane consolidates connectivity, authentication, authorization, and audit into a single platform. Teleport's unique approach is not only more secure but also improves developer productivity.

Try Teleport today at goteleport.com
 
 

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

 
🔗 Stories, Tutorials & Articles
 
blog.carlmjohnson.net blog.carlmjohnson.net
 
What’s New in Go 1.20?
 
 
A series of 3 blog posts about what's new in Go 1.20, the first one is about the changes to the language.

The author mentions that the changes in Go 1.20 are somewhere in between Go 1.18 and 1.19, but more features and solutions to longstanding problems than 1.19.
 
 
stackoverflow.blog stackoverflow.blog
 
When to use gRPC vs GraphQL   ✅
 
 
Stackoverflow blog post compares the features and use cases of gRPC and GraphQL.

The author discusses the similarities between the two protocols, including typed interfaces with codegen, abstracting away the network layer, and the ability to have JSON responses. The strengths and weaknesses of each protocol are also discussed.

The author concludes that gRPC is the best choice for server-to-server communication, while GraphQL is the best choice for client-server communication. However, there are exceptions, such as when using GraphQL federation or schema stitching to create a supergraph of all business data, or when needing field-level visibility on usage.
 
 
djosephsen.github.io djosephsen.github.io
 
The exasperated engineers guide to IPs in Golang
 
 
In this article, the author delves into the differences between using net.IP and netip.Addr in Go when storing IP addresses.

The author explains that net.IP and netip.Addr were created for different reasons, and while netip.Addr is always better, working with net.IP is a pain due to its underlying implementation as a byte-slice and its lack of comparability.

The author also argues that the byte-slice is not an ideal abstraction for network addresses and suggests using a uint64 instead.
 
 
uptrace.dev uptrace.dev
 
Golang memory arenas
 
 
Go 1.20 release added new experimental arena package that provides memory arenas. This article explains what memory arenas are and how you can use them to reduce garbage collection overhead and make your programs faster.
 
 
medium.com medium.com
 
Golang Hacks — Go Executable That Contains Another Executable
 
 
This post is a guide on how to write a Go program that runs another executable file and includes that file as part of the final executable.

The process includes adding the executable file to the Go project directory, creating an embed file variable to reference the file in the code, adding a "WriteFile" statement to write the file to the current directory at runtime, running the executable file using the exec package, and removing the created file after execution.

The final step is to build the Go program, which will create a new executable that includes the other file, eliminating the need for the separate executable file.
 
 
www.flipt.io www.flipt.io
 
Embedding Our New React UI in Go
 
 
The Flipt team is in the process of releasing a new version (1.17) of their platform, which includes updates to the user interface.

They have decided to transition from using Vue.js to React as their frontend framework. They experimented with using Next.js but ran into challenges such as bundling the Next.js application into a Go binary and missing assets.

They ultimately decided to use plain-old React with hash-based routing. The goal of this transition is to make the frontend more appealing to potential contributors, as React is more widely used in the industry. They're learning by doing and encountering some challenges along the way.
 
 
 
⭐ 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
 
Write applications faster and securely with Go
 
 
In this session, Cody Oss highlights the new tools Go provides for developers to create more secure applications. Watch along and learn about vulncheck and how to write fuzz tests in Go.
 
 
 
📚 Book picks
 
www.amazon.com www.amazon.com
 
Powerful Command-Line Applications in Go: Build Fast and Maintainable Tools
 
 
    What you'll learn in this book:
    • How to develop CLI tools that interact with users by using common input/output patterns, including environment variables and flags
    • How to develop cross platform command-line tools that are fast and reliable
    • How to automate tasks, analyze data, parse logs, and talk to network services
    • How to apply Go's rich standard library, built-in support for concurrency, and expressive syntax to develop elegant and efficient tools
    • How to use Go's integrated testing capabilities to automatically test tools and ensure they work reliably across code refactoring
    • How to handle files, manipulate paths, control processes and handle signals
    • How to use a benchmark-driven approach and Go's concurrency primitives to create tools that perform well
    • How to use powerful external libraries such as Cobra to create modern and flexible tools that handle subcommands and interact with databases, APIs, and network services
     
     
     
    ⚙️ Tools, Apps & Software
     
    github.com github.com
     
    remotemobprogramming/mob
     
     
    Tool for smooth git handover.
     
     
    github.com github.com
     
    harfang3d/harfang-go
     
     
    HARFANG 3D engine for the Go language
     
     
    github.com github.com
     
    confluentinc/confluent-kafka-go
     
     
    Confluent's Apache Kafka Golang client
     
     
    github.com github.com
     
    procyon-projects/chrono
     
     
    Chrono is a scheduler library that lets you run your task and code periodically
     
     
    github.com github.com
     
    memphisdev/memphis-broker
     
     
    An open-source message broker for developers made out of devs' struggles with using message brokers, building complex data/event-driven apps, and troubleshooting them.
     
     

    👉 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?
     
     
    ENIAC (Electronic Numerical Integrator and Computer) was the first programmable, electronic, general-purpose digital computer, completed in 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.