Quantcast
Channel: Golang Weekly
Viewing all 431 articles
Browse latest View live

Inlined Defers in Go

$
0
0

#296 — January 24, 2020

Read on the Web

Golang Weekly

Giu: A Cross Platform Rapid GUI Framework Based on Dear ImGui— Another way to create simple GUI apps from Go. Dear ImGui is an interesting GUI library (for C++) aimed at creating quite idiosyncratic UIs aimed at power users rather than standard end-user UIs.

Allen Dang

Inlined Defers in Go— An optimization in 1.14 and later for simple use cases with defer that removes most of the performance hit for deferred functions, complete with the how and the why.

Jaana B. Dogan

Reach Your Go App Users Anywhere with Video That Streams Beautifully, Everywhere— Automatically deliver the best user experience for every combination of device, browser, location, and bandwidth with Mux's video API. Get started with a $20 credit.

Mux sponsor

Stats: A Comprehensive Go Statistics Library Package— No dependencies, well tested, work with concepts like averages, sums, percentiles, standard deviation, etc. This week’s addition? Normal distribution functions.

Montana Flynn

Algorithms with Go— For your benefit, I very rarely link to anything behind an email wall, but Jon has produced so much great content for our community, and this little Go algorithm course will benefit many of you, so… :-)

Jon Calhoun

Go's Tooling Is An Undervalued Technology— This is focused mostly on the Go compiler but brings in package management as well. And, he’s right: Go’s compiler is so fast and good the average developer doesn’t need to think much about it.

Chris Wellons

💻 Jobs

Sr. Software Engineer at CrowdStrike (Remote)— CrowdStrike is the leader in cloud-delivered endpoint protection, which helps protect our customers from cybersecurity attacks.

CrowdStrike

Golang Developer at X-Team (Remote)— Work with the world's leading brands, from anywhere. Travel the world while being part of the most energizing community of developers.

X-Team

Find a Job Through Vettery— Vettery is completely free for job seekers. Make a profile, name your salary, and connect with hiring managers from top employers.

Vettery

📘 Articles & Tutorials

On the Graceful Shutdown of a TCP Server in Go— Shutting down a TCP server can be tricky because it’s not necessarily clear what an existing client is doing. Here are two strategies to consider. Be safe, my friends.

Eli Bendersky

Why go.mod Has Its Own Bespoke Syntax— An interesting bit of history here if you’ve wondered why go.mod couldn’t just use JSON or YAML, say.

Russ Cox

▶  Dynamically Instrumenting Go Programs

Jason Keene

Measure and Improve Go Code Performance with Blackfire.io— Profile in development, test/staging, and production. Visualize bottlenecks in an intuitive UI and find root causes.

Blackfire.io sponsor

Generating a Static Site with Hugo and Netlify— Not much Go to see here, but Hugo is a popular Go-based static site generation tool so if you want to get started with it..

Máté Boér

A Chapter in the Life of Go’s Compiler— A pretty technical post on Go and deterministic compilation, which was working, then not working, then working again…with a flag.

Jon San Miguel

Go + Services = One Goliath Project— The journey from a monolithic Python 2 to a distributed, service-based Go platform, including the rationale and progress made to date.

Khan Academy Engineering

Why I've Come to Like That Go's Type Inference Is Limited— Type inference in Go is limited to within a single function, and that’s a good thing that avoids spooky things.

Chris Siebenmann

🛠 Code & Tools

termenv: Advanced ANSI Style and Color Support for Terminal Apps— Offers convenient methods to colorize and style output, without needing to deal with weird ANSI escape sequences and color conversions.

Christian Muehlhaeuser

GoMock: A Mocking Framework for Go— Has two modes of operation: source and reflect. Source mode generates mock interfaces from a source file. Reflect mode generates mock interfaces by building a program that uses reflection to understand interfaces.

Go Project

Faster CI/CD for All Your Software Projects Using Buildkite

Buildkite sponsor

Eris: A Better Way to Handle, Trace, and Log Errors?— Designed to give you more control over error handling via error wrapping, stack tracing, and output formatting.

rotisserie

Ink: A Framework for 2D Graphics in Go— An experimental project focused on creative coding and based on OpenGL. The examples show off what it can do (in code, at least).

Alex Buchanan

automaxprocs: Automatically Set GOMAXPROCS to Match Linux Container CPU Quota

Uber Golang

uprobe-http-tracer: uprobe-based HTTP Tracer for Go Binaries— Captures calls to http.Get including the URL. More background here.

Sematext Group, Inc.


Three proposals for Go 1.15

$
0
0

#297 — January 31, 2020

Read on the Web

Golang Weekly

Three Modest Proposals Selected for Go 1.15— Go 1.14 is due to be released next month, so thoughts have turned to Go 1.15 with three (relatively minor, feature-wise) proposals in particular being selected for development.

Robert Griesemer

Brad Fitzpatrick is Leaving Google— A long-time Googler and member of the core team (he wrote the HTTP/2 implementation, for example) is leaving Google. He’ll “still be around the Go community, but less, and differently.” After 24 hours, Brad got bored of being unemployed, and is now joining Tailscale.

Brad Fitzpatrick

The Easiest Way to Run Redis— Better monitoring, seamless scaling, and automatic version upgrades make RedisGreen the preferred choice for teams.

RedisGreen sponsor

Building Containers without Docker— In a quest for a lighter toolchain and a faster build, Alex runs through some examples of open-source builders for containerizing a basic Go app. There’s at least one option here you’ll like, I reckon.

Alex Ellis

Micro 2.0: The Microservice Development Framework— Provides the core features you need for distributed systems development. This week’s major 2.0 release takes a big step towards using gRPC by default as well as NATS. GitHub repo.

Micro Technologies

Go 1.13.7 and Go 1.12.16 Released— Minor security issue releases covering a Windows 10 certificate validation bypass and malformed input to /x/crypto/cryptobyte that can cause a panic.

Go Forum

💻 Jobs

Enjoy Building Scalable Infrastructure in Go? Stream is Hiring— Like coding in Go? We do too. Stream is hiring in Amsterdam. Apply now.

Stream

Sr. Software Engineer at CrowdStrike (Remote)— CrowdStrike is the leader in cloud-delivered endpoint protection, which helps protect our customers from cybersecurity attacks.

CrowdStrike

Find a Job Through Vettery— Vettery is completely free for job seekers. Make a profile, name your salary, and connect with hiring managers from top employers.

Vettery

📘 Articles & Tutorials

Functional Options on Steroids— A look at the ideas around ‘functional options’, a pattern for optionally providing more settings when initializing things.

Márk Sági-Kazár

Converting a Static Site to Buffalo— A nice intro to how Buffalo (basically an entire eco-system of things for building Go-powered webapps) works. It’s pretty neat to turn a site into a single binary too.

Cory LaNou

▶  Reflections on 10 Years of Go— Covers the background to the creation of Go, why it was made, and how things have developed over the past 10 years. Recorded at DevFest Istanbul last November.

Carmen Andoh and Van Riper

Optimize Your Go Applications in One Place— Datadog APM enables you to visualize how requests propagate through your distributed infrastructure. Try it for free today.

Datadog APM sponsor

Make Boring Web Tasks Enjoyable with Go and Colly— Colly is a scraper and crawler framework.

Gianluca Arbezzano

▶  Grokking Go.dev— Late last year, the Go team released go.dev, a site designed to act as a ‘hub’ of sorts for Go developers. This episode of Go Time digs into what it’s all about and how it was built.

Go Time Podcast podcast

🛠 Code & Tools

A List of Go GUI Projects and Bindings— Who knew there were this many?

go-graphics

v8go: Execute JavaScript from Go— Lets you create V8 contexts and run code eval-style. This latest release brings things up to V8 8.0 standards.

Roger Chapman

ko 0.2: Build and Deploy Go Applications on Kubernetes— ko’s objective is to “to make containers invisible infrastructure.”

Google

Faster CI/CD for All Your Software Projects Using Buildkite

Buildkite sponsor

Hermes: Generate Clean, Responsive Transactional HTML Emails from Go— A port of Node’s mailgen.

Mathieu Cornic

Fabio: A Fast, Zero-Conf HTTPS and TCP Load Balancing Router Managed by Consul— Written in Go, of course.

fabio

Microsoft Application Inspector: A New Source Code Analyzer— A software source code analysis tool that helps identify and surface well-known features and other interesting characteristics of source code to aid in determining what the software is or what it does. Supports numerous languages including Go and JavaScript.

Microsoft

naabu: A Fast Port Scanner Written in Go— Does fast SYN scans on a host/list of hosts and lists all ports that return a reply. Use with care or just enjoy the code.

ProjectDiscovery

rain: A BitTorrent Client and Library in Go

Cenk Altı

bed: A Binary/Hex Editor Written in Go

Itchyny

Go 1.14 RC1, the state of Go in 2020, and ten Go development principles.

$
0
0

#298 — February 7, 2020

Read on the Web

Golang Weekly

▶  The State of Go 2020: Changes Since Go 1.12— What’s happened to Go since Go 1.12 and what’s coming up for Go 1.14? Francesc Campoy and Maartje Eyskens took 25 minutes at last week’s FOSDEM event to bring us all up to speed. Hate videos? Here’s the slides which stand up well on their own.

Francesc Campoy and Maartje Eyskens

Do You Need Go, Docker or Kubernetes Training?— We offer on-site corporate training for engineers that want to learn Go, Docker and/or Kubernetes. Having trained over 5,000 engineers, we have carefully crafted these classes for students to get as much value as possible.

Ardan Labs sponsor

The Zen of Go: Ten Go Development Values— Ten different principles for writing maintainable Go from Dave Cheney’s GopherCon Israel presentation. Dave is well known for his principle-heavy talks and blog posts, and if you’re keen to watch one, 'Do not fear first class functions' from dotGo 2016 is worth it.

Dave Cheney

Why Discord Is Switching From Go to Rust— This is causing consternation, as you might imagine. Especially since the comparison is to Go 1.9.2 vs Rust nightly builds and principally comes down to garbage collection.

Jesse Howarth

Go 1.14 Release Candidate 1 Released— The announcement is here. There is a change to the language around allowing interfaces with overlapping method sets along with a number of other minor changes including that Goroutines are now asynchronously preemptible.

Go

Great news for TinyGo, an increasingly popular Go compiler for targeting 'small places' (such as microcontrollers and WebAssembly), with it becoming a Google sponsored project. Its future looks bright.

💻 Jobs

High-Growth Tech Startup in Luxembourg Hiring Senior Go Engineers— Do you like microservices? We do. We also like small data, beer and giant gorillas. Come join the Force.

Tadaweb

Golang Developer at X-Team (Remote)— Work with the world's leading brands, from anywhere. Travel the world while being part of the most energizing community of developers.

X-Team

Find a Dev Job Through Vettery— Vettery is completely free for job seekers. Make a profile, name your salary, and connect with hiring managers from top employers.

Vettery

📘 Articles & Tutorials

