Go Icon

Go

Go is a programming language built to resemble a simplified version of the C programming language.
182 Stories
All Topics

Go blog.containo.us

Back to Traefik 2.0 - gigawatts of routing power

There’s a major new version of Traefik in the works: For several months, the maintainer team has been working on a deep refactoring of the codebase to provide the firm foundations for the next iteration of Traefik, and we are ready to share this vision with you. Today, we’re announcing Traefik 2.0 alpha, the edge router built with the future in mind. The new core is here, help us finalize Traefik with the features you want!

read more

Go github.com

A roadmap to becoming a Go developer in 2019

The purpose of this roadmap is to give you an idea about the landscape. The road map will guide you if you are confused about what to learn next, rather than encouraging you to pick what is hip and trendy. You should grow some understanding of why one tool would be better suited for some cases than the other and remember hip and trendy does not always mean best suited for the job

read more

The Changelog The Changelog #341

Wasmer is taking WebAssembly beyond the browser

We’re talking with Syrus Akbary about WebAssembly and Wasmer — a standalone just in time WebAssembly runtime aiming to be fully compatible with Emscripten, Rust, and Go. We talked about taking WebAssembly beyond the browser, universal binaries, what’s an ABI?, running WebAssembly from any language, and what a world might look like with platform independent universal binaries powered by WebAssembly.

read more

Diego Bernardes github.com

PipeHub - A programmable proxy server

The core idea of this project is to do more with less. PipeHub being a programmable proxy allow users to extend and customize it as needed. Features found in other servers can be added with Go packages. Not ready for production, but interesting nonetheless. Not sure if PipeHub is something that might serve you well? Here’s some pretty good advice to help you decide: If your requirement is covered by built-in features present on other servers like Nginx and Caddy, you’re better of with then. PipeHub shines when you need to add logic that traverses the responsibility of multiple servers…

read more

Dave Cheney dave.cheney.net

Practical Go — Real world advice for writing maintainable Go programs

This is Dave Cheney’s working document for his Practical Go workshop. So much wisdom shared. My goal over the next two sessions is to give you my advice for best practices writing Go code. This is a workshop style presentation, I’m going to dispense with the usual slide deck and we’ll work directly from the document which you can take away with you today. There’s also this page of the same name on his site, but I’m not sure if they’re directly connected.

read more

Go blog.golang.org

Go 2018 survey results are in

Todd Kulesza and Steve Francia shared the details of Go’s 2018 survey on the Go blog. This year we had 5,883 survey respondents from 103 different countries … For the first time, half of survey respondents are now using Go as part of their daily routine. The most common uses for Go remain API/RPC services and CLI tools. Automation tasks, while not as common as CLI tools and API services, are a fast-growing area for Go.

read more

The Changelog The Changelog #336

Containerizing compute driven workloads with Singularity

We’re talking with Greg Kurtzer, the founder of CentOS, Warewulf, and most recently Singularity — an open source container platform designed to be simple, fast, and secure. Singularity is optimized for enterprise and high-performance computing workloads. What’s interesting is how Singularity allows untrusted users to run untrusted containers in a trusted way. We cover the backstory, Singularity Pro and how they’re not holding the open source community version hostage, as well as how Singularity is being used to containerize and support workflows in artificial intelligence, machine learning, deep learning, and more.

read more

Go github.com

Inlets – expose your local endpoints to the internet

inlets combines a reverse proxy and websocket tunnels to expose your internal and development endpoints to the public Internet via an exit-node. An exit-node may be a 5-10 USD VPS or any other computer with an IPv4 IP address. You may be wondering why this project needs to exist, since many like it have come before. The author addresses that right up front: Similar tools such as ngrok or Argo Tunnel from Cloudflare are closed-source, have limits built-in, can work out expensive and have limited support for arm/arm64. Ngrok is also often banned by corporate firewall policies meaning it can be unusable. Other open-source tunnel tools are designed to only set up a static tunnel. inlets aims to dynamically bind and discover your local services to DNS entries with automated TLS certificates to a public IP address over its websocket tunnel.

read more

Drew Devault drewdevault.com

Generics aren’t ready for Go

Have you ever seen someone write something to the effect of “I would use Go, but I need generics”? Perhaps we can infer from this that many of the people who are pining after generics in Go are not, in fact, Go users. The inertia of “what I’m used to” comes to a violent stop when they try to use Go. People affected by this frustration interpret it as a problem with Go, that Go is missing some crucial feature - such as generics. But this lack of features is itself a feature, not a bug.

read more

Martin Olsansky medium.com

The world’s easiest introduction to WebAssembly with Golang for JS developers

A cool/fun intro to Wasm where you build a game for cats (catch the red laser dot) completely in Go. The fact that WASM is still considered a MVP (MAP) and that you create a game like this, without writing a single line of JS, is amazing! CanIUse is already fully green, there is nothing stopping you from building WASM powered websites and apps.

read more

Manish R Jain blog.dgraph.io

