---
title: "Go's on IBM mainframes now"
publication: "Go Weekly"
issue: 463
published_at: "2023-06-06"
canonical_url: "https://golangweekly.com/issues/463"
---

Plus a natural language date/time parser, a new HTTP request router, and a way to visualize git contributions locally. |        

#​463 — June 6, 2023 

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

Together with [![Courier logo\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,w_280,h_50/e_make_transparent/co_white,e_outline:7/clkuuoftwiz8z2xjnkhb.png)](https://github.com/trycourier/courier-go)  

Go Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/lci6yonxlmcixssx43zo.jpg)](https://github.com/Shpota/goxygen)  [![\](https://res.cloudinary.com/cpress/image/upload/v1686049342/hqosyo4tnavdvkxkkzzo.jpg)](https://github.com/Shpota/goxygen) 

[Goxygen 0.4: Quickly Generate a Go Backend for a JavaScript Project](https://github.com/Shpota/goxygen) — A tool that sets up a new Go-based project with Angular, React, or Vue on the front-end, Go in the back, and Docker and Docker Compose files to spin it all up. It’s been around a few years, but has just added Vue 3.3 support and a Vite-based Vue template. 

Sasha Shpota   

[A Quick Crash Course on Go Generics](https://www.calhoun.io/crash-course-on-go-generics/) — The generics fever around v1.18's release has quietened down a lot, and they're now a fundamental part of Go. If you’ve been waiting for things to calm down before jumping in, this brief, code-led post showing off the basic ideas provides an entry point. 

Jon Calhoun   

Jon has also written about [what tildes (~) mean in generics](https://www.calhoun.io/what-does-the-tilde-mean-in-go-generics/), as well as a similar ['crash course' on interfaces.](https://www.calhoun.io/crash-course-on-go-interfaces/)  [![\](https://copm.s3.amazonaws.com/194ef43d.png)](https://github.com/trycourier/courier-go) 

[Better Automations & Template Design for Email APIs in Go](https://github.com/trycourier/courier-go) — Stop installing this `> go get github․com​/sendgrid​/sendgrid-go` and instead install `> go get -u github․com/​trycourier/​courier-go/v2` and manage all of your email/SMS/Push APIs in our UI. Courier.com makes notification management simple. 

Courier.com sponsor   

**IN BRIEF:** 

- 🤘 If you have an IBM mainframe to hand, [IBM Open Enterprise SDK for Go 1.20](https://community.ibm.com/community/user/ibmz-and-linuxone/blogs/james-tang1/2023/05/26/ibm-open-enterprise-sdk-for-go-120-is-now-availabl) is now available, letting you stay up to date with Go on your z/OS powered behemoth. It includes various tools to make the experience smoother, like [Wharf](https://mediacenter.ibm.com/media/Explore+the+Wharf+porting+tool/1_1epdt0lp), an automated porting tool for porting Go code to the IBM platform.
- 🎤 The _Go Time_ podcast tackled the perennial topic of project structure and [▶️ the files and folders in Go projects, big and small.](https://changelog.com/gotime/278)
- 🔢 It's not Go specific, but this [guide rounding-up random number generation operations](https://peteroupc.github.io/random.html) is educational and does make a suggestion for using `crypto/rand` in Go.
- 🔠 It's from a _Python_ blog(!) but [this roundup and comparison of coding fonts](https://realpython.com/coding-font/) is too good not to share and most of the points raised relate to Go too.. if you haven't been won over by [Go's very own font.](https://go.dev/blog/go-fonts)    

[ChatGPT, Wardley Maps, and Go](https://blog.owulveryck.info/2023/05/30/chatgpt-wardley-and-go.html) — There’s a lot mixed in here, and it’s not even finished yet: how to create a ChatGPT plugin, serve an API from Go, the basics of Wardley maps (a type of [business strategy diagram](https://en.wikipedia.org/wiki/Wardley_map)), and handling SVG images. 

Olivier Wulveryck   

▶[Why Static Typing Came Back](https://www.youtube.com/watch?v=Tml94je2edk&list=PLEx5khR4g7PIEgcDlsEP5veliuyKgnpbt) — This developer preferred dynamic typing but noticed the rapidly increasing popularity of statically typed languages like TypeScript, Rust, and Go. He looks at the history, the shift, and why he doesn’t think the pendulum will swing back again. 

Richard Feldman   

[Practical Tips for Organizing Kubernetes RBAC](https://goteleport.com/blog/kubernetes-rbac-tips/?utm_campaign=0421RBACblog&utm_medium=partner&utm_source=golang) — Learn how a clearly developed RBAC strategy can help you with security and compliance issues. 

Teleport | goteleport․com sponsor   

[Building Our First GraphQL Server with Go: An Implementation Guide](https://tech.trivago.com/post/2023-05-17-building-our-first-graphql-server-with-go-an-implementation-guide) 
Kutlu Eren (Trivago)  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/pzjmkvhaf96uxobeljuc.jpg)](https://github.com/olebedev/when)  

[When 1.0: Natural Language Date/Time Parser](https://github.com/olebedev/when) — We first linked to this project over six years ago(!) so it’s great to see it hit v1.0. The idea is simple: given a string like _“tonight at 11:10 pm”_ or _“next wednesday at 4:20 a.m”_, you get the time object you need. Includes rules for English, Portuguese, and Russian. 

Oleg Lebedev   

[Pnutmux: Flexible Go Web Request Router](https://gitlab.com/fruitygo/pnutmux) — A Web framework that uses regex for matching and handling HTTP requests. It also provides CORS handling, structured logging, URL param extraction, middleware support, and concurrency limiting. 

Agity Inc.   

[Auth. Built for Devs, by Devs](https://fusionauth.io?utm_source=gonewsletter&utm_medium=newsletter&utm_campaign=awareness) — Easily add login, registration, SSO, MFA, user management and a bazillion more auth features to your Go application. 

FusionAuth sponsor   

[email-verifier: Verify Email Addresses Without Sending Mail](https://github.com/AfterShip/email-verifier) — Offers a few different approaches, from validating whether a string is even formatted as a valid email address, through to looking up the domain’s MX records, and asking the remote SMTP server. 

AfterShip   

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/fhngavmwsok9vxl70nzp.jpg)](https://github.com/abdullah-alaadine/local-git-contributions-visualizer)  

[Local Git Contributions Visualizer](https://github.com/abdullah-alaadine/local-git-contributions-visualizer) — A Go-powered tool that can generate a visual representation of overall git activity on repos. A bit like GitHub’s “heatmap” but you can run it offline and on repos not necessarily stored on GitHub. 

Abdullah Alaadine   

[Miller 6.8: A Go-Powered Textual Data File Swiss Army Knife](https://github.com/johnkerl/miller) — Like awk, sed, cut, join, and sort, all in a single place, for data formats such as CSV, TSV, and JSON. Think `jq` but for CSV, perhaps. 

John Kerl   

- [Wazero 1.2](https://github.com/tetratelabs/wazero/releases/tag/v1.2.0)
 ↳ Zero dependency WASM runtime for Go.
- [go-quartz 0.7](https://github.com/reugn/go-quartz)
 ↳ Zero-dependency scheduling library.
- [Connect 1.8](https://github.com/bufbuild/connect-go/releases/tag/v1.8.0) – gRPC, but better.
- [FerretDB 1.3](https://github.com/FerretDB/FerretDB)
 ↳ Open source MongoDB-compatible database.
- [gRPC-Gateway 2.16](https://github.com/grpc-ecosystem/grpc-gateway)
 ↳ gRPC to JSON proxy generator.
- [Go OpenAI Client Library 1.10](https://github.com/sashabaranov/go-openai)    

Jobs  

[Join the Gno.land Team](https://docs.google.com/forms/d/e/1FAIpQLSexAk7JObOd6FSQXm6Qx91DXYKCgqo65NXdRIZXn6-EatL4Ew/viewform) — Get to gno us! Sign up for a Q&A with our team to learn about joining Gno.land and building the next-gen smart contract platform. 
Gno.land   

[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    

A Go + Svelte Desktop App Example 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/whogbs1fbf2ovyljzpn6.jpg)](https://github.com/codenoid/batch-image-generator)  

[Template Based, Dynamic Image Batch Generation Tool](https://github.com/codenoid/batch-image-generator) — It’s not the tool itself that’s the most interesting thing here (though if you need to generate images _en masse_ from templates and CSVs, you might disagree) but that it’s an example of a [Wails-based](https://wails.io/) desktop app using Svelte for the UI and Go for the heavy lifting. 

codenoid        

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
