---
title: "Syntax highlighting, GraalVM vs Go, and why AMEX has chosen Go"
publication: "Go Weekly"
issue: 290
published_at: "2019-11-29"
canonical_url: "https://golangweekly.com/issues/290"
---

The latest Go development news       

#290 — November 29, 2019 

[Read on the Web](https://golangweekly.com/issues/290)   

Golang Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/xiqpezmvc91nmygtczwr.jpg)](https://github.com/alecthomas/chroma)   

[Chroma: A Pure Go General Purpose Syntax Highlighter](https://github.com/alecthomas/chroma) — Chroma brings most of the features of [Pygments](https://pygments.org/), pretty much the Python-based _standard_ in the syntax highlighting field, to Go and can even use the lexers and styles already created for Pygments. 

Alec Thomas   

[Why American Express Has Chosen Go](https://americanexpress.io/choosing-go/) — A look at why American Express decided to use Go for some of its most critical applications. They’ve also written up [a case study](https://go.dev/solutions/americanexpress/) for the new [go.dev](https://go.dev/) site. 

Benjamin Cane   [![\](https://copm.s3.amazonaws.com/4bb7308f.png)](https://www.eventbrite.com/e/3-day-ultimate-go-training-charlotte-nc-usa-january-2020-tickets-80562000111?mc_cid=838cbb9799&mc_eid=%5BUNIQID%5D) 

[Start 2020 Strong. Ultimate Go Training: Charlotte, NC - January 27-29, 2020](https://www.eventbrite.com/e/3-day-ultimate-go-training-charlotte-nc-usa-january-2020-tickets-80562000111?mc_cid=838cbb9799&mc_eid=%5BUNIQID%5D) — Take advantage of the early bird pricing and attend Bill Kennedy's Ultimate Go Training in Charlotte, North Carolina in January 2020. If you have a team of 5 or more engineers request a group discount [here](https://mailtrack.io/trace/link/b89a452e97bf014d66ab1846b9a1d982b019d5b9?url=https%3A%2F%2Fforms.gle%2FvufDbrRL9C6AU8XD9%3Fmc_cid%3D838cbb9799%26mc_eid%3D%5BUNIQID%5D&userId=2884192&signature=45cd382865411313). 

Ardan Labs sponsor   

[Oracle Pits GraalVM Against Google Go?](https://www.javaworld.com/article/3440103/oracle-pits-graalvm-against-google-go.html) — This seems like a bit of an unusual gauntlet to throw down, but apparently Oracle are positioning [GraalVM](https://www.graalvm.org/) (a multi-language supporting, polyglot VM they’ve been building) as being better than Go because you get interoperability with the Java ecosystem.. OK, then.. 😬 

Paul Krill   

▶[Discussing Compilers and Interpreters with Thorsten Ball and Tim Raymond](https://changelog.com/gotime/107) — What are the roles of compilers and interpreters, what do they do, and what’s involved with writing them in Go? As Thorsten is author of the popular [Writing an Interpreter in Go](https://interpreterbook.com/) book, this is an interesting episode if you have the time. 

Go Time Podcast podcast   

[macOS Go Binaries and Installer Identifiers Are Changing](https://groups.google.com/d/msg/golang-nuts/J7DEsH-YkNw/QrzdmlXfAQAJ) — The macOS Go package identifier namespace is changing from `com.googlecode.*` to `org.golang.*`. This is a very minor thing unless your infrastructure is relying upon the macOS Go installer having a specific identifier. 

Andrew Bonventre  

💻 Jobs  

[Enjoy Building Scalable Infrastructure in Go? Stream Is Hiring](https://angel.co/company/stream/jobs/241159-backend-software-engineer-go) — Like coding in Go? We do too. Stream is hiring in Amsterdam. Apply now. 

Stream   

[Find a Job Through Vettery](https://www.vettery.com/tech?utm_source=newsletter&utm_medium=cooper-golangweekly&utm_term=tech&utm_content=grouped&utm_campaign=ad-77582) — Make a profile, name your salary, and connect with hiring managers from top employers. Vettery is completely free for job seekers. 

Vettery  

📘 Articles & Tutorials  

[Simple Dependency Injection in Go with Fx](https://blog.huyage.dev/posts/simple-dependency-injection-in-go/) — You don’t see much about dependency injection in Go, but its concepts can apply nicely. Fx is a handy tool to make DI easy. 

Yage Hu   

[What Tracking Down Missing TCP Keepalives Taught Me About Docker, Go, and GitLab](https://about.gitlab.com/blog/2019/11/15/tracking-down-missing-tcp-keepalives/) — An in-depth recap of debugging a bug in the Docker client library. 

Stan Hu (GitLab)   

[Creating a Bloom Filter with Go](https://medium.com/@meeusdylan/creating-a-bloom-filter-with-go-7d4e8d944cfa) — If you’ve never encountered a Bloom filter before, I recommend having a play as they’re not complicated but are rather interesting in how they let you store data in a performance and memory efficient way, at the price of false positives. Here’s [another example](https://llimllib.github.io/bloomfilter-tutorial/) of how they work. 

Dylan Meeus   

[The Art of PostgreSQL: A Book to Learn How to Best Use SQL from Your Go Application](https://theartofpostgresql.com) — The book that teaches SQL to developers: learn to replace thousands of lines of Go code with simple SQL queries. 

The Art of PostgreSQL sponsor   

[A Closer Look at The `sync` Package](https://medium.com/@teivah/a-closer-look-at-go-sync-package-9f4e4a28c35a) — If you’re only familiar with `sync.Mutex` and `sync.WaitGroup`, then you’ll definitely learn something here. I feel like `sync.Cond` is something I should use more. 

Teiva Harsanyi   

▶[How to Shrink a Go Executable by 70% in 30 Seconds](https://www.youtube.com/watch?v=gOu8d76mUdM) — This [old tutorial](https://blog.filippo.io/shrink-your-go-binaries-with-this-one-weird-trick/) goes into more depth. 

Peter Cooper   

[GraphQL Observability with Go Using Open-Source Tools](https://t.co/ngsytLTGGB) — IBM’s Watson Media division reveals their GraphQL observability stack that’s built around Go, Prometheus, Jaeger and Grafana. 

Szabolcs Gelencsér   

[`go vet`'s `-c` Option](https://twitter.com/dgryski/status/1197744675467087872) — `go vet` is a built-in command that prints out ‘suspicious constructs’ in Go code.. and it supports a ‘context’ option for showing a number of lines _around_ such constructs. 

Damian Gryski on Twitter   

▶[From Java to Go, One Team's Journey](https://www.youtube.com/watch?v=4dSw3tkclQ4) — Nexuzhealth is a Belgian healthcare software company who provide software to 30 hospitals in Belgium. After 20 years on Java, they did a big rebuild in Go – here’s the how and why. 

Dylan Meeus  

🛠 Code & Tools  

[Secure: HTTP Middleware for Some 'Quick Security Wins'](https://github.com/unrolled/secure) — Covers areas like content security policy, SSL redirects, allowing certain hosts, setting a referrer policy, etc. 

Cory Jacobsen   

[TinyGo 0.10 Released: The Go Compiler for 'Small Places'](https://github.com/tinygo-org/tinygo/releases/tag/v0.10.0) — LLVM 9, improved CGo support, blocking select support, plus support for some new boards like the Adafruit Feather M4 and the X9 Pro and [PineTime](https://wiki.pine64.org/index.php/PineTime) smartwatches. 

TinyGo   

[Hugo 0.60: The Fast Go Framework for Statically Building Sites](https://gohugo.io/news/0.60.0-relnotes/) — Hugo has switched to a new Markdown library [Goldmark](https://github.com/yuin/goldmark/). 

Hugo Team   

[Speed Up Frontend Development with FaunaDB's Auth and Native GraphQL](https://fauna.com?utm_source=GoNewsletter&utm_medium=paid-advertising&utm_campaign=Fall19Newsletters-Go) 

FaunaDB sponsor   

[go-sqlbuilder: A Flexible SQL String Builder Library](https://github.com/huandu/go-sqlbuilder) — Focused mostly on MySQL and Postgres. Includes basic ORM type support via structs. 

Huan Du   

[Gin 1.5: The Popular Go HTTP Web Framework](https://github.com/gin-gonic/gin) 

Gin-Gonic   

[gtrace: An Experimental System Call Tracer for Linux x86-64](https://github.com/agis/gtrace) 

Agis Anastasopoulos   

[PNGR: Dockerized (Postgres + Nginx + Go + React)](https://github.com/karlkeefer/pngr) — Starter kit for a web app that includes user and session management, JWT authentication, and a basic CRUD example. 

Karl Keefer         

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

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

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