---
title: "Someone ported NIBBLES.BAS to Go"
publication: "Go Weekly"
issue: 413
published_at: "2022-05-27"
canonical_url: "https://golangweekly.com/issues/413"
---

Plus God is on hand to help you deploy Go services, and now you can test your typing with Go. |        

#​413 — May 27, 2022 

[Unsubscribe](https://golangweekly.com/leave/*|UID|*)|[Read on the Web](https://golangweekly.com/issues/413)   

The _Go Weekly_ Newsletter 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/yllrzbahlory1km6ddlt.jpg)](https://github.com/livebud/bud)  

[Bud: A New Web Framework for Gophers](https://github.com/livebud/bud) — And in a classic Ruby on Rails-esque style, the creator has [a fantastic 15-minute screencast](https://www.youtube.com/watch?v=LoypcRqn-xA) showing off how to use it – not to build a blog, but a Hacker News client of sorts. 

Matt Mueller   

[Google's Greedy Go Module Mirror?](https://drewdevault.com/2022/05/25/Google-has-been-DDoSing-sourcehut.html) — The owner of [Sourcehut](https://sourcehut.org/), a popular open source forge, claims that the changes to Go modules in 1.16 resulted in his git service receiving tons of redundant and expensive traffic from Google and his pleas for help appear to have not gotten him too far yet. 

Drew DeVault   [![\](https://copm.s3.amazonaws.com/8d3f246b.png)](https://goteleport.com/how-it-works/?utm_campaign=eg&utm_medium=partner&utm_source=golangweekly) 

[How Teleport Works](https://goteleport.com/how-it-works/?utm_campaign=eg&utm_medium=partner&utm_source=golangweekly) — Teleport provides secure access to SSH or Windows servers, Windows Desktops, Kubernetes clusters, Databases, and Web Applications. Teleport is trivial to set up as a Linux daemon or in a Kubernetes pod. [Learn more](https://goteleport.com/how-it-works/?utm_campaign=eg&utm_medium=partner&utm_source=golangweekly). 

Teleport sponsor   

▶[Making an _Animal Crossing_-Type Game for Beginners](https://www.youtube.com/watch?v=iWp-mCIQgMU&list=PLVotA8ycjnCsy30WQCwVU5RrZkt4lLgY5#animalcrossing) — The creator of these videos is only two episodes in so far, but has made it as far as moving a character around. It’s an uncommon use of Go, but it works well and leans on Go bindings to [Raylib](https://github.com/raysan5/raylib) for all the interesting parts. 

Avery Makes Games   

**IN BRIEF:** 

- 👾 Ever use _QBasic_ on DOS back in the 90s? You might remember a snake game called [Nibbles](https://en.wikipedia.org/wiki/Nibbles_%28video_game%29) – someone [has faithfully recreated it](https://github.com/gophun/nibbles) in Go. _(Trivia: My first 'newsletter' was a QBasic one on Usenet in the mid 90s!)_
- [Typioca](https://github.com/bloznelis/typioca) is an elegant terminal-based typing speed tester written in Go.
- A team rewrote a service in Go (from Node.js) [and saw huge increases](https://nhost.io/blog/hasura-storage-in-go-5x-performance-increase-and-40-percent-less-ram) in throughput and a 40% reduction in memory use.
- The latest episode of _Go Time_ looks at the Berlin tech scene's [▶️ adoption of Go](https://changelog.com/gotime/231) and the Go community there.   

**RELEASES:** 

- [Sonic 1.3](https://github.com/bytedance/sonic) – Extremely fast JSON library.
- [Kratos 2.3](https://github.com/go-kratos/kratos) – Framework for gRPC-based microservices.
- [immudb 1.3](https://github.com/codenotary/immudb/releases/tag/v1.3.0) – Immutable database system.
- [Plow 1.2](https://github.com/six-ddc/plow) – High perf HTTP benchmarking tool.
- [Traefik 2.7.0](https://github.com/traefik/traefik/releases/tag/v2.7.0) – Popular reverse proxy and load balancer.
- [Oak 4.0](https://github.com/oakmound/oak/releases/tag/v4.0.0) – 2D game engine.
- [Fiber 2.34.0](https://github.com/gofiber/fiber/releases/tag/v2.34.0) – Express.js-inspired Web framework.
- [WAL 2.0](https://www.postgresql.org/about/news/wal-g-20-released-2456/) – Postgres archival and restoration.   

[The Functional Options Pattern is Slow](https://www.evanjones.ca/go-functional-options-slow.html) — Functional options are often held up as a gold standard for configuring objects, but they are slower and have some other real disadvantages compared to other approaches. 

Evan Jones   

[How To Bootstrap a Quality Go Backend](https://8thlight.com/blog/emmanuel-byrd/2022/05/19/well-thought-project-layout-design-for-a-golang-backend.html) — Miscellaneous initial thoughts on picking an HTTP framework, laying out files, and some testing best practices. 

Emmanuel Byrd   

[Go Nulls and SQL](https://ente.io/blog/tech/go-nulls-and-sql/) — Dealing with zero values, nilables, nil, and null can lead to bugs and frustration, but the standard library does help us out here. 

Ente  

🛠 Code & Tools  

[Gocache 3.0: A Cache Abstraction Library](https://github.com/eko/gocache) — If you’ve got caching to do, Gocache can handle it. It can use numerous backends (including Redis, Memcache, and some purely memory based options), it can marshal and unmarshal your values, handle invalidation in multiple ways, let you chain caches in a priority order, and more. 

Vincent Composieux   

[Concurrent Map 2.0: A Thread-Safe Concurrent Map for Go](https://github.com/orcaman/concurrent-map) — Go has `sync.Map` but this option may better suit maps with a lot of churn. As of v2.0, generics are used too. 

Or Hiltch   

[eBPF 0.9: A Pure Go eBPF Library](https://github.com/cilium/ebpf/releases/tag/v0.9.0) — Utilities for loading, compiling, and debugging [eBPF](https://ebpf.io/) programs. v0.9 introduces the `btf` package which lets you read type information embedded in eBPF ELF objects and `vmlinux` so you can inspect the kernel’s types and function signatures at runtime. 

Cloudflare and Cilium   

[God: A Tool to Deploy and Manage Go Services using `systemd`](https://github.com/pioz/god) — A tool that puts your Go binary on to a remote Linux server then creates a `systemd` file to let you start/stop/restart the process. 

Enrico   

[Issue Tracking Has Never Been Easier With Shortcut](https://shortcut.com/?utm_source=cooperGO&utm_medium=spon_nl&utm_campaign=prospecting&utm_content=issuetrack) 

Shortcut (formerly Clubhouse.io) sponsor   

[Kind: Run Local Kubernetes Clusters using Docker Containers as Nodes](https://kind.sigs.k8s.io/) — You can get a basic Kubernetes cluster running locally _very_ quickly with this approach. 

Kubernetes Project   

[Rqlite 7.5.0 Released with Queued Write Support](https://www.philipotoole.com/rqlite-trading-durability-for-performance/) — Rqlite is a distributed database that uses SQLite as its storage engine and with _queued writes_ you can now get much higher write performance in return for a little less durability. 

Philip O'Toole   

[Sish: HTTP(S)/WS(S)/TCP Tunnels to `localhost` Using Only SSH](https://github.com/antoniomika/sish) — If you’ve used something like [ngrok](https://github.com/inconshreveable/ngrok) before, it’s like that. 

Antonio Mika   

[go-quartz: Simple, Zero-Dependency Scheduling Library](https://github.com/reugn/go-quartz) — Inspired by the similarly named [Quartz scheduler](https://github.com/quartz-scheduler/quartz) for Java. 

Eugene R.     

Jobs  

[Golang Developer at X-Team (Remote)](https://x-team.com/remote-go-developer-jobs/?utm_source=cooperpress&utm_medium=email-ad&utm_campaign=cooperpress-go&utm_content=go) — Join the most energizing community for developers and work on long-term projects for Riot Games, FOX, Sony, Coinbase, and more. 
X-Team   

[Golang Engineers — 100% Remote (North/South America & Europe)](https://www.ardanlabs.com/careers/mid-level-and-senior-backend-engineer.html) — We’ve got several opportunities for Go devs (some working directly with Bill Kennedy!) and would love to hear from those looking for new challenges in distributed systems projects. 
Ardan Labs   

[Senior Backend Go Engineer - Remote (US)](https://boards.greenhouse.io/madhive/jobs/4048774004) — Petabytes of data, millions of requests a second! Help us build our AdTech platform. Go, GCP, gRPC, Bigquery, Bigtable, Spanner. 
MadHive   

[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) — Create a profile on Hired to connect with hiring managers at growing startups and Fortune 500 companies. It's free for job-seekers. 
Hired           

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

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

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