Gems are the things we love, and warts are the things we don't. On today's episode, Kris is joined by the hosting panel of Ian, Matt, and Dylan and they are talking about the gems and warts of Go. From defer, to net/http, to vanity URLs, to modules, we cover around 30 topics! To prevent our listeners/viewers from returning an E_TOO_MANY_UNPOPS error, we didn't include the Unpopular Opinions segment (there are plenty throughout the episode). We hope you enjoy this tangent filled episode. Have a gem or wart you agree/disagree with or think we missed a few? Let us know on social media or in the comments!Thank you so much for listening. Happy listening!Notes & Links:Chandler Carruth's CPPcon talk (from 40:44)Go x/tools/guru (from 43:36)Since deprecated, however this functionality is included in gopls.go/analysis (from 47:19)go/x/tools/cmd/eg (from 1:47:25)go/x/tools/refactor/egeg documentationChapters:(00:00) - Intro
(00:31) - Introductions
(05:07) - Gem#1: net/http
(07:37) - Gem#2: defer (gem)
(09:36) - PEBKAC (tangent)
(11:36) - Gem#3: if err != nil (gem)
(16:09) - Gem#4: testing included (gem)
(19:13) - Gem#5: struct field tags (gem)
(21:57) - Gem#6: reflect & unsafe (gem)
(24:35) - Gem#7: sync/atomic (gem)
(24:54) - Gem#8: io as composeable interfaces (gem)
(25:32) - Gem#9: No inheritance (gem)
(31:20) - Gem#10: Vanity URLs (gem)
(34:33) - Gem#11: single for loop (gem)
(37:08) - Gem#12: pprof (gem)
(38:25) - Gem#13: security by default (gem)
(40:01) - Gem#14: fast compiler times (gem)
(41:16) - Gem#15: go/ast & go/* packages (gem)
(42:05) - Gem#16: implicit interfaces (gem)
(42:38) - Wart#1: implicit interfaces (wart)
(48:37) - Wart#2: slice tricks (wart)
(54:10) - Wart#3: lack of method overloads (wart)
(56:57) - Wart#4: covariance for array parameters (wart)
(59:38) - Wart#5: encoding/json marshalling unexported fields (wart)
(01:01:27) - Wart#6: encoding/json marshalling errors (wart)
(01:02:31) - Wart#7: single letter variable names (wart)
(01:08:45) - Wart#8: iota (wart)
(01:16:09) - Wart#9: map operations (wart)
(01:18:23) - Gem#17: structs as map keys (gem)
(01:20:04) - Wart#10: main function signature (wart)
(01:23:35) - Gem/Wart#1: channels (gem & wart)
(01:30:38) - Wart#11: range loop variables (wart)
(01:34:31) - Wart#12: no standard build system (wart)
(01:38:09) - Wart#13: modules (wart)
(01:53:18) - Outro
Hosts
Kris Brandow - Host
Ian Wester-Lopshire - Host
Dylan Bourque - Host
Matthew Sanabria - Host
Socials:WebsiteBlueskyThreadsX/TwitterLinkedInInstagram
-------- Â
1:57:15
War Stories
Our experiences are what make us the software people we are today. In this episode, Kris is joined by the hosting panel of Ian, Matt, and Dylan and they're talking war stories. You'll hear tales of coworker frustrations, our own hubris, and plenty of weird software bugs. To close the episode out, Dylan, Ian, and Kris provide some unpopular opinions! Let us know on social media if you think their opinions are unpopular as they seem to think they are!Thank you so much for listening to our first episode. Happy listening!(00:00) - Introduction
(00:43) - Talkin' Bout The Rain
(01:39) - Dates, Times, and "Helpful" Platforms
(14:17) - Y2K Flashback
(16:20) - Non-Refreshing Refresh Tokens
(21:53) - TCP, Locks, and Load Balancers
(34:16) - tar != tar
(39:52) - Bonus Story: Too Many Modules
(43:58) - pprof to the rescue!
(47:18) - netcat: the ultimate database backup tool
(49:03) - The Perfect API (In Theory)
(53:30) - Hubris and the ease of ETL
(55:38) - Problems with Proactive Fixes
(58:39) - Unpopular Opinions
(59:00) - Dylan's Unpop
(01:03:08) - Ian's Unpop
(01:09:26) - Kris' Unpop
(01:12:32) - Outro
Hosts
Kris Brandow - Host
Ian Wester-Lopshire - Host
Dylan Bourque - Host
Matthew Sanabria - Host
Socials:WebsiteBlueskyThreadsX/TwitterLinkedInInstagram
-------- Â
1:13:07
Falling Through: A New Perspective
Welcome to Fallthrough! In our first episode, properly numbered 0, we're discussing what this podcast is and many of the things we hope to discuss on future episodes of the podcast. If you loved Go Time, we hope that you'll love Fallthrough. Happy listening!(00:00) - Welcome to Fallthrough!
(00:29) - What's in a name?
(01:55) - A New Perspective
(03:33) - Introduction: Ian Wester-Lopshire
(04:02) - Introduction: Matthew Sanabria
(05:43) - Introduction: Dylan Bourque
(06:19) - From the prospective of Go
(06:34) - Prospective Podcast Content: Dylan
(07:46) - Prospective Topic: Other languages from the Go perspective
(13:39) - Prospective Topic: The missing bits from the standard library
(15:17) - Prospective Topic: The "Don't touch that!" parts of Go
(19:04) - Prospective Topic: The No Build movement
(23:21) - Prospective Topic: Removing old Go habits
(23:47) - Prospective Topic: Union, Sum, or Option types
(25:41) - Prospective Topic: Documentation, Code Readability, & Error Planning
(32:16) - Prospective Topic: If, Else, Switch, & Strong Opinions
(36:55) - Podcast format changes
(38:19) - Things we're planning to keep
(38:58) - Opinions of the unpopular variety
(39:29) - Ian's Unpopular Opinion
(40:56) - Matthew's Unpopular Opinion
(43:08) - Dylan's Unpopular Opinion
(45:31) - Kris' Unpopular Opinion
(46:20) - Bonus: A Popular Opinion
(47:06) - Wrap up
Hosts
Kris Brandow - Host
Ian Wester-Lopshire - Host
Dylan Bourque - Host
Matthew Sanabria - Host
Socials:WebsiteBlueskyThreadsX/TwitterLinkedInInstagram
-------- Â
49:34
Falling Through: The Trailer
We're hard at work preparing the first episode of Fallthrough, but in the meantime we put together a short trailer to tease some of that episode's content. Make sure to subscribe so you'll be notified when the first episode ships. Happy listening!(00:00) - Introduction
(01:09) - Clip 1: The Unsafe & Reflect Packages
(04:03) - Clip 2: Documentation & Errors
(06:04) - Clip 3: Internet Speeds
(07:16) - Outro
Hosts
Kris Brandow - Host
Matthew Sanabria - Host
Dylan Bourque - Host
Ian Wester-Lopshire - Host
Socials:WebsiteBlueskyThreadsX/TwitterLinkedInInstagram