Adopting Go Modules and Integrating with GitHub Actions— Four lessons learnt when migrating gokrb5 (a Kerberos library) to use modules for dependency management.

Jonathan Turner

How Are Loops in Go Translated to Assembly?— Most developers don’t need to dig down to this level, but it’s interesting to read about someone else’s findings.

Vincent Blanchon

Testing in Go: Golden Files— An approach to not hard coding expected test result values in your source code and instead using external ‘golden’ files.

Ilija Eftimov

Measure and Improve Go Code Performance With Blackfire.io— Profile in development, test/staging, and production. Visualize bottlenecks in an intuitive UI and find root causes.

Blackfire.io sponsor

▶  Advanced Debugging Techniques for Go Code— A talk from the recent FOSDEM event that covers a variety of Go related debugging tools and techniques.

Andrii Soldatenko

Continuous Profiling Go Applications Running in Kubernetes— This uses a cronjob and some annotations to collect pprof data from running pods and push them to a Profefe registry.

Gianluca Arbezzano

Running Go CLI Programs in the Browser— And if you want to make your own WASM-based Go playground, here you go!

Martin Tournoij

Star: A Look at a Python-esque Language That Can Call Go Library Functions— Builds upon Starlark in Go, an interpreter for Starlark, a dialect of Python intended for use as a configuration language.

Max McDonnell

🛠 Code & Tools

httpretty: Pretty Prints The HTTP Requests You Make— Inspired by curl’s --verbose feature, this could prove handy when debugging.

Henrique Vicente

Fiber: An Express.js-Styled Web Framework for GoFiber is a basic HTTP service framework inspired by Node’s Express.js (which in turn was inspired by Ruby’s Sinatra) that’s actually aimed at making Node developer’s lives a bit easier when they move to Go. Being fast is a huge bonus too.

Vic Shóstak

The Ultimate Guide to Container Formats: Decrypting Video Technologies

Bitmovin Inc. sponsor

MongoDB Go Driver 1.3: The Official MongoDB Driver— Support for modules has been added (but it’s not mandatory) and there are new functions for working with BSON.

MongoDB, Inc.

Caire: A Content-Aware Image Resizing Library— Uses seam carving to stretch out unimportant parts of an image, allowing the resizing process to take an image’s content into account.

Endre Simo

FastHTTP 1.9: A Fast HTTP Implementation for Go— A long standing project that continues to get frequent updates and claims to be “up to 10x faster than net/http”.

Aliaksandr Valialkin

go-syslog 3.0: A 'Blazing Fast' Syslog Parser— v3.0, released yesterday, introduces initial RFC 3164 (BSD Syslog Protocol) support.

InfluxData

vim-go 1.22 Released

Fatih Arslan

Explaining Go module mirrors, proxies, and Athens

$
0
0

#299 — February 14, 2020

Unsubscribe  :  Read on the Web

Golang Weekly

Fyne: Cross Platform GUI Toolkit and API— We first linked this when it was for desktop only but it supports Android and iOS too now. It claims to be inspired by Material Design but looks more generally Linux-y to me. Certainly a clean look though.

Fyne.io

On Mirrors, Checksums and Athens— Go teacher extraordinaire Bill Kennedy is back to explain what Go module mirrors/proxies are all about and why you might set up your own private one.

William Kennedy

simdjson-go: Parsing Gigabytes of JSON Per Second in Go— simdjson uses a novel, two-stage approach with which it is possible to achieve a parsing performance of gigabytes of JSON per second on a single core.

MinIO Blog

High Performance Redis Hosting— Better monitoring, seamless scaling, and automatic version upgrades make RedisGreen the preferred choice for teams.

RedisGreen sponsor

faillint: Report Unwanted Import Path Usages— A new tool from the creator of vim-go designed to be used in CI/CD environments for checking for unwanted import paths.

Fatih Arslan

TamaGo: Bare Metal Go for ARM SoCs— This framework stems from a need to write embedded software without any dependency on C or operating systems. “If Go is your language of choice and you want to develop embedded system firmware you can grab a USB armory Mk II and run Go applications with very few limitations.”

F-Secure Labs

Go 1.13.8 and Go 1.12.17 Released— Very minor releases with “fixes to the runtime, the crypto/x509, and net/http packages”.

Alex Rakoczy

💻 Jobs

Backend Developer at Toggl (Remote)— Toggl the time-tracker helps keep teams focused on what matters the most. The team is looking for sharp and creative developers.

Toggl

Enjoy Building Scalable Infrastructure in Go? Stream Is Hiring— Like coding in Go? We do too. Stream is hiring in Amsterdam. Apply now.

Stream

Find a Dev Job Through Vettery— Vettery is completely free for job seekers. Make a profile, name your salary, and connect with hiring managers from top employers.

Vettery

📘 Articles & Tutorials

An Introduction to Go's trace Packagetrace provides functionality to get tracing information about the execution of your program including goroutine use, memory allocation, syscalls, etc.

Vincent Blanchon

Getting Started with Bluetooth LE— One for you Go + hardware fans. This is a thorough introduction to coding for a SoC device aimed at modern Bluetooth use cases.

Embedded Go

Batching Operations in Go— How grouping operations into batches can be done with some loops and counters, but encapsulating that logic into a helper can make it feel more robust.

Mat Ryer

Faster CI/CD for All Your Software Projects Using Buildkite— See how Shopify scaled from 300 to 1500 engineers while keeping their build times under 5 minutes.

Buildkite sponsor

▶  Discussing Unusual Uses for Go: GUIs— An episode of Go Time diving into the challenges of using Go for building usable cross platform GUIs.

Go Time Podcast podcast

Go's Inlining Strategy and Limitations— The rules around how Go decides whether or not to inline a function in order to increase performance.

Vincent Blanchon

Comparing Go to Python for Small Scale Scripts and Tools— A developer who uses both Go and Python thinks out loud about why Python is still better for small sysadmin scripts.

Chris Siebenmann

The Evolution of a Go Programmer— A bit of a lark about the circles of life in programming.

Aleksandr Krivoshchekov

Building a Go Module Testbed

Chris Wellons

🛠 Code & Tools

Excelize 2.1: A Library for Reading and Writing Excel Files— Read and write XLSX files, set and read cell values, and even add charts. v2.1.0 release notes.

360 Enterprise Security Group, Endpoint Security, inc.

Gitea 1.11.0 Released— Gitea is a Go-powered self-hosted git repository service, a la a mini open source GitHub or GitLab. Demo install here.

John Olheiser

esbuild: An Extremely Fast JavaScript Bundler and Minifier— An experiment in proving that tools for bundling JavaScript can actually be very fast.. though in this case by implementing one in Go ;-)

Evan Wallace

Monitor the Performance of Your Golang Apps in Real-Time with Datadog

Datadog APM sponsor

Delve 1.4.0: A Debugger for Go— A long standing project which has just this week added Linux/ARM64 support, as well as support for the forthcoming Go 1.14.

Derek Parker

go-ipfs: An IPFS Implementation for Go— IPFS (InterPlanetary File System) is a peer-to-peer protocol and network for organizing a distributed file system.

Go IPFS Community

Broxy: An HTTP/HTTPS Intercept Proxy Written in Go— This open-source intercept proxy is still in alpha. It makes use of goproxy as the core proxy implementation and the interface is implemented with a Qt wrapper for Go.

Federico De Meo

Faker: A Fake Data Generator for Your Structs— Got a struct of ‘user’ data for things like emails, IP addresses, names, or similar? Faker can populate them with realistic looking, yet fake, data.

Iman Tumorang

Oragono: A Modern IRC Server Written in Go— Supports UTF-8 and IRCv3 features.

Jeremy Latt

Go - the most 'in-demand' language with employers?

$
0
0

#300 — February 21, 2020

Unsubscribe  :  Read on the Web

Golang Weekly

pkg.go.dev To Be Open Sourced— The “central source of information about Go packages and modules” is set to have its code released in a few months/weeks, and there is some rejoicing. Here’s more on where pkg.go.dev is headed.

Russ Cox

Advanced Go Concurrency— Goes beyond the usual candidates (goroutines, using context and sync) and digs into x/sync and things like singleflight and errgroup. If you’ve not dug far into concurrency in Go, you should pick up a thing or two here.

André Eriksson

Do You Need Go, Docker or Kubernetes Training?— We offer on-site corporate training for engineers that want to learn Go, Docker and/or Kubernetes. Having trained over 5,000 engineers, we have carefully crafted these classes for students to get as much value as possible.

Ardan Labs sponsor

Go Tops List of In-Demand Software Skills— The IEEE have picked up on a report from Hired (the recruiting marketplace) which places Go at the top of the pile when it comes to ‘most in-demand coding languages’ worldwide, though Scala(!) just pips it in the Bay Area.

IEEE Spectrum

ESR's Notes on the Go Translation of Reposurgeon— A few years ago, Eric S Raymond thought Go could replace C in most situations, but now he’s done a rather extensive write up of his experiences in porting a complex program from Python to Go. The result is faster and easier to read, but he ran into a variety of problems.

Eric S Raymond

What's Involved in Building a 'Roguelike' in Go— A “roguelike” is a type of fantastical game, a la NetHack or Diablo. Hunter wrote this enjoyable conversational piece on game design in Go just prior to being eaten by a dragon.

Hunter Loftis

💻 Jobs

Software Engineer / Founding Teammate (Remote OK)— A well funded, fast-moving startup that is changing the way large teams collaborate on documents. Think: GitHub for documents.

Markup

Find a Dev Job Through Vettery— Vettery is completely free for job seekers. Make a profile, name your salary, and connect with hiring managers from top employers.

Vettery

📘 Articles & Tutorials

Moving Towards Domain Driven Design in Go— An abstract (meaning, not runnable) tutorial where the DDD code evolves from the tightly coupled version and why evolving to the domain approach is recommended.

Jon Calhoun

What's New In Go 1.14: Test Cleanup— 1.14 adds a Cleanup() method to the testing objects that is run at the end of each test. This is good for cleaning up a database, for example.

Gopher Guides

Rendering a Bloom Effect in Go— Basically makes things look like they’re glowing.

Rémy Mathieu

▶  Modeling MongoDB Documents with Native Go Data Structures— How to use the MongoDB Go driver to add BSON annotations to your native Go data structures, providing a way to seamlessly interact with data in the app as well as the database.

Nic Raboy

Video for Your Go App— Integrate seamlessly into your product's UI. Mux Video is an API-first platform that makes it easy to build beautiful video that streams everywhere.

Mux sponsor

Running GoLand on a Raspberry Pi 4— Someone at JetBrains wanted to see if they could get GoLang (a popular commercial Go IDE) running on a Raspberry Pi 4.. turns out, you can, if you’re okay with a pretty length startup time.

Florin Pățan (JetBrains)

▶  Discussing Interfaces in Go— The latest episode of the Go Time podcast digs into interfaces at length, what they are, how they’re being used, plus tips for how you can use them too.

Go Time Podcast podcast

