ardanlabs.com ardanlabs.com

Docker Images : Part III - Going Farther To Reduce Image Size

Series IndexReducing Image SizeDetails Specific To Different LanguagesGoing Farther To Reduce Image SizeIntroductionIn the first two parts of this series, we covered the most common methods to optimize Docker image size. We saw how multi-stage builds, combined with Alpine-based images, and sometimes static builds, would generally give us the most dramatic savings. In this last part, we will see how to go even farther. We will talk...

ardanlabs.com ardanlabs.com

Modules Part 01: Why And What

IntroductionModules provide an integrated solution for three key problems that have been a pain point for developers since Go’s initial release:Ability to work with Go code outside of the GOPATH workspace.Ability to version a dependency and identify the most compatible version to use.Ability to manage dependencies natively using the Go tooling.With the release of Go 1.13, these three problems are a thing of the past. It has taken a...

ardanlabs.com ardanlabs.com

Context Package Semantics In Go

IntroductionThe Go programming language has the built-in keyword go to create goroutines, but has no keywords or direct support for terminating goroutines. In a real world service, the ability to time-out and terminate goroutines is critical for maintaining the health and operation of a service. No request or task can be allowed to run forever so identifying and managing latency is a responsibility every programmer has.A solution...

ardanlabs.com ardanlabs.com

Why is DevOps Important?

1. What are four keys for great DevOps?Collaboration: DevOps requires collaboration, both within teams and between teams. Good communication between teams implies to break down silos, which can be harder than it sounds in organizations where a leader and their team are rewarded for individual achievements, discouraging them from collaborating and sharing information with others, and often encouraging politics at the expense of the...

ardanlabs.com ardanlabs.com

Caddy Partnership With Light Code Labs

Ardan Labs (a leader in building Go enterprise software) is excited to announce that we have partnered with Light Code Labs and Matt Holt to bring Caddy into the Ardan Labs family of products and services. Caddy is a lightweight ingress service written in Go that provides automated security features and a plugin environment for extensibility. With the service being free open source (FOSS), small and large Go engineering teams finally...

ardanlabs.com ardanlabs.com

Garbage Collection In Go : Part III - GC Pacing

PreludeThis is the third post in a three part series that will provide an understanding of the mechanics and semantics behind the garbage collector in Go. This post focuses on how the GC paces itself.Index of the three part series:1) Garbage Collection In Go : Part I - Semantics2) Garbage Collection In Go : Part II - GC Traces2) Garbage Collection In Go : Part III - GC PacingIntroductionIn the second post, I showed you the behavior of...

ardanlabs.com ardanlabs.com

An Open Letter To The Go Team About Try

“Once a language gets complex enough, programming in it is more like carving out a subset from an infinite sea of features, most of which we’ll never learn. Once a language feels infinite, the costs of adding further features to it are no longer apparent”. - Mark MillerThe new try proposal is an addition to the language that introduces a second mechanic to handle errors. It is being introduced in response to data gathered...

ardanlabs.com ardanlabs.com

Object Oriented Programming Mechanics

Go is an object oriented programming language. It may not have inheritance, but in this 20 minute video from the Bangalore meetup, I will show you how object oriented programming practices and techniques can be applied to your Go programs. From an object oriented standpoint, Go does provides the ability to add behavior to your types via methods, allows you to implement polymorphic behavior via interfaces and gives you a way to extend...