15 minutes news, tips, and tricks on the Go programming language.
…
continue reading
Dominic St-Pierre and Val Sopi talk about their products on this bi-weekly show. Marketing, sales, and product making are at the core of their discussions.
…
continue reading
1
040: CLI in Go and other tech talks with Marian Montagnino
1:00:29
1:00:29
Play later
Play later
Lists
Like
Liked
1:00:29
I'm joined by Marian Montagnino this week. We talk about CLI in Go, programming languages. Java and Elm mentioned, be warned .;) and other tech related stuff. Marian wrote a book on building CLI in Go and presented multiple talks at Go conferences. We had some connectivity glitches during our call making it challenging. You won't here the internet …
…
continue reading
1
039: Go is now more fun to build web apps
34:46
34:46
Play later
Play later
Lists
Like
Liked
34:46
I started a monolith-style web application couple of weeks ago and force to admit that Go is more and more fun to use where I was considering more like Django or Rails before. For me there was still the templates aspect that needed to be fixed, and I wrote a library for that. The other major place where I was not enjoying myself was the database co…
…
continue reading
1
038: Finally, found a good use case for Go's plugin
30:41
30:41
Play later
Play later
Lists
Like
Liked
30:41
I've restarted active development on my open source Go backend server API StaticBackend. For a long time I wanted to make its CLI size smaller, and I decided to use Go's plugin package to extract a functionality that used a dependency that was accounting for more than 50% of its 170 MB. Go plugin were the solution I decided to use for this and I ex…
…
continue reading
1
037: Is Go a good choice for your Startup?
32:30
32:30
Play later
Play later
Lists
Like
Liked
32:30
I've been building SaaS since 2008 and built two with Go. Big spoiler, the technology you choose has a little impact in the early stage of a software business. There's some danger to over-engineer and use complex construct while you still does not even know if what you're building is desirable. Heck, you don't even know what you're building at firs…
…
continue reading
1
036: Game UI in Go with EbitenUI maintainer Mark Carpenter
1:05:05
1:05:05
Play later
Play later
Lists
Like
Liked
1:05:05
I'm joined by Mark Carpenter, the maintainer of EbitenUI, a UI library you may use with your Ebitengine Go game. Game dev is slowly making its way to Go with game library like Ebitengine and Raylib. The nice thing about Ebitengine is that it's built in Go, have great cadance in its development and is simple to use. EbitenUI is a UI library that all…
…
continue reading
1
035: Going deeper into Encore with its founder André Eriksson
1:11:27
1:11:27
Play later
Play later
Lists
Like
Liked
1:11:27
A follow-up episode on last week episode. We go a little bit deeper into Encore with André Eriksson. Encore can do a lot for your Go project and infrastructure. It allows your team to focus on your product and provides local development and DevOps tooling that help your team go faster. Links: Encore.dev - website Encore on GitHub André on Twitter H…
…
continue reading
1
034: Encore, domain design in Go with Bill Kennedy
1:12:07
1:12:07
Play later
Play later
Lists
Like
Liked
1:12:07
This week I'm joined by Bill Kennedy. Bill makes me discover Encore which can handles service-to-service communication while programmers focus on their application. We talk about domain design in Go and how to architect an isolated system following the 3-tier layer design. Links: Encore GitHub repo Ardan Labs Encore GitHub repo Ardan Labs Service G…
…
continue reading
1
033: Deployment orchestrator in Go, part of my upcoming SaaS
36:52
36:52
Play later
Play later
Lists
Like
Liked
36:52
My upcoming SaaS product at first wasn't suppose to be rolled out as a product, but was for my own usage. Turns out as I was using it and selling my online courses that it appears to me as being fairly usefull and could compete against existing course selling platform. The hic is that it wasn't built as a SaaS in mind, so I have to deploy one appli…
…
continue reading
In this episode I talk with John Arundel about cryptography in Go. John wrote a great book on the subject called Explore Go: Cryptography. Security is a growing concerns and you should up your game as a Go programmer. We're lucky to have such a solid crypt package in the standard library. I'd encourage you to get familiar with it if you haven't yet…
…
continue reading
1
031: Using shim on API to prevent breaking changes
17:08
17:08
Play later
Play later
Lists
Like
Liked
17:08
In 2021 Twilio sent a termination email on their Fax services. I was consulting as the CTO in a credit bureau that was in the start of an acquisition process with Equifax Canada. There was just no time to "waste" on changing provider and rewriting this part of the system to satisfy the new provider API. Would have been grand if the provider would h…
…
continue reading
I receive Chris Shepherd and we talk about gRPC in Go. If you're building systems with lots of micro-services, gRPC is a good way to provide strong contracts between your services and improve communications. Links: Chris on Twitter The Buf CLI Example protobuf registry The best way to support this show, other than talking about it, is by purchasing…
…
continue reading
1
029: I've a confession to make, I've wrote 2 apps in Django
31:43
31:43
Play later
Play later
Lists
Like
Liked
31:43
This episode was supposed to be focussing on templ, the tempalte library, but as I was going in details I found it hard not to explain the back story of why I started looking for something to help html/template be more "fun" to build rapid side projects, you know, CRUD heavy web application. Links: templ: https://templ.guide/ The lib I forgot the n…
…
continue reading
Quick solo episode on TDD and when I experienced it was used best and when I personally not use it but use an approach of writing a bit of code, than tests, thant another bit of code, etc. Buying my courses is the way to support this show, here's a direct discount for listeners.By Dominic St-Pierre
…
continue reading
I chatted with Matt Boyle about debugging Go code. Matt is creating a course about this topic and discussing debugging as a tool you may add to your toolbelt. Links The Ultimate Guide to Debugging With Go Domain-Driven Design with Golang Matt on Twitter aka X Goland Insiders (Go Twitter community) As always, if you'd like to support this podcast th…
…
continue reading
1
026: We can do better with interviews and onboarding
20:41
20:41
Play later
Play later
Lists
Like
Liked
20:41
I believe we can do better regarding software engineer interviews and this entire process (also including onboarding). I think companies that will be mediocre at those two aspects will have a hard time with younger programmers, which I fully support.By Dominic St-Pierre
…
continue reading
Iterators are going to be useful to process large amount of data without having to load an entire slice or maps in memory but instead create iterators that can be used from a for item := range myIterators(). If you'd like to support this show and/or are interested in Go courses I have, here's a direct discount link specially for listeners of this s…
…
continue reading
1
024: Do you understand this weird production behavior?
18:49
18:49
Play later
Play later
Lists
Like
Liked
18:49
Something absurd happened in 2024 for one of my consulting client's production web application, and this code for a time. The time zero value is behaving differently than it has been since 2018. {{if .TimeField}} Date has a value: {{ .TimeField }} {{else}} No date, zero value {{end}} I launched my new course Build a Google Analytics in Go, if you'r…
…
continue reading
1
023: Reaction to reddit post on null pointer error in Go
19:05
19:05
Play later
Play later
Lists
Like
Liked
19:05
I react to the post on the Go subreddit of last week talking about a null pointer error occuring in production for a Go program. This is the YouTube video I made. If you'd want to support this podcast, I have Go courses available for purchase here, I just launch my latest course Build a Google Analytics in Go with a 50% discount for listener of thi…
…
continue reading
Typical reasons to use Go might sounds exciting for us used to Go, but might not be as attractive for people that haven't experienced Go yet and might not realize they have some small heritants that Go fixes/improves. I've pre-launched my new course call Build a Google Analytics in Go, as listener to this podcast you're getting a 50% off during pre…
…
continue reading
1
021: Why I had to work 30h straight in 2002
20:23
20:23
Play later
Play later
Lists
Like
Liked
20:23
Things were very different when I started as a junior developer. This is a story of an out of the ordinary day where worked from ~9h am to 11am (the next day), the two of us that were in charge of everything at a small financial company. This one has nothing to do with Go, but I thought it was worth telling as a story. I'm soon to launch (pre-launc…
…
continue reading
1
020: Discipline is required to build long-live software
16:04
16:04
Play later
Play later
Lists
Like
Liked
16:04
As we're building more and more of distributed systems I believe that one trait / culture successful team will require is discipline. Personal opinion, we tend to complicate our lives in the last decade compare to what things were before. But without an extra attention to some details, it will be a nightmare to maintain systems in the long run. As …
…
continue reading
I talk about dependencies management in Go. How to keep your dependencies up-to-date and how to check if there's any updates available. What to do when a package change their major version. List all packages and latest versions: $ go list -m -u all Update all packages to their latest minor versions: $ go get -u ./... If you'd like to support this p…
…
continue reading
1
018: WebAssembly runner, a real-world use case
22:11
22:11
Play later
Play later
Lists
Like
Liked
22:11
I was toying with the idea of using WebAssembly runner as a plugin / extension mechanism from a Go (host) program to extend the capabilities of a program at runtime. * min/max bult-ins coming in 1.21: https://tip.golang.org/ref/spec#Min_and_max * wazero: https://github.com/tetratelabs/wazero * wasmr: https://github.com/wasmerio/wasmer-go * StaticBa…
…
continue reading
1
Help your OSS with GitHub CLI, Codespaces and linters
17:39
17:39
Play later
Play later
Lists
Like
Liked
17:39
I'm trying to make my open source backend API project StaticBackend as easy as possible to contribute. Couple of things I've added lately was worth mentionning. GitHub Codespaces is helpful and nicely done. It goes 1-step further than Docker and make contributing to an open source project a simple task, especially for small and quick 1-time contrib…
…
continue reading
1
016: What I'd hope WASM brought to web dev
22:45
22:45
Play later
Play later
Lists
Like
Liked
22:45
I talk about what I'd love to see coming to web development. While WebAssembly can be used as an alternative to JavaScript, I believe we're not looking into the real problems related to building web application.By Dominic St-Pierre
…
continue reading
1
015: How do you put things in production?
23:50
23:50
Play later
Play later
Lists
Like
Liked
23:50
It has been a rough last 4 months for me and I finally get a chance to restart publishing episodes. In this episode I talk a bit about what I've seen so far as process / flow for deploing software in production. Going from the old days when I started as a junior software dev where we were pushing straight into prod to what I discovered at a big org…
…
continue reading
1
014: We should contribute more to open source
18:11
18:11
Play later
Play later
Lists
Like
Liked
18:11
This is the last episode of 2022. Those are my thoughts about how I think we should try to help more as user of open source project and librairies. This episode content was inspired by the Gorilla Web Tool Kit archiving their Go projects. On that note, I'll be back with more Go content on January, and will try to keep my 1 episode per two weeks pla…
…
continue reading
Go's worker queue pattern: type WorderPool struct { queue chan int } func (wp *WorkerPool) start() { for i := 0; i < 500; i++ { go funcIO { for id := range wp.queue { doSomething(id) } }() } } func (wp *WorkerPool) add(id int) { wp.queue
…
continue reading
1
012: Concurrency isn't Go main selling point
15:25
15:25
Play later
Play later
Lists
Like
Liked
15:25
Let's talk about Go's concurrency. It's a powerful tool to have at your disposal but a hard one to master and use correctly. The tweet that inspired this episode, I thought it was a recent one though... Reach out on Twitter Build SaaS apps in Go If you want to support the pod the best way is to purchase my course (thanks).…
…
continue reading
1
011: Options where to deploy your Go servers
27:22
27:22
Play later
Play later
Lists
Like
Liked
27:22
At beginning I was deploying my Go servers to a DigitalOcean droplet. But for the last 3 years I'm enjoying Render, which listen to my git push and automatically deploy app for me in a blue-green deployment. If you enjoy my podcast have a look at the following: - Build SaaS apps in Go, my course on building web application in Go - StaticBackend, an…
…
continue reading
I recently created an exportable Go package from StaticBackend, an open source backend API which was self-hosted. I ended up using the internal package way to heavily and this design decision bite me when I decided to create an exportable package. Now all things that needed to be expose that was in the internal package had to be refactored into the…
…
continue reading
1
009: Set variables at build time with -LDFLAGS
15:27
15:27
Play later
Play later
Lists
Like
Liked
15:27
Usage of -ldflags: go build -ldflags "-X main.varName=from_build" -o mycli Inside your code: var varName string func main() { fmt.Println(varName) // prints "from_build" } Here's what I'm using for StaticBackend -v flag: go build -ldflags \ "-X github.com/staticbackendhq/core/config.BuildTime=$(shell date +'%Y-%m-%d.%H:%M:%S') \ -X github.com/stati…
…
continue reading
If you'd like to join the dev of StaticBackend a Firebase alternative I'm building in Go you're welcome, there's a discord if you'd want to chat. https://github.com/staticbackendhq/core If you'd like to checkout my course called Build SaaS apps in Go or want to support this show, that's the best way. If you're on Twitter make sure to follow me: htt…
…
continue reading
1
007: Is Go's database/sql verbosity that bad?
27:16
27:16
Play later
Play later
Lists
Like
Liked
27:16
sqlx: https://github.com/jmoiron/sqlx sqlboiler: https://github.com/volatiletech/sqlboiler If you're looking to learn how to build web API with Go, checkout my course on building SaaS in Go.By Dominic St-Pierre
…
continue reading
1
011: Road trips just like growing a SaaS is a marathon
37:13
37:13
Play later
Play later
Lists
Like
Liked
37:13
Val's product: blogstatic Dominic's product: parleBy Dominic St-Pierre and Val Sopi
…
continue reading
1
006: Build softwares that stand the test of time
13:20
13:20
Play later
Play later
Lists
Like
Liked
13:20
I've been maintaining 20 years old systems for a long time now. I've been working with legacy applications in .NET. To me Go has some great advantages built-in by design that should help in 10-15 years from now when the applications that are created today will be on maintenance mode.By Dominic St-Pierre
…
continue reading
1
010: SaaS is hard for self-funded founders
31:02
31:02
Play later
Play later
Lists
Like
Liked
31:02
Val's blogstatic: https://blogstatic.io/ Dominic's parle: https://parle.ioBy Dominic St-Pierre and Val Sopi
…
continue reading
Val's blogstatic Dominic's StaticBackendBy Dominic St-Pierre and Val Sopi
…
continue reading
Dominic has acquired True Fans by Ben Mann and Val decides to "shut up" saying any "big words" about the future : )By Dominic St-Pierre and Val Sopi
…
continue reading
1
005: Spring arriving, so is Go 1.18 and Generics
15:22
15:22
Play later
Play later
Lists
Like
Liked
15:22
What are you thinking about Generics? What about 3rd party libraries that will pop from everywhere once Go 1.18 launched? Personally, I'll appreciate what the std lib offers and will wait before writing generics code, making sure I really need it. I'm currently working on a free and open-source self-hosted Firebase alternative - if such things soun…
…
continue reading
If you'd like to check the code, the PR is still active. StaticBackend repo: https://github.com/staticbackendhq/core My course on Building SaaS in go Share episode topic idea with me on Twitter @dominicstpierreBy Dominic St-Pierre
…
continue reading
We talk about what came out of our marketing efforts in the past two weeks.By Dominic St-Pierre and Val Sopi
…
continue reading
1
003: Pointers or !Pointers, stack, and heap
17:10
17:10
Play later
Play later
Lists
Like
Liked
17:10
We go over what are pointers and when to use or not use them. For instance, this is probably not a good use for pointers. func main() { var i int = 10 abc(&i) } func abc(i *int) { *i = 15 } In my opinion any dereferencing is probably bad. Better way: func main() { var i int = 10 i = abc(i) } func abc(i int) int { return 15 } I also try to give some…
…
continue reading
1
A "Marketing Challenge!" and going down the Saas memory lane
38:21
38:21
Play later
Play later
Lists
Like
Liked
38:21
We spontaneously reminisce about our past Saas products and Dominic throws a curve ball by introducing a challenge!By Dominic St-Pierre and Val Sopi
…
continue reading
Don't stress too much about having the "proper" project structure to the point where you might over-engineer or be paralyzed by the thought of doing something wrong. It's just hard, and even 5+ years of Go experience will not ensure you're creating the optimal packages and structure. It's an art mixed with preferences that become a little easier wi…
…
continue reading
We chat about Vivid, Dominic's new product and Val's growth efforts.By Dominic St-Pierre and Val Sopi
…
continue reading
Wrapping error: fmt.Errorf("error trying to do X: %w", err) Package errors: https://pkg.go.dev/errors Example of not using the happy path at 1st indentation: try { if (user.HasAccessTo(Admin) { if (somethingElse()) { // happy path } else {} } else {} } catch(Exception ex) { // what really happened, and where? } An example of happy path in idiomatic…
…
continue reading
News from Dominic about Tangara and Val's next steps to market blogstatic.By Dominic St-Pierre and Val Sopi
…
continue reading
Dominic and Val chat about the agony of the purgatory while searching for PMF.By Dominic St-Pierre and Val Sopi
…
continue reading
We talk about the importance of features over marketing.By Dominic St-Pierre and Val Sopi
…
continue reading