🛠 Code & Tools

Spinner: 70+ Configurable Terminal Spinner/Progress Indicators— If you want to add a little pizazz to your CLI app when it’s processing or loading something, you can’t ask for more variety than this. Check out all of the GIF demos!

Brian Downs

Operator: Go Operators as Functions— Implements logical, arithmetic, bitwise and comparison operators as functions (like Python’s operator module). Includes unary, binary, and nary functions with overflow checked variants.

Ben Golightly

Hugo 0.65.0: The Go-Based Static Site Builder— If you’re a fan of Hugo for building sites, this seems to be a significant release if you want more flexibility in how pages are managed.

Hugo Team

Learn How Pact Makes Testing Your APIs and Microservices Fast + Easy

Pactflow sponsor

Nodebook: A Minimalist Multi Language REPL with a Web-Based UI— I think this started life as a Node specific REPL but it now supports Go, C, C++, Elixir, and more. It’s principally written in Go, though.

Net Gusto

go-memdb: An In-Memory Database Built on Immutable Radix Trees

HashiCorp

goxygen: Generate a Go and MongoDB-Backed React Project in Seconds— An opinionated full stack app generator that builds a skeleton backend that uses Go and MongoDB with React on the front end.

Sasha Shpota

Kivik: A Common Interface to CouchDB or CouchDB-like Databases for Go— A mature library that has just been updated to use modules.

Kivik

go-blurhash: A 'BlurHash' Implementation in Pure Go— A BlurHash is an ultra compact representation of a placeholder for an image that, as a blur, vaguely represents the original image visually.

buckket

REST: An HTTP Client Specifically for RESTful APIs— SendGrid uses this in their own client library.

Twilio SendGrid

Twirp: A Simple RPC Framework with Protobuf Service Definitions— Think gRPC but without the HTTP server and transport stuff. This runs direct on net/http and can even run over HTTP 1.1.

Twitch

SeqKit 0.12: A Go Toolkit for FASTA/Q File Manipulation— Perhaps a handful of you will find this useful but it’s neat to see Go being used for working with biochemistry. FASTA/FASTQ are formats for storing “nucleotide and protein sequences”..

Wei Shen

Go 1.14 Released

$
0
0

#301 — February 28, 2020

Unsubscribe  :  Read on the Web

Golang Weekly

Go 1.14 Released— The big news is modules are now considered truly ready for prime time (a.k.a. “production use”)! Beyond that, there are some minor feature additions and performance efficiencies. Upgrade today. (Here’s a 12 minute video from London Gophers on what’s new.)

Alex Rakoczy

The Zen of Go— A transcription of Dave’s GopherCon Israel 2020 that applies the Zen of Python to Go in an attempt to suss out Go’s engineering values. We featured the briefer list of principles a few weeks ago.

Dave Cheney

Try the Fastest CI/CD Solution for Free— Faster CI/CD means greater productivity for your team and a better experience for your users. Automate your CI/CD pipeline with Semaphore to release 2x faster than with other platforms.

Semaphore 2.0 sponsor

The Go 1.14 Release Notes— If you want to go deeper on the new 1.14 release, this is the place to be. The release notes tidily summarize all of the changes introduced since 1.13.

Go Documentation

Early Impressions of Go from a Rust Programmer— This is a good and objective writeup. It’s interesting to hear from a Rust programmer who doesn’t think Go and Rust compete for the same use cases.

Nick Cameron

💻 Jobs

Enjoy Building Scalable Infrastructure in Go? Stream Is Hiring— Like coding in Go? We do too. Stream is hiring in Amsterdam. Apply now.

Stream

Find a Dev Job Through Vettery— Vettery is completely free for job seekers. Make a profile, name your salary, and connect with hiring managers from top employers.

Vettery

📘 Articles & Tutorials

My Go Gotcha of the Day: Closing Over Loop Variables— Unless, of course, you want to ignore all but the last value in the collection.

Jesse Duffield

Using Domain-Driven Design(DDD)in Go— Entities, Repositories, Values! Oh my! This complete tutorial covers those DDD concepts and more, including utilities and a Vue-based front end.

Steven Victor

The Awesomeness of the httptest Package in Gohttptest is awesome and has more use cases than just straight automated unit tests.

Gianluca Arbezzano

ImageCon: Great Media Experience for U and I

Cloudinary sponsor

Equality in Golang— There’s a lot here around methods like DeepEqual and packages like go-cmp. When comparing articles about equality, you might say this one has, um, no, um, equal…

Michał Łowicki

Porting a Go-Based Face Detection Library to WASM: A Q&A with Endre Simo— Pigo is a face detection library that Endre Simo has ported to WebAssembly providing very simple and fast access to the webcam and face detection in a browser. Here’s the story.

InfoQ

🛠 Code & Tools

Chime: A (Pro) Go Editor for macOS— We mentioned the closed beta a few months back but now this new Go-oriented editor for macOS is available to try out.

Chime

esquery: An Idiomatic Go Query Builder for ElasticSearch— A library that makes it easier to use the official Go client for Elasticsearch by letting you write simpler, fluent code to represent queries.

Aqua Security

Measure and Improve Go Code Performance with Blackfire.io— Profile in development, test/staging, and production. Visualize bottlenecks in an intuitive UI and find root causes.

Blackfire.io sponsor

sqlc: Generate Type Safe Go From SQL— sqlc supports a nice set of features, including transactions, array data types, and various migration tools.

Kyle Conroy

gnark: A Fast Zero-Knowledge Proof Library— This is over my head mathematically speaking, but it sounds interesting!

HackMD

Shox: A Customizable, Terminal Status Bar— Rather experimental but works in an interesting way (it proxies output from your shell and adjusts ANSI drawing commands so it can remain on top).

Liam Galvin

A New Go API for Protocol Buffers

$
0
0

#302 — March 6, 2020

Unsubscribe  :  Read on the Web

Golang Weekly

I Want Off Mr. Golang's Wild Ride— Well, not everyone loves Go. This is a very detailed.. rant that goes beyond generics and takes issue with the idea that Go is simple. Worth a read, as things like this can help us flesh out our own opinions and figure out just why we do love Go.

Amos Wenger

A New Go API for Protocol Buffers— Reflecting (ha!) on some of the things missing from version 1, v2 has a reflection API and a new import path. It’s a breaking change, but there is a version of 1 that is backed by 2 so you can upgrade gradually.

Tsai, Neil, and Ong

Do You Need Go, Docker or Kubernetes Training?— We offer on-site corporate training for engineers that want to learn Go, Docker and/or Kubernetes. Having trained over 5,000 engineers, we have carefully crafted these classes for students to get as much value as possible.

ArdanLabs sponsor

Is Go Duck-Typed?— I hate to be a spoiler here, but the answer is “kinda.” Maybe we should call Go’s version “Gopher Typing”. The analysis is worth the read, though.

FullStory

How to Find Goroutines During Debugging— If you have a ton of goroutines, you can use new features in GoLand or delve to add custom labels to them, making them easy to find in a debugging session.

Florin Pățan

💻 Jobs

Software Engineer / Founding Teammate (Remote OK)— A well funded, fast-moving startup that is changing the way large teams collaborate on documents. Think: GitHub for documents.

Markup

Golang Developer at X-Team (Remote)— Work with the world's leading brands, from anywhere. Travel the world while being part of the most energizing community of developers.

X-Team

Find a Dev Job Through Vettery— Vettery is completely free for job seekers. Make a profile, name your salary, and connect with hiring managers from top employers.

Vettery

📘 Articles & Tutorials

How to Use Git History to Identify Pain Points in a Project?— The basic idea is that files that change often tend to be the ones where most issues occur.

Preslav Rachev

Track Latency and More in Go Apps to Quickly Optimize Performance— Trace requests across service boundaries end-to-end to identify bottlenecks and other potential errors. Try Datadog APM.

Datadog sponsor

Building a Terminal Dashboard in 300 Lines of Go— This uses runtime.MemStats to create a colorful, live dashboard and shows (again) how amazing Go can be with just a bit of code.

Che Dan

What Versions of Go Support Which OpenBSD Releases— The audience for this is tiny but such obscure knowledge may be useful, especially if you’re an OpenBSD user! And if you are, you may also appreciate Chris’s post on the situation with Go on OpenBSD.

Chris Siebenmann

Implementing Raft: Part 3 - Persistence and Optimizations— The third in a series of posts describing the implementation of the Raft consensus algorithm in Go.

Eli Bendersky

Interacting with a GraphQL API from Go— Learn the basics of consuming data from a GraphQL API using Go and simple HTTP requests.

Nic Raboy

Interning Strings in Go— Interning strings is a method of storing each unique string and reusing it instead of making new copies, which may sound desirable but could actually hurt performance.

Josh Bleecher Snyder

🛠 Code & Tools

dque: A Fast, Embedded, Durable Queue— The just-released version 2.2 includes a blocking dequeue method to wait until something is added to a queue.

Jon Carlson

goxygen: Generate a Go and MongoDB-Backed JS Project in Seconds— We only first linked this opinionated full stack app generator a few weeks ago, but since then it’s had a 0.2 version that extends its support from React to Angular and Vue.js too.

Sasha Shpota

Genji: A Document-Oriented, Embedded SQL Database— Works with Bolt, Badger and memory and also with database/sql.

Asdine El Hrychy

The Ultimate Guide to Container Formats: Decrypting Video Technologies

Bitmovin Inc. sponsor

⚠️ Monkey: Arbitrary Monkey Patching in Go— Billed as a fun experiment, this rewrites executables at runtime and inserts jumps to redirect where things go. This is very unsafe, do not use it for anything beyond fun 😂 Even the project’s license says “Don’t use it.”

Bouke van der Bijl

Gonum 0.7: Numeric Libraries for Go— Covers matrices, statistics, optimization, etc. We first linked this two years ago but it continues to get updates.

Gonum Team

goukv: An Abstraction Layer for Key-Value Stores— Currently supports BadgerDB and GolevelDB.

Mohammed Al Ashaal

go-imap 1.0.4: An IMAP4 Library for Clients and Servers

Simon Ser

Go breaks into TIOBE's top 10 languages

$
0
0

#303 — March 13, 2020

Unsubscribe  :  Read on the Web

Golang Weekly

Database Basics: Creating a SQL Database System from Scratch— A multi-part series which starts with an extensive look at creating a basic SQL parser, adding an in-memory backend, and a simple REPL.

Phil Eaton

▶  An Introduction to Rust from Go's Perspective— Also billed as ‘Rust for Gophers’, this is an hour long talk (audio not great, sadly, but the video and live coding sections are good) to bring Go developers up to speed with Rust.

Damien Stanton

Do You Need Go, Docker or Kubernetes Training?— We offer on-site, remote and video corporate training for engineers that want to learn Go, Docker and/or Kubernetes. Having trained over 5,000 engineers, we have carefully crafted these classes for students to get as much value as possible.

ArdanLabs sponsor

