Go Icon

Go

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

Katie Hockman blog.golang.org

Go's fuzzing effort now in beta

We first talked fuzzing with Katie Hockman back in August of 2020. Fast-forward 10 months and native fuzzing in Go is ready for beta testing! Here’s Katie explaining fuzzing, for the uninitiated:

Fuzzing is a type of automated testing which continuously manipulates inputs to a program to find issues such as panics or bugs. These semi-random data mutations can discover new code coverage that existing unit tests may miss, and uncover edge case bugs which would otherwise go unnoticed. Since fuzzing can reach these edge cases, fuzz testing is particularly valuable for finding security exploits and vulnerabilities.

It looks like the feature won’t be landing in Go 1.17, but they’re planning on it sometime after that. Either way, you can use fuzzing today on its development branch.

Kubernetes github.com

Porter is a Kubernetes-powered PaaS that runs in your own cloud provider

Porter brings the Heroku experience to your own AWS/GCP account, while upgrading your infrastructure to Kubernetes. Get started on Porter without the overhead of DevOps and customize your infrastructure later when you need to.

For more on Porter, tune in to Go Time live on June 1st! Mat Ryer will be asking Carolyn Van Slyck all about it. If live isn’t an option… subscribe to Go Time, why don’t ya?

Namespace conflict! I mistook this Porter for that Porter which Carolyn Van Slyck works on. That Porter will be the subject of the June 1st Go Time, not this Porter. If you want us to do a show on this Porter, let us know. 😎

Linux github.com

Lima is like a "macOS subsystem for Linux"

Lima launches Linux VMs on your Intel or ARM-based Mac with automatic file sharing, port forwarding, and containerd. That means you can easily do cool stuff like:

$ echo "files under /Users on macOS filesystem are readable from Linux" > some-file

$ lima cat some-file
files under /Users on macOS filesystem are readable from Linux

$ lima sh -c 'echo "/tmp/lima is writable from both macOS and Linux" > /tmp/lima/another-file'

$ cat /tmp/lima/another-file
/tmp/lima is writable from both macOS and Linux"

Patrick DeVivo github.com

Reqlite lets you query Redis with SQL

Patrick DeVivo:

This is a project in Go that compiles to a SQLite runtime loadable extension, which brings Redis commands into a SQL context. This allows you to write SQL queries against data in a Redis instance, using Redis commands like LRANGE as SQL functions.

Experimental for now. But why? Patrick says:

In general, Redis is fairly accessible from many programming languages, and any query using reqlite could probably be implemented in a language of your choice using a Redis client. However, sometimes declarative SQL can be a better choice to express what you’re looking for, and that’s where this project may be most useful.

Go github.com

A Go backend framework for rapidly creating APIs and distributed systems

Encore uses static analysis and code generation to reduce the boilerplate you have to write, resulting in an extremely productive developer experience.

The list of superpowers is impressive, to say the least. I know gophers tend to be skittish when they’re approached by a framework, though, so I’d love to hear more about this project on Go Time

Docker launchyourapp.meezeeworkouts.com

Why we don’t use Docker (we don’t need it)

In other jobs, we’ve used docker and it’s worked out just fine (for the most part… there was that time the RedHat filesystem on our prod server got mysteriously hosed – maybe it wasn’t docker’s fault.) But no, the reason we don’t use docker is because we don’t need it. Literally. Writing golang web services and static html embedded with with golang 1.16’s new //embed directive, we end up with a single deployable binary.

As a self-sustaining startup, we have limited resources to devote to tasks. We chose golang exactly for this reason. It sure would be nice if we could spend a couple weeks building the perfect CI/CD pipeline, an elegant deployment process, along with pretty dashboards. But we have software we need to ship in order to get users in order to drive subscriptions. Anything that doesn’t directly serve that goal is a complication. So at best, docker is a complication. A 9 million LoC complication that brings its own bugs and its own idiosyncrasies.

I’m not here to tell you whether or not you should use Docker. I don’t know what you should do. What I do know, is that you (all) need to make your own decisions based on your needs.

That’s why I like this piece by the team behind MeeZee Workout‪s. They share their decision and why they made it. Add this to your knowledge base for your next big decision.

Go github.com

Authelia is a multi-factor SSO portal for web apps

Authelia is an open-source authentication and authorization server providing 2-factor authentication and single sign-on (SSO) for your applications via a web portal. It acts as a companion of reverse proxies like nginx, Traefik or HAProxy to let them know whether queries should pass through. Unauthenticated users are redirected to Authelia Sign-in portal instead.

Authelia is a multi-factor SSO portal for web apps

Gabe Kangas owncast.online

Take ownership of your live streams with Owncast

Gabe Kangas:

The new release of Owncast –the self-hosted, open source live streaming server– opened up its first set of 3rd party APIs. So not only can you run your own live streams and own your content, but you can build bots, integrate it in to 3rd party services and be super creative in encouraging chat engagement in new ways.

Looks pretty slick.

Databases github.com

Dolt – it's Git for data

Imagine a world where Git and MySQL got together and had a baby. They would name that baby, Dolt.

Dolt is a SQL database that you can fork, clone, branch, merge, push and pull just like a git repository. Connect to Dolt just like any MySQL database to run queries or update the data using SQL commands. Use the command line interface to import CSV files, commit your changes, push them to a remote, or merge your teammate’s changes.

All the commands you know for Git work exactly the same for Dolt. Git versions files, Dolt versions tables.

The authors also created DoltHub where you can host and share your Dolt databases.

Ciprian Dorin Craciun notes.volution.ro

In Go-land you pay even for what you don't use

While I was trying to identify why my-Go-based project took more than three times to execute than a similar Bash script (for a code-path that amounted to just a few stderr writes), I found that many of the Go packages (including some in the built-in library) have quite “heavy” static initializers, which due to how Go initialization works are always executed regardless if I use them for a particular code-path or not.

Also, with the newly introduced GODEBUG=inittrace=1 in Go 1.16 developers can now investigate the cost of static initializers of their dependencies, thus I wanted to raise the awareness of this issue.

Mat Ryer YouTube

You'll be Back (to Go)

Go Time’s Mat Ryer breaks out the acoustic for all the Generics haters out there:

A musical message for #golang​ people thinking of leaving because the Go Generics proposal was official accepted. (Spoof of You’ll Be Back from Hamilton.)

If you like this, you’ll be happy to hear we conned invited Mat on to JS Party this week and threatened him asked him to create some jingles for our regular segments. If you don’t like it, please travel back in time and skip that last sentence.

0:00 / 0:00