The Applied Go Weekly Newsletter logo

The Applied Go Weekly Newsletter

Subscribe
Archives
September 16, 2025

Never Get Bored With The Basics • The Applied Go Weekly Newsletter 2025-09-14

AppliedGoNewsletterHeader640.png

Your weekly source of Go news, tips, and projects

never-get-bored-with-the-basics.png

Never Get Bored With The Basics

Hi ,

Are you ready for a journey? I am planning to do a Spotlight series about building a basic SaaS platform for minimalists. That means: no bloat, just the bare amount of code necessary, but still equipped with functionality needed in production. Minimalism is the core concept: You don't need containers, Kubernetes clusters, and a helluva infrastructure to run a solo business. In fact, small businesses can get quite far with a single app instance on a decent VM. Hyperscaling is a problem that a small business might not encounter for years, and if it happens to appear, it's a great problem to have, as it means the business is hugely successful. But when starting out, start small; be mean and lean until the situation demands otherwise.

Embrace minimalist software.

–Christoph

Featured articles

A new experimental Go API for JSON - The Go Programming Language

About the reasons that led to the development of the encoding/json/v2 package and how it works---currently, that is; because the package is still in experimental state.

Early return and goroutine leak | Redowan's Reflections

Honestly, who didn't produce a goroutine leak at some point in their Go career?

Go Goroutine Synchronization: a Practical Guide | by | Sep, 2025 | Medium

An intro to Go's synchronization mechanisms: Mutexes, Conds, WaitGroups, Pools, Once(), and sync.Map.

Podcast corner

Cup o' Go | 👕 Clothe your naked gophers and returns, with this one weird episode THEY don't want you to know about!

This week, Cup o' Go visits the fashion industry (or so it seems).

go podcast() | 059: Is Go over with John Arundel

If you don't know John Arundel yet, this is the chance to learn a bit about him and his love for Go that he has cast into book titles like "For The Love of Go" and "The Deeper Love of Go". Aren't we all Go lovers?

Fallthrough | Bootstrapping A Podcast

Kind of a sequel to the previous episode, "What It Takes To Be A Content Creator" (although not explicitly announced as such).

Spotlight: A minimalist SaaS platform 01: Intro

In the previous Spotlight, I wrote about the various aspects that make Go an ideal language for building minimalist software;that is, software that only contains code for doing the things at hand, no needless layers of abstractions, no "we might need this in the future" features. In short, the very opposite of FizzBuzz Enterprise Edition.

I decided to start building an application that incorporate minimalist principles: a platform for building software as a service. Not a full-blown, production-ready SaaS app; just the bare minimum that can serve as a basis to add a real app on top. Yet, I want to include enough pieces to make it useful out of the box.

Certainly, most of you are now like, "been there, done that." I feel you: my plan may sound like Yet Another Beginner's Project. But before you zap to another channel, remember that the best advice for getting great at one's profession is to never get bored with the basics. And it's always nice to have a detour from the daily grind of building Mega Corp apps with customer-requested feature bloat, isn't it.

As mentioned before, the project I'm starting will not turn into production-ready code. Instead, the goal is to explore the fundamental principles and building blocks of a SaaS app. Equipped with this knowledge, writing your own SaaS platform, as well as evaluating existing solutions for your purpose, becomes much easier.

So here's the plan: I'll start from the classic cliché "basic web server with net/http"...

package main

import (
    "fmt"
    "log"
    "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello, Gophers!")
}

func main() {
    http.HandleFunc("/", handler)
    log.Fatal(http.ListenAndServe(":8080", nil))
}

...and add functionality piece by piece, such as:

  • A minimal frontend
  • Middleware
  • Security
  • Deployment
  • A database
  • User management
  • Payment integration

and so forth.

I'm curious where this journey goes, and you're invited to follow along. Stay tuned!

Quote of the Week: The defense against slop and brainrot - by Paul Jun

If you can think well, AI becomes a multiplier. If you can't, AI just amplifies your mistakes.

–Paul Jun

More articles, videos, talks

Simpler & Faster Concurrent Testing With testing/synctest - Calhoun.io

Jon Calhoun presents a flaky test, inspects suboptimal fixes, and explores synctest's features for better concurrent testing.

Building a High-Performance Concurrent Live Leaderboard in Go - DEV Community

The fourth part of a series about concurrency.

Running Go tools in a browser

The blog title might be a bit misleading. It's not about running the Go toolchain in a browser (or any particular tool from Go's rich tool set). The tool is an assembler for a custom CPU platform.

GitHub - go-monk/from-bash-to-go-part-ii: Go for Bash programmers II - CLI tools