Go Breaks Into The Top 10 in the TIOBE Index— Yes, the TIOBE index is a much critiqued attempt to index programming languages by their relative popularity but it’s been around a long time so Go finally breaking into the top 10 (up from #18 a year ago) is nonetheless notable relative to other languages.

TIOBE

Oragono 2.0: A Modern IRC Server Written in Go— Supports modern IRC chat features (e.g. IRCv3), UTF-8, and as of this week’s version 2, persistent history support, LDAP support, and full ‘bouncer’/always-on client support too.

Oragono

An Announcement to Go Event Organizers over COVID-19— Google has placed a ban on all international travel for employees until further notice and no Go team members intend to travel internationally until at least May 2020. As well as taking this into account, there are ways you can notify the community about the state of your events (including emailing us, if you need to get the word out).

Carmen Andoh (Google)

💻 Jobs

Enjoy Building Scalable Infrastructure in Go? Stream Is Hiring— Like coding in Go? We do too. Stream is hiring in Amsterdam. Apply now.

Stream

Senior Software Engineers (Go) - 100% Remote (UK/EU Only)— Award winning scale-up, providing cloud-native, real-time payments technology to major banks and fintechs. Remote-first culture.

Form3

Find a Dev Job Through Vettery— Vettery is completely free for job seekers. Make a profile, name your salary, and connect with hiring managers from top employers.

Vettery

📘 Articles & Tutorials

go test -v Streaming Output in Go 1.14+go test -v now streamst.Log output as it happens rather than waiting until the end yielding a ‘quality of life improvement’ for integration-style tests where there might be messages you’d be keen to know about in real time.

Dave Cheney

Working with Dates in Go— Covers two situations that can be problematic.. adding a day or a week to an existing date, and the misuse of time.Time for working with dates.

Filip Borkiewicz

Why Are My Go Executable Files So Large?— An engineer’s mission to uncover what was causing his executable files to be 25% larger than the source code.

Cockroach Labs sponsor

How to Test CLI Apps Built with Cobra

Gianluca Arbezzano

Elixir-Style Actors in Go— This developer’s ‘foray into Elixir’ inspired the creation of Elixir-style actors in Go. Interesting though ultimately I’m not convinced this approach is necessary.

Preslav Rachev

Are Large Slices More Expensive Than Smaller Ones?— Dave thinks out loud.

Dave Cheney

🛠 Code & Tools

An Arkanoid Clone written in Go— For those who weren’t gaming in the 80s, think a bat and ball game 😄 This one is written in Go, uses the Ebiten 2D game engine, and follow an entity component system (ECS) architecture.

x-hgg-x

Emoji: A Minimalistic Emoji Package— Want to print emojis from Go? 👍 This provides a simple Go API with which to do so. For example: emoji.ThumbsUp

Enes Çakır

Easily Build Beautiful Video Experiences into Your Go App

Mux sponsor

cli 2.2: A Fast Way to Build Go CLI Apps— You’ll need the v2 docs to get a feel for all the features available here, but think bash and zsh auto-completion, flags, subcommands, help text, and more.

Jeremy Saenz and Contributors

faas: Turn Any Go Function into an API?— Basically a lightweight way to turn a function into an HTTP service wrapped within a container.

Zack

GoAWK: An AWK Interpreter Written in GoAWK is a text processing language with a long history.

Ben Hoyt


Tales of the Go Runtime Scheduler

$
0
0

#304 — March 20, 2020

Unsubscribe  :  Read on the Web

✍️ We live in curious and unprecedented times and we hope you're doing okay. We're planning to keep publishing the Go newsletter in the normal way but you may notice the odd change here and there (such as a focus on code and tools, this week) – please hang in there with us 🙂

If you have anything to share that would help the community, virtual events, etc. hit reply and let us know and we'll try to share what we can :-)
— Peter C, your humble editor.

Golang Weekly

Illustrated Tales of the Go Runtime Scheduler— This might help if you really want to get a grip on how Go’s scheduler works and keep all those goroutines in check.

Ankur Anand

Building and Testing a REST API with Gorilla Mux and Postgres— A thorough walkthrough of how to build a simple and well-tested REST API backed by a Postgres database using Gorilla/Mux, a popular request router.

Kulshekhar Kabra

Get the Most Out of Redis— Seamless scaling, memory usage maps, key size tracking, and more.

RedisGreen sponsor

GopherCon 2020 Update: Postponed, But Not Gone— If you were looking forward to going to GopherCon 2020 (taking place in Disney World in June) you’ll need to wait a little longer as it’s going to be rescheduled. Details to follow, but existing tickets remain valid.

Brian Ketelsen and Erik St. Martin

Maintaining Consistency in Codebases with go vet— A demonstration of extending go vet with your own checks.

Jesús Espino

How to Use Netlify to Deploy a Free Go Web App— This is principally about leaning on Netlify’s AWS Lambda powered serverless functions service.

Carl M. Johnson

💻 Jobs

Software Engineer / Founding Teammate (Remote OK)— A well funded, fast-moving startup that is changing the way large teams collaborate on documents. Think: GitHub for documents.

Markup

Find a Dev Job Through Vettery— Vettery is completely free for job seekers. Make a profile, name your salary, and connect with hiring managers from top employers.

Vettery

🛠 Code & Tools

slack-term: A Slack Client for Your Terminal— If you’re starting to use Slack more while working from home but don’t want to look uncool with the Web or desktop clients.. how about a Go powered text-based client instead? 😄

JP Bruins Slot

ntp: A Simple NTP Client Package for Go— For querying your Network Time Protocol server of choice for the current time. On a related tangent, Facebook recently wrote an interesting post about how they’ve implemented an accurate NTP service of their own.

Brett Vickers

Faster CI/CD for All Your Software Projects Using Buildkite— See how Shopify scaled from 300 to 1500 engineers while keeping their build times under 5 minutes.

Buildkite sponsor

pgzip: Parallel gzip Compression and Decompression— A drop in replacement for compress/gzip with added parallelism.

Klaus Post

go-app-paths: Retrieve Platform-Specific Paths— For example, cache directories or log paths. Works on Unix, macOS, and Windows.

Christian Muehlhaeuser

go-immutable-radix 1.2: An Immutable Radix Tree Implementation

HashiCorp

LaTTe: Generate PDFs using LaTeX Templates and JSON— It uses pdfLaTeX under the hood to create PDFs from .tex files that are filled in using text/template. There’s a live demo too.

Raphael Reyna

c2go: A Tool for Transpiling C to Go“The ultimate milestone is to be able to compile the SQLite3 source code and have it working without modification. This will be the 1.0.0 release.” Version 0.26.0 just landed, if that helps paint the picture, but development seems to have resumed after a hiatus. 🙂

Elliot Chance

The Go Security Checklist

Sqreen sponsor

gorush: A Push Notification Server Written in Go— Supports APNS (Apple Push Notification Service) and Firebase.

Bo-Yi Wu

Wingo: A Fully-Featured Window Manager Written in Go— Not a new project (indeed, it’s in ‘maintenance mode’) but I wasn’t familiar with any Go powered window managers till now, so you might fancy playing around with it if you have time to spare.

Andrew Gallant

go-github: A Go Client for the GitHub v3 API— v30 clears out a variety of deprecations. For the v4 GraphQL API you need this instead.

Google

What the current global situation means for Go

$
0
0

#305 — March 27, 2020

Unsubscribe  :  Read on the Web

Golang Weekly

Go, the Go Community, and the Pandemic— An official post from three core team members on how the pandemic is affecting our community along with resources on things like online training, open-source, job postings, and current 1.15 impacts.

The Go Blog

How to Use Diago to Diagnose CPU and Memory Usage in Go Programs— Diago is a visualization tool that takes pprof output (profile, heap) and displays them in a tree format in the terminal.

Rémy Mathieu

How to Use PostgreSQL Together with the Programming Language Golang (Go)— Here are some step-by-step instructions on how to configure, connect and launch Go application with PostgreSQL.

EnterpriseDB sponsor

Announcing RxGo v2: Reactive Extensions for Go— RxGo is a Go implementation of ReactiveX, making it akin to RxJS, etc. if you want to write asynchronous programs oriented around streams of events/observables, pipelines, etc. The ‘Getting Started’ docs will help clarify the ideas. GitHub repo.

Teiva Harsanyi

typex: Examine Go Type Structures, Interfaces and Transitive Dependencies— In other words, print out a tree structure of Go packages and their type structures and interfaces on the command line.

Daniel T. Gorski

💻 Jobs

Find a Dev Job Through Vettery— Vettery is completely free for job seekers. Make a profile, name your salary, and connect with hiring managers from top employers.

Vettery

Enjoy Building Scalable Infrastructure in Go? Stream Is Hiring— Like coding in Go? We do too. Stream is hiring in Amsterdam. Apply now.

Stream

📚 Articles & Tutorials

Quickly Find Rust Program Bottlenecks Online Using a Go Tool— So, the next time a Rustacean tells you how good Rust is, ask them to come find you when they need to find issues in their Rust app 😄

PingCAP

Object Fingerprinting for Efficient Data Ingestion— Using a custom JSON unmarshal function to build a hash for objects that can be used for efficient comparison of already ingested objects.

Andrew Klotz

Video Streaming for Go— Build video for your app that Just Works™. Mux's Video API makes it super easy to build video or live streaming into any app.

Mux sponsor

Working with Postgres Transactions in Go

Mohit Khare

How Does Monzo Keep 1,600 Microservices Spinning?— Go only gets a brief mention here, but the entire tech stack might be a template for tackling complex distributed systems.

🛠 Code & Tools

Gopher2600: An Atari VCS Emulator— A relatively feature-complete emulator that includes controller support and gameplay recording.

Stephen Illingworth

ION: A Distributed Real-Time Communications (RTC) System— Powered by both Go and Flutter, ION supports WebRTC, as you’d expect, as well as a few other protocols for video conferencing, live streaming, etc.

Pion

lmdrouter: A Go HTTP Router for AWS API Gateway-Invoked Lambda Functions— A simple-to-use library for writing serverless functions that work upon API Gateway proxy requests.

Aqua Security

tube: A YouTube-like Video Sharing App— Want to deploy your own YouTube-esque site but running by your own rules? Worth a try. Supports automatic transcoding to MP4 H.265 AAC, multiple collections and RSS feeds.

James Mills

Faster CI/CD for All Your Software Projects Using Buildkite

Buildkite sponsor

Logrus 1.5: A Feature Rich Structured Logger— Supports JSON formatting, hooks (for sending certain log entries to external services, say), plus it’s API compatible with the standard library’s logger too, so try dropping it in.

Simon Eskildsen

Gold: A Reinforcement Learning Library— Provides a set of agents that can be used to solve challenges in various environments.

AUNUM

Duit: A Simple Money Tracker, Built with Go and Mithril.js— A complete, simple money tracking web app.

Radhi

💌 A valuable message from Russ Cox

Over on the golang-dev mailing list, Russ Cox posted a valuable message:

Go development is not isolated from world events; work on Go always comes second to more basic concerns like personal and family health and safety. Nearly all of us are working at reduced capacity these days. I expect that capacity to drop further over the next few months.

[...]

If our own working capacity is reduced but we keep the same timelines, then we must reduce the scope of what we expect to be in the release. Some new features or planned won't make it. That's OK - we'll get them next time. We all need to accept that, for our own work and work by others.

Most of all, let's all please be extra kind and charitable with each other. It's always good advice to remember that you don't know what external stresses are affecting the person on the other end of the email, review thread, or GitHub comment, but it's especially important now.

The above is just a quick summary of the main points, but it's also worth reading in full. Thanks Russ.

Getting Go in the browser with WebAssembly and TinyGo

$
0
0

#306 — April 3, 2020

Unsubscribe  :  Read on the Web

Golang Weekly

Running Go in the Browser with WebAssembly and TinyGo“Writing Go code for the browser is a reality today. But it’s no picnic.” There’s a bit of noodling around to do, but the ultimate result of getting a graphical chess game into the browser without needing a server is undoubtedly cool.

Mariano Gappa

Some Go Quirks— Simon details some issues he’s found in Go that aren’t related to issues that everyone always mentions (generics, etc.) as well as how he worked around them.

Simon Bernier St-Pierre

Get Better Insight into Redis with RedisGreen— Modern hosting and monitoring services include memory usage maps, seamless scaling, key size tracking, and more.

RedisGreen sponsor

GoLand 2020.1 Reaches Beta— GoLand is a popular (commercial) Go IDE from JetBrains and so many neat features are now fully baked in including Go module support and smart code completion. This is the last release before the final that you can try without having a GoLand ‘subscription’.

GoLand Blog

How to Programatically Generate Gorgeous Social Media Images— Posts with media get more engagement on social media, so if that’s important to you, this is a fun Go-powered way to do the job.

Mat Ryer

A Collection of 100+ Popular LeetCode Problems Solved in Go— No cheating! This is just for learning. LeetCode is a puzzle-based platform for building up your dev skills and one developer has shared his attempts (he got a job at Hashicorp from it, so he can’t have been too bad 😄).

Austin Gebauer

💻 Jobs

Enjoy Building Scalable Infrastructure in Go? Stream Is Hiring— Like coding in Go? We do too. Stream is hiring in Amsterdam. Apply now.

Stream

Find a Job Through Vettery— Vettery specializes in tech roles and is completely free for job seekers. Create a profile to get started.

Vettery

▶ Get ready for your next role: PluralSight is free for the entire month of April. Stay Home. Skill Up. #FreeApril— SPONSORED

📚 Articles & Tutorials

Building a Reddit Bot in Go with MiraMira provides a straight-forward API for working with Reddit.

Sagindyk Urazayev

Logging in Go: Choosing a System and Using it— One for people who are relatively new to Go and weighing up the options for doing logging in their apps. Complete with examples.

Ayooluwa Isaiah

Choosing Between Rust or Go?— Damien Stanton has worked with both Go and Rust and presented on the subject. As with all of these discussions, there is no final choice but the insights are interesting.

Hatchpad

The Go Security Checklist— From code to infrastructure, learn how to improve the security of your Go applications with the Go security checklist.

Sqreen sponsor

▶  Developing Applications with Go and MongoDB— A look at how to develop apps with MongoDB and the Go programming language through basic CRUD operations, RESTful APIs, and GraphQL with MongoDB Realm.

Nic Raboy

Why I'm Switching to JavaScript from Go— OK, this one caught me out for a few seconds but it’s an April Fool’s joke (I hope!).. Enjoy it for what it is 😂

Roberto Clapis

🛠 Code & Tools

progressbar 3.0: A Basic Thread-Safe Progress Bar

Zack Scholl

gomodifytags 1.4: A Go Tool to Modify struct Field Tags— Makes life easier if you want to work with editing, updating, or adding tags in a struct field. Integrates with vim, Atom, Emacs, and VS Code.

Fatih Arslan

Pester: Increased Resiliency for Go's net/http Client— Wraps Go’s net/http to add backoff and retry strategies.

Seth Ammons

Molecule: A Library for Parsing Protobufs Efficiently— Not just efficiently, but with zero-allocations too. Still alpha level but a promising complement to existing packages.

Richard Artoul

Beta Launch: Code Performance Profiling - Find & Fix Bottlenecks

Blackfire sponsor

Go-TinyTime: A 'Tiny' Time Object— Uses 4 bytes of memory vs the 24 bytes of a time.Time{}.. a pretty small win, so only think situations where you’re storing a lot of dates at the same time, embedded situations, timezones aren’t important, etc. Go-TinyDate is the same idea but for day-level precision only.

Lane Wagner

RocketMQ Client Go 2.0: An Apache RocketMQ Client— Supports ‘almost the full features’ of Apache RocketMQ (a distributed messaging and data processing platform), such as pub and sub messages, ACL, and tracing.

The Apache Software Foundation

Chisel: A Fast TCP Tunnel Over HTTP— A perfect use case for Go when you can get such things down to a single executable.

Jaime Pillora

Goro: A High-Level Machine Learning Library— Last week we linked to Gold, a new reinforcement learning library, now we have a Keras-esque ML library from the same folks.

AUNUM

Gin 1.6.2: The Popular Go HTTP Web Framework

Gin-Gonic

Oops, we're not publishing today.

$
0
0

#307 — April 10, 2020

Unsubscribe  :  Read on the Web

Golang Weekly

Dear reader,

Long before we'd heard the term 'covid', we'd planned to take Easter Friday (today) off and tell you about this in last week's issue. But we forgot 🤭

As we tend to get lots of emails whenever we merely publish late, I didn't want to run the risk of everyone thinking we were in trouble by not sending anything :-)

So we're back next Friday but while I'm here, I have a few links to share:

As always, we hugely appreciate your support and that you continue to read the newsletter, check out our sponsors, and send us things to include each week. We are only a 'Reply' button away if you need us.

Happy Easter if you celebrate it. Happy Friday, if you don't 😄

— Peter Cooper and the Cooperpress team

P.S. If I were going to recommend just one of our other newsletters to check out, it'd be StatusCode Weekly. It's a general roundup of useful programming goodness, often with a lot of interesting stories thrown in.

This week we featured a VS Code extension that encourages you to take breaks, a compilation of explanations of Unix package names, some technical writing courses Google has shared, a clever Google Maps API optimization and, well, a lot more.

A CLI podcast player built in Go

$
0
0

#308 — April 17, 2020

Unsubscribe  :  Read on the Web

Golang Weekly

Broccoli: Using Brotli Compression to Embed Static Files in Go— There’s been talk about making static file embedding a standard part of Go, but for now you might find this project interesting. It uses the Brotli compression system to embed a virtual file system of static files in your Go executables as tightly as possible.

Aletheia

How Thanos Would Program in Go— An introduction to the Thanos Go Style Guide built for Thanos, the distributed metrics system project, not the Marvel super-villain, BTW 😏

Bartek Płotka

Introducing GoLand 2020.1— A variety of upgrades for Go Modules support, code-editing features that require little to no interaction from the user, an expanded code completion family, and more! Try free for 30 days.

GoLand sponsor

Understanding Bytes in Go by Building a TCP Protocol— There is a lot more in this long-ish tutorial than just learning about bytes. This is great if, let’s say, you are stuck at home and need a challenge. (Note: If you’ve got deja-vu, we linked this in last week’s brief non-issue.)

Ilija Eftimov

Ebiten 1.11.0 Released: The Go 2D Gamedev Library— Ebiten is one of those genuine gems of a project. Maybe use it to take part in this weekend’s Ludum Dare game jam? More Go entries would be neat..

Ebiten

Generics in Go: How They Work and How to Play With Them— Generics are a lot closer than you might think. So much so that you can try them today in a browser or compile locally.

Chris Brown

💻 Jobs

Senior Software Engineer (Go) – 100% Remote (UK/EU Only)— Form3 is building the most exciting banking technology on the planet and are looking for Talented Engineers to join the team.

Form3

Golang Developer at X-Team (Remote)— Join X-Team and work on projects for companies like Riot Games, FOX, Coinbase, and more. Work from anywhere.

X-Team

Find a Job Through Vettery— Vettery specializes in tech roles and is completely free for job seekers. Create a profile to get started.

Vettery

📚 Articles & Tutorials

Statically Compiling Go Programs— If you thought all/most Go binaries were static, you might be surprised to find out that some core packages use cgo code and result in dynamically linked libraries.

Martin Tournoij

How To Create Testable Go Code— Structure your code and tests to be mockable, testable, and maintainable, even if it calls external services.

Dave Wales

The Go Security Checklist— Ensure the infrastructure and the code of your Go applications are secure with the latest actionable best practices.

Sqreen sponsor

Build Your Own Neural Network in Go— A beginner’s guide to building the simplest parts of a neural network completely from scratch.

Dasaradh S K

'How I Built a Cloud Gaming System with WebRTC and Go'

Thanh Nguyen

🛠 Code & Tools

podcast-cli: A Podcast Player with a Terminal-Based Interface

Goulin

Godocgen: A Go Documentation Generator— Godocgen can output to multiple formats/destinations, making it easy to host as a static site. More background here.

Holloway Chew Kean Ho

3mux: An i3-inspired Terminal Multiplexer— Imagine something like tmux but easier to learn and with sensible defaults. Plus, it’s written in Go so you can tweak it as much as you like :-)