Why the Dgraph team chose Badger over RocksDB

This blog post is about Badger, the key-value database that makes it all happen under the hood, housing all Dgraph data, including Raft logs. There are many key-value store options in Go-land. Still, the Dgraph team decided to roll their own solution 18 months back. Was it a bad case of NIH? A good idea? Would they do it all over again? This article answers those questions in-depth.

read more

GitHub github.com

A simple web server for serving static GitHub Pages locally

This is useful for making sure things look right before pushing your content up to GitHub for serving. It’s better than python -m http.server and the like because it handles lack of file extensions and absolute paths better. It doesn’t support Jekyll-based GitHub pages, but it will take your Markdown files and send them off to api.github.com/markdown for character-perfect rendering.

read more

Go github.com

Turn any program that uses STDIN/STDOUT into a WebSocket server

WebSocket-capable applications can now be built very easily. As long as you can write an executable program that reads STDIN and writes to STDOUT, you can build a WebSocket server. Do it in Python, Ruby, Perl, Bash, .NET, C, Go, PHP, Java, Clojure, Scala, Groovy, Expect, Awk, VBScript, Haskell, Lua, R, whatever! No networking libraries necessary. Stuff already built with this include a real-time Linux stats dashboard, an arbitrary REPL in the browser, and a tool that retrieves SQL data from a server with LiveCode. (Use at your own risk 😈)

read more

Russ Cox research.swtch.com

Houston, we have a software dependency problem

Dig in as Russ Cox goes deep on our software dependency problem. For decades, discussion of software reuse was far more common than actual software reuse. Today, the situation is reversed: developers reuse software written by others every day, in the form of software dependencies, and the situation goes mostly unexamined. … Software dependencies carry with them serious risks that are too often overlooked. The shift to easy, fine-grained software reuse has happened so quickly that we do not yet understand the best practices for choosing and using dependencies effectively, or even for deciding when they are appropriate and when not. My purpose in writing this article is to raise awareness of the risks and encourage more investigation of solutions.

read more

GitHub github.com

Run your GitHub actions locally

Why might you want to do this? Two reasons: Fast Feedback - Rather than having to commit/push every time you want test out the changes you are making to your main.workflow file (or for any changes to embedded GitHub actions), you can use act to run the actions locally. Local Task Runner - I love make. However, I also hate repeating myself. With act, you can use the GitHub Actions defined in your main.workflow file to replace your Makefile!

read more

Go robustperception.io

Optimising startup time of Prometheus 2.6.0 with pprof

Brian Brazil: The informal design goal of the Prometheus 2.x TSDB startup was that it should take no more than about a minute. Over the past few months there’s been reports of it taking quite a bit more than this, which is a problem if your Prometheus restarts for some reason. Almost all of that time is loading the WAL (write ahead log), which are the samples in the last few hours which have yet to be compacted into a block. I finally got a chance to dig into this at the end of October, and the outcome was PR#440 which reduced CPU time by 6.5x and walltime by 4x. Let’s look at how I arrived at these improvements. I’ve been meaning to get more familiar with pprof, the Go profiling tool, as my job revolves around working on and around Go microservices. My team has been able to see the impact of the Go experts who can quickly find issues buried in a stack of profiles collected on a service. Brian’s post is a great example of 1) identifying the an issue, 2) diagnosing said issue and 3) observing the implemented improvements using pprof. His parting paragraph is particularly insightful, specifically: I did spend quite a bit of time pouring over the code, and had several dead ends such as removing the call to NumSamples, doing reading and decoding in separate threads, and a few variants of how the processWALSamples sharding worked Profiling and optimization is a mix of knowing your codebase and being able to identifying false leads. A tool like pprof is invaluable when identifying both issues and improvements in a measurable way.

read more

Johan Brandhorst grpc.io

The state of gRPC in the browser

Front-enders should check this out! Johan Brandhorst reviews the history of gRPC in the browser, the state of things today, and thoughts on the future of gRPC-Web. gRPC-Web is an excellent choice for web developers. It brings the portability, performance, and engineering of a sophisticated protocol into the browser, and marks an exciting time for frontend developers! So far the benefits have largely only been available to mobile app and backend developers, whilst frontend developers have had to continue to rely on JSON REST interfaces as their primary means of information exchange. However, with the release of gRPC-Web, gRPC is poised to become a valuable addition in the toolbox of frontend developers.

read more

Kubernetes tilt.build

Local Kubernetes development without the stress

Tilt makes it possible to develop all your microservices locally in Kubernetes while collaborating with your team. You define a Tiltfile that describes how your services fit together (which is supposed to be pretty straight forward if you already have a Dockerfile and a Kubernetes config), then share it with your team. Everyone runs tilt up and the app is up and running on their localhost. No more “it worked on my machine” – everything runs in containers so the right dependencies are always there. Tilt updates with container optimization tricks & best practices, so that even complex projects update in seconds.

read more

0:00 / 0:00