The second part of the From-Bash-To-Go series (see also the previous issue.

Projects

Libraries

GitHub - xjslang/xjs: eXtensible JavaScript parser

This JS parser focuses on minimalism, which forces the developer to give up a few JS features, but OTOH keeps the parser small and the JS code aligned to a "there's one way to do it" philosophy.

GitHub - yaml/go-yaml: The YAML org maintained fork of https://github.com/go-yaml/yaml

The YAMLorganization has forked Gustavo Niemeyer's archived gopkg.in/yaml.v3 into go.yaml.in/yaml/v4. A team of maintainers is taking care of the project.

GitHub - Neyylo/noise-reducer

While every second headphone brags with noise cancelling, this package humbly deals with noise reduction. The author created it for separating heartbeat sounds from the background noise, but surely the algorithm can be applied to a wide range of use cases.

GitHub - kristianJW54/GoferBroke: GoferBroke is a lightweight, extensible tool designed for building distributed clusters using an anti-entropy gossip protocol over custom binary TCP.

Whoa, that's a mouthful: "an anti-entropy gossip engine built on a custom binary TCP protocol." The point is, GoferBroke synchronizes application state across nodes using a peer-to-peer protocol, thus requiring no central broker instance. Use cases include global configuration, building meshes without a central instance, or node health checks.

GitHub - BrownNPC/Golang-Raylib-GameFramework: very basic template for creating games with raylib, with web support out of the box

While Ebitengine seems the most popular game engine for Go, Raylib (a C library) is worth a look. Up to now, the Go-Raylib bindings did not include web support. This package changes that.

Tools and applications

GitHub - rocajuanma/anvil: End manual app setup on macOS. Batch install development tools, sync configurations via GitHub, and troubleshoot issues —no virtualization, just smart automation.

Homebrew on steroids! With Anvil, you can set up a Mac quickly by installing complete groups of apps at once (utilizing Homebrew under the hood). Anvil's config (including standard and custom app groups) is synchronized to a remote git repo (currently only GitHub seems supported) to facilitate setting up multiple Macs (or just your next Mac).

GitHub - vrongmeal/mygopkg: A static site generator for hosting Go packages on custom domains

To make your packages available at a "vanity import path" (like my [what package](https://appliedgo.net/what) that is imported as appliedgo.net/what), you need a Web server that knows how to respond to go get or go mod download requests. You can set up one by hand or use this minimalistic static site generator.

GitHub - chinmay-sawant/gopdfsuit: GoPdfSuit is a comprehensive web application written in Go which can help you generate the pdf document without worrying about the PDF templating

Generate PDF from JSON templates. GoPdfSuit(e) supports "multiple page sizes, automatic page breaks, PDF merging, form filling, tables, borders, checkboxes, font styling (bold, italic, underline), and custom layouts without external dependencies." The author built this as an alternative to proprietary services.

plutov/oq: Terminal OpenAPI Spec viewer

You love OpenAPI specs and the command line? Here you go.

Completely unrelated to Go

Where's the Shovelware? Why AI Coding Claims Don't Add Up

Does AI coding assistance make developers faster or slower? Mike Judge did a (statistiacally not significant) self-study.

Introducing the MCP Registry | mcp blog

Discovering MCP servers gets easier, with this open source, central MCP registry. (Written in Go, BTW!)

Test state, not interactions | Redowan's Reflections

Don't let AI write your tests, and prefer hand-written fakes over mock libraries: Redowan's tips on how to not fail at creating good and useful tests.

Happy coding! ʕ◔ϖ◔ʔ

Questions or feedback? Drop me a line. I'd love to hear from you.

Best from Munich, Christoph

Not a subscriber yet?

If you read this newsletter issue online, or if someone forwarded the newsletter to you, subscribe for regular updates to get every new issue earlier than the online version, and more reliable than an occasional forwarding. 

Find the subscription form at the end of this page.

How I can help

If you're looking for more useful content around Go, here are some ways I can help you become a better Gopher (or a Gopher at all):

On AppliedGo.net, I blog about Go projects, algorithms and data structures in Go, and other fun stuff.

Or visit the AppliedGo.com blog and learn about language specifics, Go updates, and programming-related stuff. 

My AppliedGo YouTube channel hosts quick tip and crash course videos that help you get more productive and creative with Go.

Enroll in my Go course for developers that stands out for its intense use of animated graphics for explaining abstract concepts in an intuitive way. Numerous short and concise lectures allow you to schedule your learning flow as you like.

Check it out.


Christoph Berger IT Products and Services
Dachauer Straße 29
Bergkirchen
Germany

Don't miss what's next. Subscribe to The Applied Go Weekly Newsletter:
https://c.im/@chris… LinkedIn
Powered by Buttondown, the easiest way to start and grow your newsletter.