Aaron Janse

Micro 2.5: A Go Micro Services Development Framework

Micro

Beta Launch: Code Performance Profiling - Find & Fix Bottlenecks

Blackfire sponsor

Goph: A Native Go SSH Client— Supports connections using passwords, private keys, keys with passphrases, doing file uploads and downloads, etc.

Mohamed El Bahja

GeoDB: A Persistent Geospatial Database with Geofencing and Google Maps Support— Built using Badger gRPC and the Google Maps API. Track the geolocation of objects across boundaries or in relation to other objects.

Coleman Word

oneinfra: A 'Kubernetes as a Service' Platform— Provide or consume Kubernetes clusters at scale, on any platform or service provider.

oneinfra

Gocorona: Track COVID-19 Statistics From Your Terminal— A short and sweet demonstration of what you can throw together quickly using termui, a customizable Go-powered terminal dashboard and widget library.

Ayooluwa Isaiah

The 2019 Go developer survey results are available

$
0
0

#309 — April 24, 2020

Unsubscribe  :  Read on the Web

Golang Weekly

Go Developer Survey 2019 Results— The annual survey results are here but calculated differently than in previous years. See how the community feels, what tools we use, and what we’re really using Go for.

The Go Blog

Fiber: An Express.js Inspired Web Framework for Go— If you know Express (from the Node world) than Fiber will look very familiar. It supports middleware, WebSockets, and various template engines, all while boasting a low memory footprint. Built on top of FastHTTP.

Fiber

