#​515 — July 16, 2024

Unsub  |  Web Version

Together with  WorkOS

Go Weekly

Quartz: A Deterministic Time Testing Library — A new mocking library designed for testing code that relies on time, by introducing a little determinism and control to proceedings.. GitHub repo.

Spike Curtis

Go Range Iterators Demystified — In Go 1.22 (behind a flag) or 1.23 (currently in the release candidate stage), you can use the range keyword to iterate over custom collection types. Zach walks (iterates?) us through from the basics up to some more complex examples.

Zach Musgrave

WorkOS: The Modern Identity Platform for B2B SaaS — Start selling to enterprise customers with just a few lines of code. WorkOS provides flexible, easy-to-use APIs to integrate SSO, SCIM, and RBAC in minutes. It's used by hundreds of high-growth startups including Perplexity, Vercel, Drata, & Webflow.

WorkOS sponsor

Building a Binary Search Tree with SIMD and Go's Assembler — When you want a little more performance than Go provides naturally, or access to underlying CPU features unavailable in Go, leaning on assembly language is one way to do it. Clément shows a practical example here.

Clément Jean

⚠️ Note that the tutorial above assumes knowledge of Go's assembler and doesn’t walk through the build process. I’ve put together the pieces of Clément’s code into a single GitHub Gist to make it easier to reproduce for yourself, though.

IN BRIEF:

▶  Give Your Go App 'Superpowers' with an Embedded NATS ServerNATS is a lightweight real-time client/server messaging system, but a cool feature of NATS is you can embed it directly into a Go app and take advantage of its features without relying on a separate server.

Synadio

Profiling in Go: A Practical Guide — Pinpoint performance bottlenecks in your apps by profiling their activity and optimizing things based on the results.

Noam Yadgar

Kafka Is Dead, Long Live Kafka — Kafka is polarizing, yet ubiquitous. What if you could run Kafka as a single, stateless Go binary and reduce your costs?

WarpStream sponsor

📄 Mastering SOLID Principles with Go Examples Alex Pliutau

📄 Docker Best Practices: Choosing Between RUN, CMD, and ENTRYPOINT Jay Schmidt (Docker)

📄 Demystifying Go Strings Andrei Boar

🛠 Code & Tools

Fyne 2.5: GUI App Framework for Desktop, Mobile and Web — Fyne isn’t a new project, but it’s been years since we featured it, and it’s a pretty neat way to build GUI and mobile apps with Go. v2.5 is a big release with support for Wayland as well as internationalization. It requires Go 1.19+. GitHub repo.

Fyne Team

💡 In Writing GUI apps doesn't have to be painful, Nikola Ubavić explains how he considered numerous languages and GUI app development approaches before settling on Go and Fyne (above).

Minigrad: Andrej Karpathy's Micrograd in Go — A neural network library using an autograd approach. It’s essentially Andrej Karpathy’s (previously of OpenAI) Micrograd implementation in Go, rather than Python.

Jeet

📰 Classifieds

Meetings should be more like code reviews. We're building a product for that and looking for software leaders to join the beta. Apply here.


🛡️ Protect your application infrastructure running on AWS with this time tested and essential security checklist. Download now!


🎥 Iris seeks Sr. Backend Engineer for edge-deployed Go/Rust dev. Work on an AI-powered robotic camera platform. Remote, equity, competitive pay.

Build Tools for Go — If the out-of-the-box build tools aren’t getting it done, here’s list of open source build tools to consider, including Mage and Taskfile.

Inkmi

Chiko: An Elegant gRPC TUI Client — Uses the popular tview terminal UI widget library to offer a way to interact with gRPC services.

felangga

timediff: Produce Human Readable, Relative Time Differences — For example: timediff.TimeDiff(time.Now().Add(-3 * time.Minute)) would produce “3 minutes ago”.

MergeStat