---
title: "Writing an OS in Go?"
publication: "Go Weekly"
issue: 458
published_at: "2023-05-02"
canonical_url: "https://golangweekly.com/issues/458"
---

Plus random testing, a turbocharged gRPC workflow, and a plea to OpenAI. |        

#​458 — May 2, 2023 

[Unsub](https://golangweekly.com/leave/*|UID|*)|[Web Version](https://golangweekly.com/issues/458)  

Together with [![Helios\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,e_trim,w_300,h_130/e_make_transparent/co_white,e_outline:7/zv5wpiprh3safafcr33x.png)](https://gethelios.dev/blog/golang-distributed-tracing-opentelemetry-based-observability)  

Go Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/hcyvm64gsovnduix6tuz.jpg)](https://github.com/redis/rueidis)  

[Rueidis 1.0: A Fast Redis Client with Caching](https://github.com/redis/rueidis) — Endorsed enough to now be in the official Redis GitHub org at least, this is a Redis client focused on performance with auto-pipelining of non blocking commands, client-side caching implemented in the [preferred way](https://redis.io/docs/manual/client-side-caching/), and support for Redis’s official extensions. The only tricky part is how to pronounce it. 

Rueian   

[Writing an OS in Go: The Bootloader](https://totallygamerjet.hashnode.dev/writing-an-os-in-go-the-bootloader) — Warning: Low-level gophers digging in the sandbox here :-) This is the self described ‘hello world’ of operating system development, and the first step in what promises to be a long but fascinating journey for the author. 

TotallyGamerJet   [![\](https://copm.s3.amazonaws.com/d165af1e.png)](https://gethelios.dev/blog/golang-distributed-tracing-opentelemetry-based-observability) 

[How to Add OpenTelemetry to Your Go Apps in Minutes](https://gethelios.dev/blog/golang-distributed-tracing-opentelemetry-based-observability) — If you’ve considered using OpenTelemetry in your Go apps, you know the struggle. Here is a step by step tutorial on how to implement OTel in Go in a few simple steps, by integrating it in compile time. 

Helios sponsor   

[Self-Hosted _Soft Serve_ for Git](https://charm.sh/blog/self-hosted-soft-serve/) — No ice cream involved. [_Soft Serve_](https://github.com/charmbracelet/soft-serve) is a Go-powered self-hostable git server from the folks at Charm (perhaps best known for the [Bubble Tea](https://github.com/charmbracelet/bubbletea) TUI framework) and this is a thorough guide to setting it up for yourself. 

Ayman Bagabas (Charm)   

**IN BRIEF:** 

- A look at using [`crypto/ecdh` and TPMs in Go 1.20](https://linderud.dev/blog/golang-crypto/ecdh-and-the-tpm/) to perform a key exchange.
- Google has released the latest of its bite sized videos convincing companies to try out Go. This time Valentin Deleplace explains [▶️ Go's key strengths for data processing.](https://www.youtube.com/watch?v=OqDucku2V-I) I wish they'd go deeper as the production quality is great.
- GopherCon Europe's Head of Diversity, Ronna Steinberg, went on the Go Time podcast to [▶️ discuss the topic of diversity at Go events](https://changelog.com/gotime/274) and efforts to improve such.    

['Random' Testing in Go](https://bitfieldconsulting.com/golang/random-testing) — In many situations, choosing good test cases can be a bit hit-and-miss. What if we could automate the process? John considers a few ways to shake things up a bit. 

John Arundel   

[Supercharging Your gRPC Workflow with Bob](https://bob.build/blog/supercharge-grpc-workflows) — [Bob](https://bob.build/) is a build system for microservices (currently in open beta) and this post tries to sell you on it by showing how to put together a simple gRPC client and server. 

Bob   

[Three Things to Never Build In Your Go App](https://www.courier.com/blog/the-three-things-to-never-build-in-your-app/?utm_campaign=q2-fy23-cooper-press&utm_source=email&utm_medium=go-newsletter-5-2-23&utm_content=3-things-never-build) — Authentication, notifications, and payments. Ship MVP faster by outsourcing non-core features. 

Courier.com sponsor   

▶[The Power of the Decorator Pattern](https://www.youtube.com/watch?v=GipAZwKFgoA) — 14 minute live-coding screencast. 

Anthony GG   

[Moving Go AWS Lambda Functions to Graviton / Arm Chips](https://medium.com/@spei/moving-aws-lambda-functions-with-golang-on-graviton-based-chips-1996f794b82e) 
Stathis Peioglou  

🛠 Code & Tools  

[wazero 1.1: Zero Dependency WebAssembly Runtime in Go](https://wazero.io/) — Embed wazero in your Go project and extend any app ([simple example](https://github.com/tetratelabs/wazero/tree/main/examples/basic)). [v1.1](https://github.com/tetratelabs/wazero/releases/tag/v1.1.0) improves debugging, reduces memory usage and adds new APIs for advanced use cases. 

Tetrate   

[rqlite 7.15.0: A Relational Database Atop SQLite](https://github.com/rqlite/rqlite/releases/tag/v7.15.0) — A long standing project and built in Go, of course. v7.15.0’s biggest addition is support for [automatic backups](https://rqlite.io/docs/guides/backup/#automatic-backups) to S3 which could certainly make it more appealing. [Official homepage.](https://rqlite.io/) 

rqlite   

[Kubernetes API Access Security Hardening](https://goteleport.com/blog/kubernetes-api-access-security/?utm_campaign=eg&utm_medium=partner&utm_source=golang) — The control plane controls k8s nodes, nodes control pods, pods control containers... But what controls the control plane? 

Teleport | goteleport.com sponsor   

[Graph 0.20: Generic Library for Creating Graph Data Structures](https://github.com/dominikbraun/graph) — Supports different kinds of graphs such as directed graphs, acyclic graphs, or trees. We’ve mentioned this a few times recently but it’s a powerful library and [v0.20.0](https://github.com/dominikbraun/graph/releases/tag/v0.20.0) adds an array of handy features for updating, cloning, and merging graphs together. 

Dominik Braun   

- [sqlc 1.18](https://github.com/kyleconroy/sqlc/releases/tag/v1.18.0) – Generate type-safe code from SQL. More new features than you'd expect here.
- [pREST 1.3](https://github.com/prest/prest)
 ↳ Serve a RESTful API from a Postgres database.
- [testfixtures 3.9](https://github.com/go-testfixtures/testfixtures)
 ↳ Ruby on Rails-like test fixtures for Go.
- [Go-OpenAI 1.9.1](https://github.com/sashabaranov/go-openai/releases/tag/v1.9.1) – An OpenAI API wrapper library. _Psssst.. if you work for OpenAI, can you enable GPT-4 API access on my account pretty please?_ 😍
- [ntfy 2.4](https://github.com/binwiederhier/ntfy)
 ↳ Pub/sub notifications from anywhere.
- [GoBGP 3.14](https://github.com/osrg/gobgp)
 ↳ A BGP implementation in Go.
- [gocryptfs 2.3.2](https://github.com/rfjakob/gocryptfs)
 ↳ Encrypted overlay filesystem atop go-fuse.    

Jobs  

[Find a Job Through Hired](https://hired.com/join/?utm_source=newsletter&utm_medium=sponsor&utm_campaign=%28b2c%29%28l-all%29%28r-all%29%28cooper-golangweekly%29&utm_content=find-your-next-job) — Hired makes job hunting easy-instead of chasing recruiters, companies approach you with salary details up front. Create a free profile now. 
Hired   

🧑‍💻 Got a job listing to share? _[Here's how](https://booking.cooperpress.com/jobs)_.          

Curated by Peter Cooper and [Glenn Goodrich](https://twitter.com/ruprict). 

[Change your email](https://golangweekly.com/edit_subscription/*|UID|*)
[Stop getting this newsletter](https://golangweekly.com/leave/*|UID|*) 

© Cooper Press Ltd · Fairfield Enterprise Centre, Louth, LN11 0LS, United Kingdom