We Now Offer Remote Go, Docker or Kubernetes Training— We offer live-streaming remote training as well as video training for engineers and companies that want to learn Go, Docker and/or Kubernetes. Having trained over 5,000 engineers, we have carefully crafted these classes for students to get as much value as possible.

Ardan Labs sponsor

A Comparison of Three Programming Languages for Bioinformatics— This is quite an academic piece but basically Go, Java and C++ were put head to head in an intensive bioinformatics task. The good news? Go won on memory usage and beat the C++17 approach (which was admittedly less than ideal) in performance. The team in question chose Go going forward.

BMC Bioinformatics

Go for Cloud — A Few Reflections for FaaS with AWS Lambda— A response to a this article about Go’s pros and cons in the cloud. You should read both.

Filip Lubniewski

💻 Jobs

Enjoy Building Scalable Infrastructure in Go? Stream Is Hiring— Like coding in Go? We do too. Stream is hiring in Amsterdam. Apply now.

Stream

Golang Developer at X-Team (Remote)— Join the most energizing community for developers. Work from anywhere with the world's leading brands.

X-Team

Find a Job Through Vettery— Vettery specializes in tech roles and is completely free for job seekers. Create a profile to get started.

Vettery

📚 Articles & Tutorials

An Introduction to Debugging with Delve— If you’re in the “I don’t really use a debugger..” camp, Paschalis’s story and brief tutorial might help you dip a toe into the water.

Paschalis Tsilias

Object Ordering in Go— This is all about object comparison and the types of comparisons that are allowed in Go. Reading this post > Not reading this post.

Eyal Posener

How to Manage Database Timeouts and Cancellations in Go— How to cancel database queries from your app and what quirks and edge cases you need to be aware of.

Alex Edwards

The Go Security Checklist— From code to infrastructure, learn how to improve the security of your Go applications with the Go security checklist.

Sqreen sponsor

Data Logging with Go: How to Store Customer Details Securely— Specifically, this looks at using custom protobuf FieldOptions to mark fields as OK to log and reflection to check those options.

Vadzim Zapolski-Dounar

How to Install Go in FreeBSD in 5 Minutes— You can use a package manager, but this way has advantages and it’s easy.

Jeremy Morgan

🛠 Code & Tools

Fynedesk: A Fyne-Powered Full Desktop Environment for Linux/Unix— Previously we’ve linked to Fyne, a Go-based cross-platform GUI framework, but now it’s been used to create an entire Linux desktop environment!

Fyne.io

Lockgate: A Cross-Platform Locking Library— Has support for distributed locks using Kubernetes and OS file locks support.

Flant

Pomerium: An Identity-Aware Secure Access Proxy— An identity aware access-proxy modeled after Google’s BeyondCorp. Think VPN access benefits but without the VPN. Built in Go, naturally.

Pomerium

Beta Launch: Code Performance Profiling - Find & Fix Bottlenecks

Blackfire sponsor

Apex Log: A Structured Logging Package for Go— Inspired by Logrus.

Apex

mediary: Add Interceptors to the Go HTTP Client— This opens up a few options: tracing, request dumping, statistics collection, etc.

Here Mobility SDK

iso9660: A Go Library for Reading and Creating ISO9660 Images— The use cases for this will be a bit niche. The author created it to dynamically generate ISOs to be mounted in vSphere VMs.

Kamil Domański

pxy: A Go Livestream Proxy from WebSockets to External RTMP Endpoints

Chua Bing Quan

An insightful interview with Go's Rob Pike

$
0
0

#310 — May 1, 2020

Unsubscribe  :  Read on the Web

Golang Weekly

An Interview with Go's Rob Pike— Go’s co-creator answers some big picture questions about Go’s status, history, and future. “Go has indeed become the language of cloud infrastructure,” says Rob.

Evrone

📊 What's Coming in Go 1.15— This presentation covers all the major sections: tooling, performance, API changes, and the Big Ones, like the aforementioned smaller binaries. Fingers crossed for a final release in August.

Daniel Martí slidedeck

Troubleshoot Golang App Issues with End-To-End Distributed Tracing— Trace requests across service boundaries to optimize bottlenecks by drilling into individual traces end-to-end with flame graphs. Correlate Golang traces with related logs and metrics for fast troubleshooting. Enhance performance with a free Datadog APM trial.

Datadog APM sponsor

Debugging Go Programs using Delve— The recent Go community survey showed that most Go developers use text-based logging (e.g. with fmt.Print()) to debug, but if you want to step things up a notch, this is a gentle intro to Delve.

Naveen Ramanathan

My Journey Optimizing The Go Compiler— Assel explains how a simple task evolved into a legitimate compiler optimization (aimed at 1.15) and proves we should all have a curious mind.

Assel Meher

The 'Ultimate' Go Study Guide— A large repository of code examples with comments and notes from Hoanh’s attempt at learning the language. If you pick up concepts well from straightforward examples, this is worth a look.

Hoanh An

💻 Jobs

Software Engineer at HiPeople (Remote/Berlin)— Fast-moving startup (backed by top tier VCs) shaping the future of modern recruiting is looking for engineers who love working with Go.

HiPeople

Find a Job Through Vettery— Vettery specializes in tech roles and is completely free for job seekers. Create a profile to get started.

Vettery

📚 Articles & Tutorials

Making a Multiplayer Game with Go and gRPC— Started as a (somewhat ambitious) project to learn Go, Sam walks us through the algorithms, design decisions, mistakes, and where Go helped and hurt the game.

Samuel Mortenson

Documenting a Go GitHub Repo— Or, “How to Keep the README in Your GitHub Repo in Sync with Your Go Doc.”

Eyal Posener

The 5 Crucial PDF & Office Features For Corporate Apps in Pure Go— UniDoc develops pure Go libraries for managing PDF and Office files since 2016. Here are the features developers use the most.

UniDoc sponsor

▶  Discussing Building Immediate Mode GUIs in Go— Elias Naur, creator of Gio, joins the popular Go podcast to discuss building GUI apps with Go, the pros and cons of immediate vs retained mode and examples of each.

Go Time Podcast podcast

The Creation of a Realtime Patient Monitoring System with Go and Vue in 3 Days— This is the Go content I am here for. Connecting with monitoring devices and leveraging Go’s strengths to create a helpful, distributed application. Great work.

Kasun Vithanage

Add It Up: Azure’s Go Problem— Here’s one takeaway from the Go Developer Survey. Of the major clouds, Azure is the one Go developers seem least enamored by.

Lawrence E Hecht

Why You Should Generally Be using the Latest Version of Go— No surprising arguments here.

Chris Siebenmann

🛠 Code & Tools

XLSX: A Library for Reading and Writing XLSX (Excel) Files— Got spreadsheets? Want to make spreadsheets? There’s a lot you can do with them here.

Geoffrey J. Teale

SQLBoiler: Generate a Go ORM Tailored to Your Database Schema— A long standing library that has now switched to modules.

Volatile Technologies Inc.

Decimal: Arbitrary-Precision Fixed-Point Decimal Numbers for Go— The library laments that it can only support decimal numbers with up to 2^38 digits after the decimal point so take care 😏

Spring Engineering

Beta Launch: Code Performance Profiling - Find & Fix Bottlenecks

Blackfire sponsor

Redigo: A Go Client for Redis— In related news, Redis 6.0 has just been released.

Gary Burd

ntp: Facebook's NTP Libraries— NTP stands for “Network Time Protocol”, if you were wondering. Basically, clock synchronization.

Facebook Incubator

grobotstxt: A Native Go Port of Google's Robots.txt Parser and Matcher Library— Now you can crawl your own site, just like Google does.

Jim Smart

A Compiler for a Small Custom Language Into x86-64 Assembly— One of those ‘labor of love’ type projects that you might enjoy poking around in. You won’t use this project directly, but you might be intrigued how to create a similar compiler for your own thing.

Maurice Tollmien

MIDAS: Microcluster-Based Detector of Anomalies in Edge Streams— A Go reimplementation of this C++ version.

Steve Tan

Liftbridge 1.0: Lightweight, Fault-Tolerant Message Streams— A server that implements a durable, replicated message log for the NATS messaging system.

Liftbridge


Caddy 2.0 released, plus a little black hat Go

$
0
0

#311 — May 8, 2020

Unsubscribe  :  Read on the Web

Golang Weekly

Caddy 2: The Go-Powered Web Server with Automatic TLS— After over a year of redesign, Caddy 2 has a new architecture to v1. If you want a new HTTPS server that ‘just works’, Caddy is well worth a look IMO. Its lead creator, Matt Holt, answered lots of questions on this Hacker News thread about the release.

Caddy Web Server

Rek: An Easy HTTP Client for Go— The inspiration here is from Python’s very well known and highly esteemed Requests library.. so the Pythonistas among you might like this!

Luc Perkins

Modern Redis Features with RedisGreen— Online upgrades to the latest Redis 6.0 features, memory mapping, key size tracking, and more.

RedisGreen sponsor

Life Without Line Numbers— There’s a lot of buzz around reducing the size of Go binaries (1.15 does so by ~6%) and here’s another tactic: reduce the precision of the position information. The gain is 2-6%, depending on how far you take it.

Josh Bleecher Snyder

▶  Discussing Black Hat Go“Are you excited to learn about hacking and that?” Got an hour? Roberto Clapis, a security engineer at Google, and Tom Steele, a co-author of Black Hat Go, join the Go Time team to discuss security, penetration testing, and more.

Go Time Podcast

💻 Jobs

Enjoy Building Scalable Infrastructure in Go? Stream Is Hiring— Like coding in Go? We do too. Stream is hiring in Amsterdam. Apply now.

Stream

Find a Job Through Vettery— Vettery specializes in tech roles and is completely free for job seekers. Create a profile to get started.

Vettery

📚 Articles & Tutorials

Mid-Stack Inlining in Go— Inlining a function can lead to serious performance gains, so why not do it for everything? Well, there are always trade-offs.

Dave Cheney

Asynchronous Preemption in Go 1.14— How the new preemption implementation works, including the use of a lesser-known signal (SIGURG).

Vincent Blanchon

Why Are My Go Executable Files Larger Than My Source Code?— We built a data visualization tool to find out. Here’s how we built it, and what we learned.

Cockroach Labs sponsor

Accelerating Aggregate MD5 Hashing Up to 800% with AVX512— The culmination of this work is md5-simd, a Go library that performs such rapid MD5 hashing (when running concurrently). The use cases here are quite restricted but you may appreciate seeing how such things are implemented for any high end SIMD wrangling you need to do one day.

MinIO Blog

▶  A Beginner's Guide to gRPC in Go— There’s a written version of the tutorial if you dislike videos.

TutorialEdge

Four Steps to Daemonize Your Go Programs— Daemons are programs that run as non-interactive background processes (e.g. background job processors, Web servers, database systems).

Ilija Eftimov

Go as a Scripting Language?— There’s plenty of folks that use Go as a scripting language, but there are challenges around REPLs and shebang support. Some of these challenges are being addressed today.

Segio De Simone

🛠 Code & Tools

