The Best Go Content on the Internet


Personal Photo Management using Go and TensorFlow

Contributed by

We love taking photos. Privacy concerns - and the wish to properly archive them for the next generation - brought us to the conclusion that existing cloud solutions are not the right tool to keep them organized. That’s why we started working on an easy-to-use application that can be hosted at home or on a private server. About PhotoPrism.org Our first proof-of-concept was a simple demo app that could find cat pictures in a directory.

Read more...

Avoiding high GC overhead with large heaps

Contributed by

The Go Garbage Collector (GC) works exceptionally well when the amount of memory allocated is relatively small, but with larger heap sizes the GC can end up using considerable amounts of CPU. In extreme cases it can fail to keep up. What’s the problem? The GC’s job is to work out which pieces of memory are available to be freed, and it does this by scanning through memory looking for pointers to memory allocations.

Read more...

Using Go in Devops

Contributed by

== Using Go for DevOps == This post is aiming to provide a new angle on using Go. Don’t expect code snippets or learning a new thing, but rather be open for a new perspective, and share this with your favorite SysOps/DevOps/Observability Engineers who are considering new solutions. – Not too long ago SysOps was a common job title, and that included updating softwares, setting up networks and adding glue bash scripts.

Read more...

Computing and plotting π with Gonum and a zest of Monte Carlo

Contributed by

Today we will see how we can compute π with a technique called Monte Carlo. Wikipedia, the ultimate source of truth in the (known) universe has this to say about Monte Carlo: Monte Carlo methods (or Monte Carlo experiments) are a broad class of computational algorithms that rely on repeated random sampling to obtain numerical results. (…) Monte Carlo methods are mainly used in three distinct problem classes: optimization, numerical integration, and generating draws from a probability distribution.

Read more...

GPIOs and Go

Contributed by

Go Advent, Dec. 22, 2018 Recently, I decided that I needed a small heads up display for import things I kept forgetting, like the time until an event started or number of unread emails in my inbox. I wanted the display to be simple and bright so it would really catch my eye. I naturally started to look at seven segment displays. Four digit, seven segment displays are available in most hobby electronics stores and come in a variety of packages.

Read more...

Members, Methods, and Interfaces

Contributed by

Opaque Datatypes Considered Awesome I am periodically reminded that many people don’t realize that C actually allows the creation of opaque data types. This is a possibly-surprising side effect of the option of never completing a type. Consider: /* export.h */ struct foo; typedef struct foo *foo_t; foo_t *foo_new(); void foo_free(foo_t); /* internal.h */ struct foo { /* actual members go here */ }; API client code includes the export.

Read more...

Introducing Glot the plotting library for Golang

Contributed by

Go is an open source programming language that makes it easy to build simple, reliable, and efficient software. It provides an expressive syntax with its lightweight type system and comes with concurrency as a built-in feature at the language level. With all these features its not a surprise that Golang is really hot these days and tons of developers are shifting towards it. While playing with Golang Packages. I was surprised to find out that it needs a simple plotting library for scientific computation purposes and so I decided to hack it together with Gnuplot and built a rather simple yet powerful plotting library that can easily be used by any average Joe.

Read more...

LLVM IR and Go

Contributed by

In this post, we’ll look at how to build Go programs – such as compilers and static analysis tools – that interact with the LLVM compiler framework using the LLVM IR assembly language. TL;DR we wrote a library for interacting with LLVM IR in pure Go, see links to code and example projects. Quick primer on LLVM IR LLVM IR library in pure Go Closing notes Further resources Quick primer on LLVM IR (For those already familiar with LLVM IR, feel free to jump to the next section).

Read more...

Go and Apache Arrow: building blocks for data science

Contributed by

Today we will see how Apache Arrow could be useful for data science, or – really – a lot of analysis workloads. Lingua franca In Data Science and in many scientific fields, the lingua franca is Python. This means that a lot of the libraries are written in Python, with the CPU intensive parts leveraging either NumPy, SciPy or, directly, a C/C++ library wrapped with the CPython C-API. This also means that:

Read more...

Apache Beam and Google Dataflow in Go

Contributed by

Overview Apache Beam (batch and stream) is a powerful tool for handling embarrassingly parallel workloads. It is a evolution of Google’s Flume, which provides batch and streaming data processing based on the MapReduce concepts. One of the novel features of Beam is that it’s agnostic to the platform that runs the code. For example, a pipeline can be written once, and run locally, across Flink or Spark clusters, or on Google Cloud Dataflow.

Read more...