A practical concurrency guide for Go
This guide is built on top of some examples from the book
Concurrency in Go
andGo Programming Language
Covering race conditions, mutexes, deadlocks, channels, patterns, and more.
This guide is built on top of some examples from the book
Concurrency in Go
andGo Programming Language
Covering race conditions, mutexes, deadlocks, channels, patterns, and more.
Another entry in the maintenance series! Throughout the series weāve discussed building versus buying, building actually maintainable software, maintaining ourselves, open source maintenance, legacy code, and most recently Go project structure. In this 7th installment of the series, we continue narrowing our focus by talking about what to do when projects get big and messy.
Currently supports SQLite and CSV. MySQL and Postgres are on the roadmap. Built with Bubble Tea.
Can Go help you write faster PHP apps? In this episode, we explore the unusual pairing of Go and PHP that led to the RoadRunner project, a high-performance PHP application server, load-balancer, and process manager that is all written in Go.
Matan Peled from Technion University joins Natalie & Mat to discuss his PhD research on meta programming and static analyzers. How does Goās measure up? What would Matanās look like if he built one? All that and more!
The second jq
alternative weāve discovered this week! (first here)
jq
is hard to use. There are alternatives likefq
andzq
, but they still make you learn a new programming language. Im tired of learning new programming languages.
gq
is not optimized for speed, flexibility or beauty.gq
is optimized for minimal learning/quick usage.gq
understands that you donāt use it constantly, you use it once a month and then forget about it. So when you come back to it,gq
will be easy to relearn. Just use the builtin library just like you would any other go project and youāre done. No unfamiliar syntax or operations, or surprising limits. Thats it.
I donāt know if Go is a great fit for this use-case, but if you already know it well⦠makes sense.
Nice to see some efforts around standardizing MLOps. Hereās their high-level selling points:
Bjƶrn Rabenstein & Bartlomiej PÅotka join Mat & Johnny to discuss observability, monitoring and instrumentation for gophers.
We often have code thatās similar between projects and we find ourselves copying that code around. In this episode we discuss what to do with this common code, how to organize it, and what code qualifies as this common code.
On our episode with Brian Kernighan, I asked him if there were ever a situation in which he would advise you start a new program in C today. His response:
I think probably unless you are in one of these resource-constrained environments, clearly, right upfront, that youāre going to be resource-constrained and the improvement of hardware isnāt gonna rescue you in the next couple of years, I would not start with C. I really wouldnāt. And then it depends what is your application.
As if on queue, StackOverflow blogger Marcin Pasinski has done a comparison between C and Go in the quintessential resource-constrained environment. Oddly enough, no mention of TinyGo in the piece, but otherwise a solid analysis.
Has Go caught your interest, but you just havenāt had the time/opportunity to really dig into it? Are you relatively productive in your current language/ecosystem but wonder if the grass truly is greener on Goās side of the fence? If so, this episodeās for you!
For the first time ever, weāre producing somebody elseās podcast! Our friends at Grafana asked us to help them launch a show for the observability community. Itās called Big Tent and on this episode we are backstage with Tom Wilkie, Mat Ryer, & Matt Toback talking through what theyāre up to and why weāre helping out.
Hot off the press from our friend Ben Johnson:
Postlite is a network proxy to allow access to remote SQLite databases over the Postgres wire protocol. This allows GUI tools to be used on remote SQLite databases which can make administration easier.
The proxy works by translating Postgres frontend wire messages into SQLite transactions and converting results back into Postgres response wire messages. Many Postgres clients also inspect the
pg_catalog
to determine system information so Postlite mirrors this catalog by using an attached in-memory database with virtual tables. The proxy also performs minor rewriting on these system queries to convert them to usable SQLite syntax.
It appears that Ben is taking code contributions this time around, but only for bug & documentation fixes.
In this episode we will discuss what itās like to work with legacy code. How you work with it, how to avoid issues arising due to it, as well as when a greenfield rewrite is the best path forward. Hosted by Angelica Hill, joined by some wonderful guests: Dominic St-Pierre, Jeff Hernandez, Misha Avrekh, and Jon Sabados.
EaseProbe does 3 kinds of work:
This week weāre bringing The Changelog to Go Time ā we had an awesome conversation with Toby Padilla, Co-Founder at Charm where theyāre building tools to make the command line glamorous. Toby and the team at Charm have gone āall inā on Go ā all of Charm is written in Go. They moved to Go from other languages, saying āGo is the answer to building these type of tools.ā And even on this episode Toby says āI love Rust, itās really cool, itās a super-exciting language, but I jumped ship. I wanna be more productive, I wanna use all the fun toys, and so I started doing Go.ā Clearly this episode will be in good company here on Go Time.
We talk about the state of the art, the next big thing happening on the command line and in ssh-land. They have an array of open source tooling to build great apps for the terminal and Charm Cloud to power a new generation of CLI apps. We talk through all their tooling, where things are headed for CLI apps, the focus and attention of their team, and whatās to come in bringing glamor to the command line.
What does it take to master a programming language like Go? Joining us is the author of Mastering Go to help us answer that very question and to discuss the third edition of the book.
The New Stack has a solid rundown of all the new hotness that shipped yesterday when Go 1.18 officially rolled out. Of course, if youāre a regular Go Time listener, youāre already well aware of both the headline features as well as the other cool stuff in this release.
HUBFS is a file system for GitHub and Git. Git repositories and their contents are represented as regular directories and files and are accessible by any application, without the application having any knowledge that it is really accessing a remote Git repository. The repositories are writable and allow editing files and running build operations.
So if you hubfs mnt
(on macOS/Linux), it will set up a file hierarchy inside /mnt
that follows this pattern: / owner / repository / ref / path
. Cool idea! It is affected by GitHubās API rate limiting and Iām not sure if/how it syncs (commits) back to the remote reposā¦
Ed Welch joins Mat and Jon to discuss logging. They explore the different options for logging in Go, and discuss what data is worth including. Everything from log levels, formats, non-structured vs structured logs, along with common gotchas and good practices when dealing with logs at scale.
Say good bye to learning new tools just to work with a different data format.
Dasel uses a standard selector syntax no matter the data format. This means that once you learn how to use dasel you immediately have the ability to query/modify any of the supported data types without any additional tools or effort.
Samuel Berthe:
This project have started as an experiment to discover generics implementation. It may look like Lodash in some aspects. I used to code with the awesome go-funk package, but it uses reflection and therefore is not typesafe.
As expected, benchmarks demonstrate that generics will be much faster than implementations based on reflect stdlib package. Benchmarks also shows similar performances to pure
for
loops.
Letās talk about the concept of immutable databases, the problems they target, and why youād want to build one in Go.
Vikram Rangnekar:
GraphJin gives you an instant secure and fast GraphQL API without code. GraphQL is automagically compiled into an efficient SQL query. Use either as a library or a standalone service. Build your backend APIs 100X faster.
I have to zonk him for that āautomagicallyā, but still looks like a cool project.
This week weāre talking to Toby Padilla, Co-Founder at Charm ā where they build tools to make the command line glamorous. We talk about the state of the art, the next big thing happening on the command line and in ssh-land. They have an array of open source tooling to build great apps for the terminal and Charm Cloud to power a new generation of CLI apps. We talk through all their tooling, where things are headed for CLI apps, the focus and attention of their team, and whatās to come in bringing glamor to the command line.