UUID 3.3: A Pure Go Implementation of UUIDs— A pure Go implementation of Universally Unique Identifiers (UUID) as defined in RFC-4122 covering versions 1 through 5.

The Go Commune

Reed-Solomon: A Reed-Solomon Erasure Coding Library— A Go port of a Java library built by Backblaze that does Reed Solomon erasure coding (a way to send or store data in a larger form that’s resilient to data loss). Boasts operation of over 1GB/sec per core.

Klaus Post

ko 0.5: Build and Deploy Go Apps on Kubernetes— ko’s objective is to “to make containers invisible infrastructure.” It’s been rapidly maturing in the past few months too.

Google

Monitor the Health and Performance of Your Golang Apps with Datadog APM. Free Trial

Datadog APM sponsor

Tengo 2.2: A Fast Embeddable Script Language for Go— Quite a mature project now and worth a look if you need to add some dynamic scripting to your code.

Daniel Kang

UniPDF 3.7: A Library for Creating and Processing PDF Files— Pure Go, which is neat, but note it’s dual licensed: AGPL for open source, commercial for closed source projects.

UniDoc

Mockery: A Mock Code Generator for Go Interfaces

Vektra

Dynamo: An Expressive DynamoDB Library

Greg Greg

🎲 Two Fun Side Projects

gasm: An Experimental WASM Virtual Machine for Gophers“I did this just for fun and for learning WASM specification.” Nonetheless, it works with basic examples.

Takeshi Yoneda

thdwb: A Homebrew Web Browser and Rendering Engine— Another experimental, fun learning project. You won’t be using it for your day to day browsing any time soon but projects like this keep the imagination fueled up.

Danilo Fragoso

It'd be quite cool to link to more fun Go experiments and side projects actually, so let us know if you work on any. Bonus points for games, musical, or Web experiences 😄

What's coming in Go 1.15

$
0
0

#312 — May 15, 2020

Unsubscribe  |  Read on the Web

Golang Weekly

What's Coming in Go 1.15— We linked to a Go 1.15 slidedeck a couple of weeks ago, but I know most of you prefer articles, so here you go! You know about smaller binaries, but did you know there’s a new linker?

Benjamin Hoyt

'Ensmallening' Go Binaries by Prohibiting Comparisons— Most people don’t need to squeeze Go binary sizes by this mild extent, but it’s an interesting spelunk nonetheless into how Go’s compilation process feeds a lot of sugar to your app, causing it to be a bit fatter and how you can put it on a (very modest) diet.

Dave Cheney

Find & Fix Code Performance Issues— You can’t improve what you can’t measure. Install in minutes. Profile and understand Go code’s behavior and performance. Browse through appealing graphs. Blackfire.io is now available as Public Beta.

Blackfire.io sponsor

go-elasticsearch: The Official Go Client for ElasticsearchElasticsearch is a verrry popular search engine/document database used to implement search features in apps, and with v7.7.0 the Go client has added support for efficient, parallel ‘bulk indexing’ with very high ingest rates (example here.)

elastic

immudb: A Lightweight, High-Speed Immutable Database— Data can’t be changed in this database so it’s well suited for storing every update to other databases for auditing purposes, perhaps, or maybe log streams or public certificates. Written in Go.

CodeNotary

Go 1.14.3 and Go 1.13.11 Released— Minor point releases fixing a handful of minor bugs.

Andrew Bonventre

💻 Jobs

Golang Developer at X-Team (Remote)— Join X-Team and work on projects for companies like Riot Games, FOX, Coinbase, and more. Work from anywhere.

X-Team

Find a Job Through Vettery— Vettery specializes in tech roles and is completely free for job seekers. Create a profile to get started.

Vettery

📚 Articles & Tutorials

Faking stdin and stdout in Go— Redirecting standard input and output is common in testing situations but has other use cases as well.

Eli Bendersky

A Beginner Friendly Introduction to PrometheusPrometheus is a popular system monitoring and alerting system that’s built in Go and which you can therefore extend and enhance with Go too.

S Santhosh Nagaraj

How I Write My Unit Tests in Go Quickly— This covers everything from designing for easy testing to mocks to helpful libraries.

Ilya Kaznacheev

The Go Security Checklist

Sqreen sponsor

Building Uber’s Go Monorepo with Bazel— Uber’s monorepo is the largest that’s using Bazel, leading to many challenges leading to many opportunities for Uber to work with Bazel and improve the platform.

Uber Engineering

Getting My Head Around What Things Aren't Comparable in Go— Builds upon Dave Cheney’s featured article above.

Chris Siebenmann

🛠 Code & Tools

Termdash: A Go Terminal Based Dashboard System— A terminal-based dashboard before that supports window resizing, customizable layouts, dynamic layout changes at runtime, and more.

Jakub Sobon

goaction: Write GitHub Actions in Go“The idea is: write a standard Go script, one that works with go run, and use it as a GitHub action.”

Eyal Posener

Getting Started with OpenTelemetry in Go

Lightstep sponsor

Shotizam: Analyze The Size of Go Binaries— Shotizam gives you a SQLite prompt with the results so you can use SQL to query them.

Brad Fitzpatrick

Excelize 2.2: A Library for Reading and Writing Excel Files— Read and write XLSX files, set and read cell values, add charts. 2.2 is a key step forward with easier access to numerous features.

360 Enterprise Security Group, Endpoint Security, inc.

jsonparser 1.0: An Alternative JSON Parser for Go— Schema-less so it’ll parse whatever you throw at it. Claims to be 10 times faster than encoding/json.

Leonid Bugaev

Squirrel 1.4.0: Fluent SQL Generation for Go— Think about chainable methods to build a SQL query. For example: sq.Select("*").From("users").Join("emails USING (email_id)")

Masterminds

sqlc 1.3.0: Generate Type Safe Go From SQL— sqlc supports a nice set of features, including transactions, array data types, and various migration tools. 1.3.0 just dropped.

Kyle Conroy

go-toml: Go Library for the TOML FormatTOML is a configuration file format invented by one of GitHub’s founders. Here’s what it looks like.

Thomas Pelletier

🎲 Fun and Side Projects

Profefe: Continuously Collect Profiling Data for Long-Term Postmortem Analysis— Vladimir writes in:

“For the past couple years I’ve been working on profefe, a system and an agent-library for continuous profiling for Go, initially inspired by Google’s Stackdriver Profiler. (..) Since this is a hobby project, I’m interested in feedback and collecting use cases, outside of those I came up for my personal needs.”

Vladimir Varankin

Orchestra: A New Library to Manage Long Running Go Processes

Stephen Afam-Osemene

If you want to get into a section like this in a future issue, let us know if you work on any interesting Go related projects you think we should include. Bonus points for games, musical, or anything with a nice visual angle we can include, but everything welcome. 😄

How GitHub helped fix some bugs in a Go library

$
0
0

#313 — May 22, 2020

Unsubscribe  |  Read on the Web

Golang Weekly

Sorry, this picture was just too cute to resist using :-)

The Tale of Three Bugs in the Go MySQL Driver— While GitHub.com is a monolithic Rails app, various parts are being extracted into Go-based services and some GitHub engineers ran into some issues with the Go MySQL driver. This goes into a lot of depth and inspired quite a bit of discussion on Hacker News too.

Vicent Martí

Awesome Go: Over 2000 Go Links, Library and Tools— We link this epic resource of Go links, libraries, projects, and meetups every now and then, and it’s continuing to get updates every week. Got a library or tool of your own? Get it added to the list.

Awesome Go

We Now Offer Remote Go, Docker or Kubernetes Training— We offer live-streaming remote training as well as video training for engineers and companies that want to learn Go, Docker and/or Kubernetes. Having trained over 5,000 engineers, we have carefully crafted these classes for students to get as much value as possible.

Ardan Labs sponsor

How I Structure Web Servers in Go— Both code organization and project structure were listed in the Go Survey 2019 results as challenges faced by Go developers, which explains why articles like this are always popular. This one goes into more detail than most.

James Dudley

▶  Build a Microservice with Go and GoLand— Despite being a commercial IDE, GoLand came in a very close second to Visual Studio Code as the Go community’s editor of choice in the recent Go community survey. This 90 minute screencast doesn’t focus on the editor but clearly demonstrates the value it provides in a full project.

Florin Patan (JetBrains)

Getting Started With LDAP in Go— LDAP (Lightweight Directory Access Protocol) is a rather long standing protocol used by directory information services such as Microsoft’s Active Directory.

Milos Gajdos

💻 Jobs

Want to build a platform ecosystem in Go?— Skool is hiring its 2nd backend engineer in Los Angeles, CA. Go, PostgreSQL, Redis, Elasticsearch, Docker. Apply Now.

SKOOL

Enjoy Building Scalable Infrastructure in Go? Stream Is Hiring— Like coding in Go? We do too. Stream is hiring in Amsterdam. Apply now.

Stream

Find a Job Through Vettery— Vettery specializes in tech roles and is completely free for job seekers. Create a profile to get started.

Vettery

📚 Articles & Tutorials

Mocking Time and Testing Event Loops— If you have code that relies upon the date/time, it can be beneficial when testing to have those times be predictable.

Dmitry Frank

Ways to Represent JSON Structures— An exploration of three differing approaches for representing JSON objects within Go: a direct one-to-one struct representation, a more generic approach, and a hybrid.

Eli Bendersky

The Ultimate Guide to Container Formats: Decrypting Video Technologies

Bitmovin Inc. sponsor

Building a Paperless, Remote Friendly Process with Go, Twilio and Google Cloud Run“Today I’ll share how I helped an old 25 years old credit bureau relying on faxes and printed papers to go fully remote with all their employees.”

Dominic St-Pierre

Speeding Up JSON Processing in Go— Reduce, Reuse, and don’t Reflect. The three Rs of JSON serialization for this article.

Andrew Klotz

▶  Discussing the Challenges of Distributed Messaging Systems— If you think building distributed systems is hard, try building a distributed system for other distributed systems to communicate! This is what the Go-powered NATS can help you do and its creator went on to the Go Time podcast to discuss all things distributed.

Go Time Podcast podcast

🛠 Code & Tools

Resty 2.3: Simple HTTP and REST Client Library for Go— Simple in terms of getting around its API, but in terms of features it’s pretty packed.

Jeevanandam M.

Stonks: A Terminal Based Stock Price Visualizer and Tracker— Love the subhead of “track your losses from a terminal.”

Eric Moynihan

Find & Fix Code Performance Issues— Install in minutes. Profile & understand Go code’s behavior & performance. Browse through appealing graphs.

Blackfire.io sponsor

go-fault: Fault Injection Library using Standard HTTP Middleware— Inject chaos into your stack, or, really, a percentage of your stack. Pick from three fault types or chain them together.

GitHub

addchain: Cryptographic Addition Chain Generation— It’s OK, I didn’t know what this meant at first either and it seems limited to those in the cryptographic research or math spaces.

Michael McLoughlin

