Use your database to power state machines
Most people are familiar with state machines and know their value. The average state machine library can help you model states, prevent invalid transitions, and produce diagrams that help even non-technical people understand how the code behaves.https://blog.lawrencejones.dev/state-machines
This article isn’t about making the case for state machines. It’s about how you take the concept of a state machine and have it work alongside your database models, leveraging your relational database (say Postgres or MySQL) to help you build concurrent-safe and efficient software.
pterm
PTerm is a modern Go module to easily beautify console output. Featuring charts, progressbars, tables, trees, text input, select menus and much more 🚀 It's completely configurable and 100% cross-platform compatible.https://github.com/pterm/pterm
static-server
Simple static file server, with support of HTTP and HTTPS. Useful for local testing of web applications.https://github.com/eliben/static-server
maroto
A maroto way to create PDFs. Maroto is inspired in Bootstrap and uses gofpdf. Fast and simple.https://github.com/johnfercher/maroto
goyave
Goyave is a progressive and accessible web application framework focused on REST APIs, aimed at making backend development easy and enjoyable. It has a philosophy of cleanliness and conciseness to make programs more elegant, easier to maintain and more focused. Goyave is an opinionated framework, helping your applications keeping a uniform architecture and limit redundancy. With Goyave, expect a full package with minimum setup.https://github.com/go-goyave/goyave
resty
Simple HTTP and REST client library for Go (inspired by Ruby rest-client)https://github.com/go-resty/resty
skipper
Skipper is an HTTP router and reverse proxy for service composition. It's designed to handle >300k HTTP route definitions with detailed lookup conditions, and flexible augmentation of the request flow with filters. It can be used out of the box or extended with custom lookup, filter logic and configuration sources.https://github.com/zalando/skipper
The Art of Building Fault-Tolerant Software Systems
Eight Pillars of Fault-tolerant Systems:https://www.codereliant.io/the-art-of-building-fault-tolerant-software-systems
- Redundancy and Replication
- Load balancing
- Modularity
- Graceful degradation
- Circuit breaker
- Fail-fast
- Retries
- Rate limiting
pgroll
pgroll is an open source command-line tool that offers safe and reversible schema migrations for PostgreSQL by serving multiple schema versions simultaneously. It takes care of the complex migration operations to ensure that client applications continue working while the database schema is being updated. This includes ensuring changes are applied without locking the database, and that both old and new schema versions work simultaneously (even when breaking changes are being made!). This removes risks related to schema migrations, and greatly simplifies client application rollout, also allowing for instant rollbacks.https://github.com/xataio/pgroll
Organizing a Go module
A common question developers new to Go have is “How do I organize my Go project?”, in terms of the layout of files and folders. The goal of this document is to provide some guidelines that will help answer this question.https://go.dev/doc/modules/layout
Fault tolerance and resilience patterns for Go
Failsafe-go is a library for building fault tolerant Go applications. It works by wrapping executable logic with one or more resilience policies, which can be combined and composed as needed. Policies include Retry, Circuit Breaker, Rate Limiter, Timeout, Bulkhead, and Fallback.https://failsafe-go.dev
afero
Afero is a filesystem framework providing a simple, uniform and universal API interacting with any filesystem, as an abstraction layer providing interfaces, types and methods. Afero has an exceptionally clean interface and simple design without needless constructors or initialization methods.https://github.com/spf13/afero
automaxprocs
Automatically set GOMAXPROCS to match Linux container CPU quota.https://github.com/uber-go/automaxprocs
krakend-ce
KrakenD Community Edition: High-performance, stateless, declarative, API Gateway written in Go.https://github.com/krakend/krakend-ce
tabby
Tabby is a self-hosted AI coding assistant, offering an open-source and on-premises alternative to GitHub Copilot.https://github.com/TabbyML/tabby
Rust Vs Go: A Hands-On Comparison
Oh no, not another 'Is Rust better than Go?' article. Seriously, haven't we all had our fill of these comparisons by now? But before you sigh in exasperation, hear us out!https://www.shuttle.rs/blog/2023/09/27/rust-vs-go-comparison
Many comparisons between Go and Rust emphasize their differences in syntax and the initial learning curve. However, ultimately, what matters is the ease of use for non-trivial projects.
Since we are a platform-as-a-service provider, we think that we can contribute the most by showing you how to build a small web service in both languages. We will use the same task and popular libraries for both languages to compare the solutions side-by-side so that you can make up your own mind and get a feel for what it's like to work in each ecosystem.
So, before you dismiss this as 'just another comparison', give it a read. There might be some details that other comparisons have missed before.