Google's Covid-19 Exposure Notification Reference Server is Written in Go— I mean, you’re not likely to need/want to install this for yourself, but if you want to see how Google engineers write Go code and structure a project, fill your boots.

Google

Machinery 1.8.2: An Async Job Queue Based on Distributed Message Passing— It can use Redis, Memcached, RabbitMQ, or MongoDB as its backend store.

Richard Knop

🎲 Fun and Side Projects

gorched: A Terminal Based Game Inspired by Scorched Earth— This is cool for a variety of reasons. Not just because it’s a clone of a classic artillery video game but because it’s text-based (yet still looks cool) and written in Go, of course.

Ján Čabala

Building a Chip-8 Emulator in Go— A high level overview of Chippy, a Go powered Chip-8 emulator built by the author, and how to go about building your own such emulator.

Bradford Lamson-Scribner

If you want to get into a section like this in a future issue, let us know if you work on any interesting Go related projects you think we should include. Bonus points for games, musical, or anything with a nice visual angle we can include, but everything welcome. 😄

🐦 A tip from Twitter

Control your computer with Go

$
0
0

#314 — May 29, 2020

Unsubscribe  |  Read on the Web

🐱 Some fun side projects at the end of the issue this week, especially if you like dancing gophers.. 😄

Golang Weekly

RobotGo 0.90: Native Cross-Platform GUI Automation— We’ve linked this a few times over the years but it’s just had a huge update. Control the pointer, keyboard, read the screen, etc.. you could use this to automate many computer-based jobs with enough creativity 😁 0.90.0 release notes. The examples give a good sense of the API too.

V Caesar et al.

Diamond Interface Composition in Go 1.14— Go 1.14 permits embedding interfaces with overlapping method sets (specified here) and Dave quickly looks at what that means.

Dave Cheney

Secure Your Go Application with Sqreen— Join us and learn more about Go application security best practices and how to secure your Go apps with Sqreen.

Sqreen sponsor

Micro: A Go-Powered Terminal-Based Text Editor— Now aiming to be “somewhat of a successor to the nano editor”, Micro is now a pretty mature and good example of building a text editor in Go. 2.0.4 just dropped.

Zachary Yedidia

What Are Goroutines and How Big Are They?— Goroutines are frequently called ‘lightweight’ threads, but just how light? Paschalis goes poking and benchmarking to find out more.

Paschalis Tsilias

💻 Jobs

Want to Build a Platform Ecosystem in Go?— Skool is hiring its 2nd backend engineer in Los Angeles, CA. Go, PostgreSQL, Redis, Elasticsearch, Docker. Apply now.

SKOOL

Golang Developer at X-Team (Remote)— Join X-Team and work on projects for companies like Riot Games, FOX, Coinbase, and more. Work from anywhere.

X-Team

Find a Job Through Vettery— Vettery specializes in tech roles and is completely free for job seekers. Create a profile to get started.

Vettery

📚 Articles & Tutorials

Instrumentation in Go— Thoughts on how Go programs should be instrumented “in a clean and flexible way.” Then once you’ve got the basics down, you could move on to using things like OpenTelemetry.

Sergey Kamardin

Diving Into Go by Building a CLI Application— A straightforward code-heavy tutorial aimed at someone “somewhere between a beginner and an intermediate.”

Eryb

Go and CPU Caches— How can understanding the basics of processor architecture help us in optimizing performance?

Teiva Harsanyi

Find & Fix Code Performance Issues— Install in minutes. Profile & understand Go code’s behavior & performance. Browse through appealing graphs.

Blackfire.io sponsor

A Book Review of Writing an Interpreter in Go— Thorsten Ball’s Writing A Compiler in Go gets lot of kudos but is it worth the money? Joe, a total newcomer to Go, decided to dive in and learnt a lot along the way, much of which he shares here.

Joe Previte

Optional JSON Fields in Go— If you need to set default values, this post points (HA!) out a couple of approaches, along with their pros & cons.

Eli Bendersky

Build a Go Application using OpenShift Pipelines— You only need this if you’re in the OpenShift world. It’s an introduction to using the OpenShift and Tekton-based Pipelines CI/CD system as part of a Go app building process.

Don Schenck

maybedoer: The Maybe Monoid for Go

Christine Dodrill

Immutability Patterns in Go

Raul Jordan

🛠 Code & Tools

Introducing Athenadriver: An Open Source Amazon Athena Database Driver for Go— Amazon Athena is a service for doing analysis directly on data in S3 using standard SQL. Uber has created a Go driver that is database/sql compatible.

Uber Engineering

SDNS: A Lightweight, Fast Recursive DNS Server with DNSSEC Support— We first linked this two years ago but this week it’s reached version 1.0. Congrats.

Yasar Alev

go-git 5.1: An Extensible Git Implementation in Pure Go“Manipulate git repositories at low level (plumbing) or high level (porcelain), through an idiomatic Go API.”

go-git

Optimize Your Golang Apps with End-To-End Tracing in One Place

Datadog sponsor

A Collection of Technical Interview-Style Questions Solved with Go— Things like ‘implement a doubly linked list’, ‘count the number of digits in a number’, etc. Not examples to be taken as the best solution but worth revising if you think you’ll need to code these sorts of things on the fly at some point.

Raed Shomali

go-mod-outdated: A Tool to Find Outdated Dependencies

Pantelis Sampaziotis

🎲 Fun and Side Projects

gopherdance: Some Dancing Gophers in Your Terminal— The creator is working on the PIXterm ANSI art library and this is a neat proof of concept.

80at8

Netris: A Multiplayer Tetris Clone— Built in Go and designed to be played over SSH (indeed, you can ssh netris.rocketnine.space right now, but there were no other players when I tried it).

Trevor Slocum

Go-Powered Autopilot for Docking the SpaceX Dragon Capsule— Calm down, this isn’t for the real SpaceX capsule, but for this official online simulation of the docking process. Still very cool though :-)

Martin Bertschler

If you want to get into a section like this in a future issue, let us know if you work on any interesting Go related projects you think we should include. Bonus points for games, musical, or anything with a nice visual angle we can include, but everything welcome. 😄

A Pascal to Go compiler bringing an old game back to life

$
0
0

#315 — June 5, 2020

Unsubscribe  |  Read on the Web

Golang Weekly

ZZT in Go (Using a Pascal-to-Go Converter)— Back in the 90s I loved a text-based game called ZZT. It was built by Tim Sweeney who went on to create the Unreal Engine(!) and still has a bit of a cult following. So it’s fascinating to see this work done in translating the Pascal source code to Go and, of course, the similarities between Pascal and Go generally too.

Ben Hoyt

GoLand 2020.2 Early Access Program Is Open— GoLand is a Go IDE and its EAP build is free to use for 30 days. This EAP has some wicked new features, refactorings, and plugins.

JetBrains

Find & Fix Code Performance Issues— You can’t improve what you can’t measure. Install in minutes. Profile and understand Go code’s behavior and performance. Browse through appealing graphs. Blackfire.io is now available as Public Beta.

Blackfire.io sponsor

'The Go Compiler Needs to Be Smarter'?— A pretty opinionated piece from a reasonably academic perspective, but it raises some interesting points about the Go compiler’s tradeoffs.

Daniel Lemire

Writing Go CLIs With Just Enough Architecture— A developer inspired by some of the recent CLI app tutorials reflects on his own approach where he provides “just enough” architecture to build solid Go CLI apps.

Carl Johnson

Bare Metal RISC-V Programming in Go— Did you know that Go 1.14 includes experiment support for 64 bit RISC-V? I didn’t, but the creator of Embedded Go was keen to try it out on a RISC-V microcontroller and here’s how it went.

Michał Derkacz

💻 Jobs

Want to Build a Platform Ecosystem in Go?— Skool is hiring its 2nd backend engineer in Los Angeles, CA. Go, PostgreSQL, Redis, Elasticsearch, Docker. Apply now.

SKOOL

Enjoy Building Scalable Infrastructure in Go? Stream Is Hiring— Like coding in Go? We do too. Stream is hiring in Amsterdam. Apply now.

Stream

Find A Job Through Vettery— Vettery specializes in tech roles and is completely free for job seekers. Create a profile to get started.

Vettery

📚 Articles & Tutorials

How to Write a Lexer in Go— A lexer (short for lexical analyzer) is the first phase in most modern compilers and is the process where textual code is turned from characters into a more useful construct of ‘tokens’.

Aaron Raff

▶  A Go RabbitMQ Beginners' Tutorial— A brief review of what RabbitMQ is followed by a coding session where you’ll create a queue, publish a message, and consume that message.

TutorialEdge

Getting Hands-On with io_uring from Goio_uring is a new way to perform high performance asynchronous I/O in Linux that removes some bottlenecks compared to existing methods. This is a long, technical, interesting post with Go examples towards the end.

Agniva De Sarker

The Go Security Checklist— From code to infrastructure, learn how you can improve the security of your Go applications with the Go security checklist.

Sqreen sponsor

Unicode Support in Go Source Code— Unicode support is good enough to allow Ω to be a function name, but does anyone really do that kind of thing? Yes.. and this post looks at some other scary things you can do too 😆

Marcus Noble

A Subtle Trap When Formatting time.Time Values“Unless you’re sure you know what you’re doing and where your time.Time values came from, using a bare .Format() is probably a mistake.”

Chris Siebenmann

Converting JSON to a Struct in Go— This covers a bit more than the basics, such as custom unmarshalling.

Rob Allen

▶  The Trouble with Databases— Google’s Jaana Dogan recently wrote a very popular article about what she wished more developers knew about databases and here she reflects on these topics and more in a solid hour with the Go Time podcast crew. Worthwhile weekend listening.

Go Time Podcast

Logging Without Losing Money or Context— Logging services are expensive, but logs are important. What’s a poor application developer to do?

Komu Wairagu

Waiting on Goroutines— Many people default to using WaitGroups for this, but there are multiple (and more common) ways to handle your waiting.

Tit Petric

🛠 Code & Tools

go-yaml: YAML Encoding, Decoding and Querying for Go— As of this week’s 1.7 release, it now supports YAMLPath, a way of extracting values or ASTs by a simple query language (example).

Masaaki Goshima

Heimdall: An Enhanced HTTP Client for Go— Enhanced, how? A built in circuit breaker to control failing requests, multiple and custom retry strategies, a fluent API..

Gojek

The Ultimate Guide to Container Formats: Decrypting Video Technologies

Bitmovin Inc. sponsor

Smocker: A Simple and Efficient HTTP Mock Server— Smocker uses YAML to define mocks and responses, but there is a handy user interface, as well. Use it in your dev and test environments to cut out external services.

Thibaut Rousseau

Oragono 2.1: A Modern IRC Server Written in Go— Supports UTF-8 and IRCv3 features. 2.1 adds native support for WebSockets.

Jeremy Latt

DBCore: Code Generation Powered by Your Database— If you’re thinking “I bet there is a YAML file involved.”, you’re right.

Phil Eaton

Viewing all 431 articles
Browse latest View live