Guest User

Untitled

a guest
Jan 14th, 2026
38
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 43.16 KB | None | 0 0
  1. meta
  2. grep '^[^ ]' $% |mc
  3.  
  4. . Import from http://go.dev/wiki
  5. . Wherever possible, save slides locally
  6.  
  7. http://go.dev/wiki/Learn
  8.  
  9. http://go.dev/wiki/Conferences
  10. Why Learn Go? http://youtu.be/FTl0tl9BGdc
  11. Simplicity is Complicated http://youtu.be/rFejpH_tAHM
  12. Stacks of Tokens, A study in interfaces http://youtu.be/sDTGhIqyMjo
  13. Go 2 Draft Specifications http://youtu.be/RIvL2ONhFBI
  14. Rob Pike on the move from C to Go in the toolchain http://youtu.be/cF1zJYkBW4A
  15. Public Static Void http://youtu.be/5kj5ApnhPAE
  16. Another Go at Language Design http://youtu.be/7VcArS4Wpqk
  17. The path to Go 1 http://youtu.be/bj9T2c2Xk_s
  18. Writing Web Apps in Go http://youtu.be/-i0hat7pdpk
  19. The Go Programming Language and Environment http://www.youtu.be/YXV7sa4oM4I
  20.  
  21. . http://github.com/ardanlabs/gotraining/tree/master/reading
  22.  
  23. Russ' Accepted Proposals
  24. FIXME: add github link
  25. label:Proposal-Accepted author:rsc
  26.  
  27. Intro to Go
  28.  
  29. . A Tour of Go http://research.swtch.com/gotour
  30. . Ultimate Go Tour http://tour.ardanlabs.com
  31. . How Do You Structure Your Go Apps http://youtu.be/oL6JBUk6tj0
  32.  
  33. # why is it here? maybe :^/Demo
  34. . Codewalk: First-Class Functions in Go http://go.dev/doc/codewalk/functions/
  35. . Codewalk: Generating arbitrary text: a Markov chain algorithm http://go.dev/doc/codewalk/markov/
  36.  
  37. Details ("A Tour of Go") first, abstractions ("Go at Google") later.
  38.  
  39. Why Go?
  40.  
  41. . import from http://go.dev/talks
  42.  
  43. What guided the choices that defined Go's identity? How does
  44. it contrast with choices made by other languages? How to
  45. address Go's shortcomings properly?
  46.  
  47. . Design :/^FAQ/
  48. . Changes from C :/^FAQ/
  49.  
  50. . Go at Google http://go.dev/talks/2012/splash.article
  51. . Another Go at Language Design
  52. http://web.stanford.edu/class/ee380/Abstracts/100428-pike-stanford.pdf
  53. http://youtu.be/7VcArS4Wpqk
  54. . What We Got Right, What We Got Wrong :/^History/
  55. . Less is exponentially more http://commandcenter.blogspot.com/2012/06/less-is-exponentially-more.html
  56. . Why no constructors and destructors: http://github.com/golang/go/issues/36669#issuecomment-576820265
  57.  
  58. Challenges:
  59.  
  60. . the spec, mm specifically, isn't simple
  61. . interfaces are nothing new
  62.  
  63. Ardan Labs
  64.  
  65. . Focus On Being Precise http://ardanlabs.com/blog/2018/02/focus-on-being-precise.html
  66. . Application Focused API Design http://ardanlabs.com/blog/2016/11/application-focused-api-design.html
  67. . Avoid Interface Pollution http://ardanlabs.com/blog/2016/10/avoid-interface-pollution.html
  68. . Reducing Type Hierarchies http://ardanlabs.com/blog/2016/10/reducing-type-hierarchies.html
  69. . Composition with Go http://ardanlabs.com/blog/2015/09/composition-with-go.html
  70. . Using Pointers In Go http://ardanlabs.com/blog/2014/12/using-pointers-in-go.html
  71. . Singleton Design Pattern in Go http://ardanlabs.com/blog/2013/07/singleton-design-pattern-in-go.html
  72. . Idiomatic Go Tricks http://youtu.be/yeetIgNeIkc
  73. . When Idioms Become Bottlenecks http://youtu.be/q7s30kFHBdw
  74.  
  75. Ardan Labs: Design Philosophy
  76.  
  77. . Develop Your Design Philosophy http://ardanlabs.com/blog/2017/01/develop-your-design-philosophy.html
  78. . Design Philosophy On Logging http://ardanlabs.com/blog/2017/05/design-philosophy-on-logging.html
  79. . Design Philosophy On Packaging http://ardanlabs.com/blog/2017/02/design-philosophy-on-packaging.html
  80. . Package Oriented Design http://ardanlabs.com/blog/2017/02/package-oriented-design.html
  81. . Design Philosophy On Integrity http://ardanlabs.com/blog/2017/02/design-philosophy-on-integrity.html
  82. . Design Philosophy in Go http://youtu.be/7YcLIbG1ekM
  83.  
  84. History
  85.  
  86. . 2009: The Go Programming Language Promo http://youtu.be/wwoWei-GAPo
  87. . 2010: Go: one year ago today http://go.dev/blog/1year
  88. . 2010: Go Programming http://youtu.be/jgVhBThJdXc
  89. . 2013: Four years of Go http://go.dev/blog/4years
  90. . 2013: The path to Go 1 http://youtu.be/bj9T2c2Xk_s
  91. . 2014: Opening Keynote http://youtu.be/VoS7DsT1rdM
  92. . 2014: Go from C to Go http://youtu.be/QIE5nV5fDwA
  93. . 2015: Six years of Go http://go.dev/blog/6years
  94. . 2015: The Evolution of Go
  95. http://go.dev/talks/2015/gophercon-goevolution.slide
  96. http://youtu.be/0ReKdcpNyQg
  97. . 2015: The move from C to Go in the toolchain http://youtu.be/cF1zJYkBW4A
  98. . 2015: Keynote http://youtu.be/XvZOdpd_9tc
  99. . 2016: Seven years of Go http://go.dev/blog/7years
  100. . 2017: Eight years of Go http://go.dev/blog/8years
  101. . 2017: The Future of Go http://go.dev/blog/toward-go2 http://youtu.be/0Zbh_vmAKvk
  102. . 2018: Nine years of Go http://go.dev/blog/9years
  103. . 2019: The Go Programming Language http://youtu.be/rKnDgT73v8s
  104. . 2020: Eleven Years of Go http://go.dev/blog/11years
  105. . 2021: Twelve Years of Go http://go.dev/blog/12years
  106. . 2021: The Go Programming Language and Environment http://youtu.be/YXV7sa4oM4I
  107. . 2022: Thirteen Years of Go http://go.dev/blog/13years
  108. . 2022: Compatibility: How Go Programs Keep Working http://youtu.be/v24wrd3RwGo
  109. . 2022: How do Go programs keep working? http://youtu.be/moS35OlJBmY
  110. . 2023: Fourteen Years of Go http://go.dev/blog/14years
  111. . 2023: Go Changes http://youtu.be/BNmxtp26I5s
  112. . 2024: What We Got Right, What We Got Wrong
  113. http://commandcenter.blogspot.com/2024/01/what-we-got-right-what-we-got-wrong.html
  114. http://youtu.be/yE5Tpp2BSGw
  115. . 2024: How things get done on the Go Team http://changelog.com/gotime/318
  116. . 2024: Russ Cox on passing the torch http://changelog.com/gotime/333
  117. . 2024: Go Turns 15 http://go.dev/blog/15years
  118.  
  119. go2
  120.  
  121. . 2017: Toward Go 2
  122. . 2018: Go 2, here we come! http://go.dev/blog/go2-here-we-come
  123. . 2018: Go 2 Draft Specifications http://youtu.be/RIvL2ONhFBI
  124. . 2018: Go 2 Drafts Announcement http://go.dev/blog/go2draft http://youtu.be/6wIP3rO6On8
  125. . 2019: Next steps toward Go 2 http://go.dev/blog/go2-next-steps
  126. . 2019: On the Path to Go 2 http://youtu.be/kNHo788oO5Y
  127. . 2023: Backward Compatibility, Go 1.21, and Go 2 http://go.dev/blog/compat
  128.  
  129. Assembly
  130.  
  131. . Bounds Check Elimination In Go http://ardanlabs.com/blog/2018/04/bounds-check-elimination-in-go.html
  132. . Go Compiler nil Pointer Checks http://ardanlabs.com/blog/2014/09/go-compiler-nil-pointer-checks.html
  133. . Macro View of Map Internals In Go http://ardanlabs.com/blog/2013/12/macro-view-of-map-internals-in-go.html
  134. . Recursion And Tail Calls In Go http://ardanlabs.com/blog/2013/09/recursion-and-tail-calls-in-go_26.html
  135. . The Design of the Go Assembler http://youtu.be/KINIAgRpkDA
  136.  
  137. pointers, stacks, heaps, escape analysis and value/pointer semantics
  138.  
  139. . Language Mechanics On Stacks And Pointers
  140. http://ardanlabs.com/blog/2017/05/language-mechanics-on-stacks-and-pointers.html
  141. . Language Mechanics On Escape Analysis
  142. http://ardanlabs.com/blog/2017/05/language-mechanics-on-escape-analysis.html
  143. . Language Mechanics On Memory Profiling
  144. http://ardanlabs.com/blog/2017/06/language-mechanics-on-memory-profiling.html
  145. . Design Philosophy On Data And Semantics
  146. http://ardanlabs.com/blog/2017/06/design-philosophy-on-data-and-semantics.html
  147. . For Range Semantics
  148. http://ardanlabs.com/blog/2017/06/for-range-semantics.html
  149. . Interface Semantics
  150. http://ardanlabs.com/blog/2017/07/interface-semantics.html
  151. . Escape-Analysis Flaws
  152. http://ardanlabs.com/blog/2018/01/escape-analysis-flaws.html
  153.  
  154. Cgo
  155.  
  156. . C? Go? Cgo! http://go.dev/blog/cgo
  157.  
  158. . Using C Dynamic Libraries In Go Programs
  159. http://ardanlabs.com/blog/2013/08/using-c-dynamic-libraries-in-go-programs.html
  160. . Using CGO with Pkg-Config And Custom Dynamic Library Locations
  161. http://ardanlabs.com/blog/2013/08/using-cgo-with-pkg-config-and-custom.html
  162.  
  163. Concurrency
  164.  
  165. . Origins of Go Concurrency Style http://youtu.be/-_DKfAn4pFA
  166.  
  167. . Concurrency :/^Effective.Go/
  168. . Concurrency :/^FAQ/
  169. . Language: Goroutine lifetimes :/^Google.Style.Decisions/
  170. . Language: Synchronous functions :/^Google.Style.Decisions/
  171.  
  172. . Share Memory By Communicating http://go.dev/blog/codelab-share
  173. . Testing concurrent code with testing/synctest http://go.dev/blog/synctest
  174. . Codewalk: Share Memory By Communicating http://go.dev/doc/codewalk/sharemem/
  175. . Principles of designing Go APIs with channels
  176. http://inconshreveable.com/07-08-2014/principles-of-designing-go-apis-with-channels/
  177. . Advanced Go Concurrency http://encore.dev/blog/advanced-go-concurrency
  178. . Mutexes and Semaphores Demystified http://barrgroup.com/blog/mutexes-and-semaphores-demystified
  179. . Timeouts and Deadlines http://go.dev/wiki/Timeouts
  180. . LockOSThread http://go.dev/wiki/LockOSThread
  181. . Use a sync.Mutex or a channel? http://go.dev/wiki/MutexOrChannel
  182. . Rate Limiting http://go.dev/wiki/RateLimiting
  183. . Go Patterns: Fanning http://seh.dev/concy0/
  184.  
  185. . A Practical Guide to Preventing Deadlocks and Leaks in Go http://youtu.be/3EW1hZ8DVyw
  186.  
  187. . Concurrency Trap #2: Incomplete Work
  188. http://ardanlabs.com/blog/2019/04/concurrency-trap-2-incomplete-work.html
  189. . Goroutine Leaks - The Abandoned Receivers
  190. http://ardanlabs.com/blog/2018/12/goroutine-leaks-the-abandoned-receivers.html
  191. . Goroutine Leaks - The Forgotten Sender
  192. http://ardanlabs.com/blog/2018/11/goroutine-leaks-the-forgotten-sender.html
  193. . The Behavior Of Channels
  194. http://ardanlabs.com/blog/2017/10/the-behavior-of-channels.html
  195. . The Nature Of Channels In Go
  196. http://ardanlabs.com/blog/2014/02/the-nature-of-channels-in-go.html
  197. . Concurrency, Goroutines and GOMAXPROCS
  198. http://ardanlabs.com/blog/2014/01/concurrency-goroutines-and-gomaxprocs.html
  199. . My Channel Select Bug http://ardanlabs.com/blog/2013/10/my-channel-select-bug.html
  200. . Pool Go Routines To Process Task Oriented Work
  201. http://ardanlabs.com/blog/2013/09/pool-go-routines-to-process-task.html
  202. . Timer Routines And Graceful Shutdowns In Go
  203. http://ardanlabs.com/blog/2013/09/timer-routines-and-graceful-shutdowns.html
  204.  
  205. #ajmani
  206. . Go Concurrency Patterns: Timing out, moving on http://go.dev/blog/concurrency-timeouts
  207. . Go Concurrency Patterns: Pipelines and cancellation http://go.dev/blog/pipelines
  208. . Advanced Go Concurrency Patterns http://youtu.be/QDDwwePbDtw http://go.dev/talks/2013/advconc.slide
  209. . Simulating a Real-World System in Go
  210. http://sourcegraph.com/blog/go/simulating-a-real-world-system-in-go
  211. http://speakerdeck.com/sajmani/simulating-a-real-world-system-in-go
  212.  
  213. Practical Go
  214.  
  215. . Channel Axioms http://dave.cheney.net/2014/03/19/channel-axioms
  216. . Curious Channels http://dave.cheney.net/2013/04/30/curious-channels
  217. . Never start a goroutine without knowing hot it will stop
  218. http://dave.cheney.net/2016/12/22/never-start-a-goroutine-without-knowing-how-it-will-stop
  219.  
  220. talks
  221.  
  222. . Understanding Channels http://youtu.be/KBZlN0izeiY http://speakerdeck.com/kavya719/understanding-channels
  223. . Concurrency is not parallelism http://go.dev/blog/waza-talk http://go.dev/talks/2012/waza.slide
  224. . Go Concurrency Patterns http://youtu.be/f6kdp27TYZs http://go.dev/talks/2012/concurrency.slide
  225. . Rethinking Classical Concurrency Patterns
  226. http://youtu.be/5zXAHh5tJqQ
  227. http://drive.google.com/file/d/1nPdvhB0PutEJzdCq5ms6UI58dp50fcAN
  228. . Asynchronous Networking Patterns http://youtu.be/afSiVelXDTQ
  229. . Unbound Concurrency in Go http://youtu.be/PAUjYyBfELk
  230. . Complex Concurrency Patterns with Go http://youtu.be/2HOO5gIgyMg
  231. . An Actor Model in Go http://youtu.be/yCbon_9yGVs
  232. . Concurrency Patterns in Go http://youtu.be/rDRa23k70CU
  233. . Broadcasting Channels http://youtu.be/nG2djhqmSQk
  234. . Goroutines: The Dark Side of the Runtime http://youtu.be/4CrL3Ygh7S0
  235. . Tackling Contention: The Monsters Inside the sync.Locker http://youtu.be/KUC5WtbBdFA
  236. . Deadlocks: The Dark Side of Concurrency http://youtu.be/9j0oQkqzhAE
  237. . Detecting and Fixing Unbound Concurrency Problems http://youtu.be/gggi4GIvgrg
  238.  
  239. Go advanced concurrency patterns
  240.  
  241. . Part 1 http://blogtitle.github.io/go-advanced-concurrency-patterns-part-1
  242. . Part 2 http://blogtitle.github.io/go-advanced-concurrency-patterns-part-2-timers
  243. . Part 3 http://blogtitle.github.io/go-advanced-concurrency-patterns-part-3-channels
  244.  
  245. Ice Cream Makers and Data Races
  246.  
  247. . http://dave.cheney.net/2014/06/27/ice-cream-makers-and-data-races
  248. . http://ardanlabs.com/blog/2014/06/ice-cream-makers-and-data-races-part-ii.html
  249.  
  250. Concurrency: Context
  251.  
  252. . Common libraries: Contexts :/^Google.Style.Decisions/
  253.  
  254. . Cancellation, Context, and Plumbing http://go.dev/talks/2014/gotham-context.slide
  255. . Go Concurrency Patterns: Context http://go.dev/blog/context
  256.  
  257. blogs
  258.  
  259. . Context http://peter.bourgon.org/blog/2016/07/11/context.html
  260. . Why context.Value matters and how to improve it
  261. http://blog.merovius.de/posts/2017-08-14-why-context-value-matters-and-how-to-improve-it/
  262. . Context is for cancellation http://dave.cheney.net/2017/01/26/context-is-for-cancelation
  263. . Context isn’t for cancellation http://dave.cheney.net/2017/08/20/context-isnt-for-cancellation
  264. . Pitfalls of context values and how to avoid or mitigate them in Go
  265. http://calhoun.io/pitfalls-of-context-values-and-how-to-avoid-or-mitigate-them/
  266. . Context should go away for Go 2 http://faiface.github.io/post/context-should-go-away-go2/
  267. . Providing context to cancellations in Go 1.20 with the new context WithCause API
  268. http://josephwoodward.co.uk/2023/01/context-cancellation-cause-with-cancel-cause
  269.  
  270. talks
  271.  
  272. . A Beginner’s Guide to Context http://youtu.be/r4Mlm6qEWRs
  273. . How to correctly use package context http://youtu.be/-_B5uQ4UGi0
  274.  
  275. Demo
  276.  
  277. . A web server :/^Effective.Go/
  278. . Complex command-line interfaces :/^Google.Best.Practices/
  279.  
  280. . Writing Web Applications http://go.dev/doc/articles/wiki
  281. . Code that grows with grace http://vimeo.com/53221560
  282. . Implementing a bignum calculator with Rob Pike http://youtu.be/PXoG0WX0r_E
  283.  
  284. Ardan Labs
  285.  
  286. . Visualizing Map Data with Go and Leaflet JS
  287. http://ardanlabs.com/blog/2023/11/visualizing-map-data-go.html
  288. . Visualization in Go - Plotting Stock Information http://ardanlabs.com/blog/2022/01/visualizations-in-go.html
  289. . GIS in Go http://ardanlabs.com/blog/2021/11/gis-in-go.html
  290. . Extract, Transform, and Load in Go http://ardanlabs.com/blog/2021/09/extract-transform-load-in-go.html
  291. . Data Science in Go: How Much To Tip
  292. http://ardanlabs.com/blog/2021/07/go-data-science-how-much-tip.html
  293. . Using Bitmasks In Go http://ardanlabs.com/blog/2021/04/using-bitmasks-in-go.html
  294. . Actionable Data With MongoDB and Go
  295. http://ardanlabs.com/blog/2014/06/actionable-data-with-mongodb-and-go.html
  296. . Web Form Validation And Localization In Go
  297. http://ardanlabs.com/blog/2014/03/web-form-validation-and-localization-in.html
  298. . Running MongoDB Queries Concurrently With Go
  299. http://ardanlabs.com/blog/2014/02/running-queries-concurrently-against.html
  300. . Sample Web Application Using Beego and Mgo
  301. http://ardanlabs.com/blog/2013/12/sample-web-application-using-beego-and.html
  302. . Using XSLT With Go
  303. http://ardanlabs.com/blog/2013/11/using-xslt-with-go.html
  304. . Slices of Slices of Slices in Go
  305. http://ardanlabs.com/blog/2013/09/slices-of-slices-of-slices-in-go.html
  306. . Running Go Programs as a Background Process
  307. http://ardanlabs.com/blog/2013/06/running-go-programs-as-background.html
  308.  
  309. Distributed Computing
  310.  
  311. . Coordinating data changes in distributed systems http://youtu.be/osSkjwFgz5g
  312. . Lost in Transaction http://youtu.be/iQnbYMmDct4
  313. . Build your own distributed system using Go http://youtu.be/8XbxQ1Epi5w
  314. . Reliability Nirvana http://youtu.be/NvmGgaWxx_U
  315. . Go, for Distributed Systems http://go.dev/talks/2013/distsys.slide
  316.  
  317. Errors
  318.  
  319. . Effective Go: Errors
  320. . Google Style Decisions: Errors
  321. . Google Style Decisions: Don’t panic
  322.  
  323. Google Best Practices: Error handling
  324. . Error structure
  325. . Adding information to errors
  326. . Placement of %w in errors
  327. . Logging errors
  328. . Program initialization
  329. . Program checks and panics
  330. . When to panic
  331.  
  332. . Error handling and Go http://go.dev/blog/error-handling-and-go
  333. . Errors are values http://go.dev/blog/errors-are-values
  334. . Go Wiki: Errors http://go.dev/wiki/Errors
  335. . Defer, Panic, and Recover http://go.dev/blog/defer-panic-and-recover
  336. . Go Wiki: PanicAndRecover http://go.dev/wiki/PanicAndRecover
  337. . Error handling in Upspin http://commandcenter.blogspot.com/2017/12/error-handling-in-upspin.html
  338. . Working with Errors in Go 1.13 http://go.dev/blog/go1.13-errors
  339. . Understanding Defer, Panic and Recover
  340. http://ardanlabs.com/blog/2013/06/understanding-defer-panic-and-recover.html
  341. . Handling Go Errors http://youtu.be/4WIhhzTTd0Y
  342. . Working with Errors http://youtu.be/IKoSsJFdRtI
  343.  
  344. . An Open Letter To The Go Team About Try
  345. http://ardanlabs.com/blog/2019/07/an-open-letter-to-the-go-team-about-try.html
  346.  
  347. Dave Cheney
  348.  
  349. . Don’t just check errors, handle them gracefully
  350. http://dave.cheney.net/2016/04/27/dont-just-check-errors-handle-them-gracefully
  351. . Stack traces and the errors package
  352. http://dave.cheney.net/2016/06/12/stack-traces-and-the-errors-package
  353. . Inspecting errors
  354. http://dave.cheney.net/2014/12/24/inspecting-errors
  355. . Constant errors
  356. http://dave.cheney.net/2016/04/07/constant-errors
  357. . Eliminate error handling by eliminating errors
  358. http://dave.cheney.net/2019/01/27/eliminate-error-handling-by-eliminating-errors
  359.  
  360. Error Handling In Go
  361.  
  362. . http://ardanlabs.com/blog/2014/10/error-handling-in-go-part-i.html
  363. . http://ardanlabs.com/blog/2014/11/error-handling-in-go-part-ii.html
  364.  
  365. GC
  366.  
  367. . A Guide to the Go Garbage Collector http://go.dev/doc/gc-guide
  368. . Go GC: Prioritizing low latency and simplicity http://go.dev/blog/go15gc
  369. . Go GC: Solving the Latency Problem http://youtu.be/aiv1JOfMjm0 http://go.dev/talks/2015/go-gc.pdf
  370. . Getting to Go: The Journey of Go’s Garbage Collector http://go.dev/blog/ismmkeynote
  371. . Control Theory and Concurrent Garbage Collection http://youtu.be/We-8RSk4eZA
  372.  
  373. Garbage Collection In Go
  374.  
  375. . Semantics http://ardanlabs.com/blog/2018/12/garbage-collection-in-go-part1-semantics.html
  376. . GC Traces http://ardanlabs.com/blog/2019/05/garbage-collection-in-go-part2-gctraces.html
  377. . GC Pacing http://ardanlabs.com/blog/2019/07/garbage-collection-in-go-part3-gcpacing.html
  378.  
  379. Generics
  380.  
  381. . Type Parameters :/^FAQ/
  382. . Language: Generics :/^Google.Style.Decisions/
  383.  
  384. . Getting Started http://go.dev/doc/tutorial/generics
  385. . Deconstructing Type Parameters http://go.dev/blog/deconstructing-type-parameters
  386. . Robust generic functions on slices http://go.dev/blog/generic-slice-functions
  387. . An Introduction to Generics http://go.dev/blog/intro-generics http://youtu.be/Pa_e9EeCdy8
  388. . When to Use Generics http://go.dev/blog/when-generics http://youtu.be/nr8EpUO9jhw
  389. . Generic interfaces http://go.dev/blog/generic-interfaces
  390. . Everything You Always Wanted to Know about Type Inference
  391. http://go.dev/blog/type-inference
  392. http://youtu.be/2putv2jOqdg
  393. . All your comparable types http://go.dev/blog/comparable
  394. . Generics Unconstrained! http://youtu.be/eU-w2psAvdA
  395.  
  396. Ardan Labs
  397.  
  398. . Basic Syntax http://ardanlabs.com/blog/2020/07/generics-01-basic-syntax.html
  399. . Underlying Types http://ardanlabs.com/blog/2020/08/generics-02-underlying-types.html
  400. . Struct Types and Data Semantics
  401. http://ardanlabs.com/blog/2020/09/generics-03-struct-types-and-data-semantics.html
  402. . Generics vs. Interfaces http://youtu.be/iWP0ANQ4m7g
  403.  
  404. HTTP
  405.  
  406. . Routing Enhancements for Go 1.22 http://go.dev/blog/routing-enhancements
  407. . HTTP/2 Server Push http://go.dev/blog/h2push
  408. . Introducing HTTP Tracing http://go.dev/blog/http-tracing
  409. . Custom Handlers and Avoiding Globals in Go Web Applications
  410. http://blog.questionable.services/article/custom-handlers-avoiding-globals/
  411. . http.Handler and Error Handling in Go
  412. http://blog.questionable.services/article/http-handler-error-handling-revisited/
  413. . Making and Using HTTP Middleware http://alexedwards.net/blog/making-and-using-middleware
  414. . Writing HTTP Middleware in Go http://justinas.org/writing-http-middleware-in-go
  415. . Calculating Download MD5 Hash http://ardanlabs.com/blog/2023/03/calculating-download-md5-in-go.html
  416. . Writing an HTTP handler function in Go http://youtu.be/gkqhAa3OIXI
  417. . How I Write HTTP Web Services after Eight Years http://youtu.be/rWBSMsLG8po
  418. . How I Write HTTP Clients after (almost) 7 Years http://youtu.be/7viRho80PY4
  419.  
  420. Images
  421.  
  422. .The Go image package http://go.dev/blog/go-image-package
  423. . The Go image/draw package http://go.dev/blog/go-imagedraw-package
  424.  
  425. Interface
  426.  
  427. . Interfaces and other types :/^Effective.Go/
  428. . Google Style Decisions: Language: Interfaces
  429.  
  430. . JSON-RPC: a tale of interfaces http://go.dev/blog/json-rpc
  431. . A GIF decoder: an exercise in Go interfaces http://go.dev/blog/gif-decoder
  432. . Go Data Structures: Interfaces http://research.swtch.com/interfaces
  433. . Go Wiki: MethodSets http://go.dev/wiki/MethodSets
  434. . Interface Values Are Valueless http://ardanlabs.com/blog/2018/03/interface-values-are-valueless.html
  435. . Copying Interface Values In Go http://ardanlabs.com/blog/2016/05/copying-interface-values-in-go.html
  436. . Stacks of Tokens, A study in interfaces http://youtu.be/sDTGhIqyMjo
  437.  
  438. Interfaces 101
  439.  
  440. . Implementing Generics with Interfaces http://youtu.be/34ZmIfWOb0U
  441. . Heap Escape http://youtu.be/HEfAFpdILpA
  442. . Error Handling With Go http://youtu.be/E7m39uouya0
  443. . Go's Logging Interface http://youtu.be/6anm5i6UTq4
  444. . Determine LOC with io.Writer http://youtu.be/72TYNqi5VdM
  445. . Interface Type Assertion http://youtu.be/cySYwKF_v_w
  446. . Interface Design Considerations http://youtu.be/I4uBfflqbFY
  447. . Testing with a Mock Interface http://youtu.be/2tgr46mlMlA
  448. . Parsing Command Flags http://youtu.be/aHVwZ-WejeI
  449. . Extensible API Handlers http://youtu.be/RLI3RMwc-ps
  450.  
  451. JSON
  452.  
  453. . JSON and Go http://go.dev/blog/json
  454.  
  455. . JSON, Interfaces, and go generate http://youtu.be/YgnD27GFcyA http://go.dev/talks/2015/json.slide
  456. . Decode JSON Documents In Go http://ardanlabs.com/blog/2014/01/decode-json-documents-in-go.html
  457. . The Future of JSON in Go http://youtu.be/avilmOcHKHE
  458.  
  459. JSON for Engineers
  460.  
  461. . Data Integrity with JSON Serialization http://youtu.be/Ppt_x-gQ3lI
  462. . Exploring JSON Encoding and Data Handling in Go http://youtu.be/NLglY1ya10c
  463. . Managing JSON Field Tags and Value Handling in Go http://youtu.be/b1dQu2khW-0
  464. . JSON Handling and Type Management with Large Datasets in Go http://youtu.be/ZF60bioxTK4
  465. . Scalable JSON Streaming with HTTP and Go http://youtu.be/-lcH3qrkh_U
  466.  
  467. JSON - The Fine Print
  468.  
  469. . http://ardanlabs.com/blog/2024/10/json-the-fine-print-part-1.html
  470. . Emitting JSON http://ardanlabs.com/blog/2024/10/json-the-fine-print-part-2.html
  471. . Zero vs Missing Values http://ardanlabs.com/blog/2025/05/json-the-fine-print-part-3.html
  472.  
  473. Language
  474.  
  475. :/^Effective.Go/
  476. . Semicolons
  477. . Control structures
  478. . Functions
  479. . Initialization
  480. . The blank identifier
  481. . Embedding
  482.  
  483. :/^FAQ/
  484. . Types
  485. . Control Flow
  486.  
  487. :/^Google.Style.Decisions/
  488. . Language: Literal formatting
  489. . Language: Nil slices
  490. . Language: Function formatting
  491. . Language: Conditionals and loops
  492. . Language: switch and break
  493. . Language: Type aliases
  494. . Language: Use %q
  495. . Language: Use any
  496.  
  497. :/^Google.Best.Practices/
  498. . Variable declarations
  499. . Function argument lists
  500.  
  501. . Go's Declaration Syntax http://go.dev/blog/declaration-syntax
  502. . Goodbye core types - Hello Go as we know and love it! http://go.dev/blog/coretypes
  503. . Constants http://go.dev/blog/constants
  504. . What's in an (Alias) Name? http://go.dev/blog/alias-names
  505. . Fixing For Loops in Go 1.22 http://go.dev/blog/loopvar-preview
  506. . Go maps in action http://go.dev/blog/maps
  507. . Package names http://go.dev/blog/package-names
  508.  
  509. Ardan Labs
  510.  
  511. . For Loops and More in Go http://ardanlabs.com/blog/2024/03/for-loops-and-more-in-go.html
  512. . Implementing Enumerations In Go
  513. http://ardanlabs.com/blog/2023/09/implementing-enumerations-in-golang.html
  514. . Pitfalls With Closures In Go http://ardanlabs.com/blog/2014/06/pitfalls-with-closures-in-go.html
  515. . Methods, Interfaces and Embedded Types in Go
  516. http://ardanlabs.com/blog/2014/05/methods-interfaces-and-embedded-types.html
  517. . Introduction To Numeric Constants In Go
  518. http://ardanlabs.com/blog/2014/04/introduction-to-numeric-constants-in-go.html
  519. . Exported/Unexported Identifiers In Go
  520. http://ardanlabs.com/blog/2014/03/exportedunexported-identifiers-in-go.html
  521. . Three-Index Slices in Go 1.2
  522. http://ardanlabs.com/blog/2013/12/three-index-slices-in-go-12.html
  523. . Functions and Naked Returns In Go
  524. http://ardanlabs.com/blog/2013/10/functions-and-naked-returns-in-go.html
  525. . Gustavo's IEEE-754 Brain Teaser
  526. http://ardanlabs.com/blog/2013/08/gustavos-ieee-754-brain-teaser.html
  527. . Understanding Type in Go
  528. http://ardanlabs.com/blog/2013/07/understanding-type-in-go.html
  529.  
  530. Log
  531.  
  532. . Structured Logging with slog http://go.dev/blog/slog
  533. . Using The Log Package In Go http://ardanlabs.com/blog/2013/11/using-log-package-in-go.html
  534. . Structured Logging for the Standard Library http://youtu.be/rJfvv_c9mYU
  535. . Let’s talk about logging http://dave.cheney.net/2015/11/05/lets-talk-about-logging
  536.  
  537. Memory
  538.  
  539. . Data :/^Effective.Go/
  540. . Pointers and Allocation :/^FAQ/
  541. . Language: Copying :/Google.Style.Decisions/
  542. . Language: Pass values :/Google.Style.Decisions/
  543. . Language: Receiver type :/Google.Style.Decisions/
  544.  
  545. Memory Models http://research.swtch.com/mm
  546. . Hardware Memory Models
  547. . Programming Language Memory Models
  548. . Updating the Go Memory Model
  549.  
  550. . The Go Memory Model http://go.dev/ref/mem
  551. . Faster Go maps with Swiss Tables http://go.dev/blog/swisstable http://go.dev/blog/swisstable
  552. . Understanding Memory Allocation in Go http://youtu.be/zjoieOpy5hE
  553. . Understanding Go’s Memory Allocator http://youtu.be/3CR4UNMK_Is
  554. . Memory Management in Go http://youtu.be/SKenR18NM04
  555. . Go Wiki: InterfaceSlice http://go.dev/wiki/InterfaceSlice
  556.  
  557. Modules
  558.  
  559. http://research.swtch.com/vgo
  560. . Go += Package Versioning
  561. . A Tour of Versioned Go (vgo)
  562. . Semantic Import Versioning
  563. . Minimal Version Selection
  564. . Reproducible, Verifiable, Verified Builds
  565. . Defining Go Modules
  566. . Versioned Go Commands
  567. . The vgo proposal is accepted. Now what?
  568. . What is Software Engineering?
  569.  
  570. . Developing and publishing modules http://go.dev/doc/modules/developing
  571. . Module release and versioning workflow http://go.dev/doc/modules/release-workflow
  572. . Managing module source http://go.dev/doc/modules/managing-source
  573. . Organizing a Go module http://go.dev/doc/modules/layout
  574. . Developing a major version update http://go.dev/doc/modules/major-version
  575. . Publishing a module http://go.dev/doc/modules/publishing
  576. . Module version numbering http://go.dev/doc/modules/version-numbers
  577.  
  578. . Using Go Modules http://go.dev/blog/using-go-modules
  579. . Migrating to Go Modules http://go.dev/blog/migrating-to-go-modules
  580. . Publishing Go Modules http://go.dev/blog/publishing-go-modules
  581. . Go Modules: v2 and Beyond http://go.dev/blog/v2-go-modules
  582. . Keeping Your Modules Compatible http://go.dev/blog/module-compatibility
  583.  
  584. . Opening keynote: Go with Versions http://youtu.be/F8nrpe0XWRg
  585. . Dependencies and the future of Go http://changelog.com/gotime/77
  586.  
  587. Ardan Labs
  588.  
  589. . Why And What
  590. http://ardanlabs.com/blog/2019/10/modules-01-why-and-what.html
  591. . Projects, Dependencies and Gopls
  592. http://ardanlabs.com/blog/2019/12/modules-02-projects-dependencies-gopls.html
  593. . Minimal Version Selection
  594. http://ardanlabs.com/blog/2019/12/modules-03-minimal-version-selection.html
  595. . Mirrors, Checksums and Athens
  596. http://ardanlabs.com/blog/2020/02/modules-04-mirros-checksums-athens.html
  597. . Gopls Improvements
  598. http://ardanlabs.com/blog/2020/04/modules-05-gopls-improvements.html
  599. . Vendoring
  600. http://ardanlabs.com/blog/2020/04/modules-06-vendoring.html
  601.  
  602. Networking
  603.  
  604. . expvar (<go doc -all expvar)
  605. . Building a net.Conn type from the ground up http://youtu.be/H7b8GGJxpMk
  606. . Socket to Me: Where do Sockets Live in Go?
  607. http://youtu.be/pGR3r0UhoS8
  608. http://sourcegraph.com/blog/go/gophercon-2019-socket-to-me-where-do-sockets-live-in-go
  609.  
  610. OOP
  611.  
  612. . Methods :/^Effective.Go/
  613.  
  614. . Object Oriented Programming in Go
  615. http://ardanlabs.com/blog/2013/07/object-oriented-programming-in-go.html
  616. . How to Break OOP Muscle http://youtu.be/qeTzjeuq3cw
  617.  
  618. Object Oriented Programming Mechanics
  619. http://youtu.be/gRpUfjTwSOo
  620. Methods http://play.golang.org/p/hfRkC6nKag
  621. Interfaces http://play.golang.org/p/F1UyKlTh3k
  622. Extending Types http://play.golang.org/p/JJ811lBwoz
  623. Overriding Inner Types http://play.golang.org/p/-xQFBv9_82
  624.  
  625. Performance
  626.  
  627. . Performance :/^FAQ/
  628.  
  629. . Going Infinite: Handling 1 Million Websocket Connections http://youtu.be/YiCCD5DPry8
  630. . Death by 3,000 Timers: Streaming Video-on-Demand for Cable TV http://youtu.be/h0s8CWpIKdg
  631.  
  632. Q&A
  633.  
  634. . 2012: Meet the Go Team http://youtu.be/sln-gJaURzk
  635. . 2013: Fireside Chat with the Go Team http://youtu.be/p9VUCp98ay4
  636. . 2014: Inside the Gophers Studio http://youtu.be/u-kkf76TDHE
  637.  
  638. RPC
  639.  
  640. . Gobs of data http://go.dev/blog/gob
  641. . Go Protobuf: The new Opaque API http://go.dev/blog/protobuf-opaque
  642. . net/rpc (<go doc -all net/rpc)
  643. . gRPC Go http://youtu.be/sZx3oZt7LVg http://go.dev/talks/2015/gotham-grpc.slide
  644.  
  645. Rangefunc
  646.  
  647. . Range Over Function Types http://go.dev/blog/range-functions
  648. . Rangefunc Experiment http://go.dev/wiki/RangefuncExperiment
  649. . Iterators in Go http://bitfieldconsulting.com/posts/iterators
  650. . Range-Over Functions in Go http://ardanlabs.com/blog/2024/04/range-over-functions-in-go.html
  651.  
  652. . Coroutines for Go http://research.swtch.com/coro
  653. . spec: add range over int, range over func http://github.com/golang/go/issues/61405
  654.  
  655. Reflection
  656.  
  657. . The Laws of Reflection http://go.dev/blog/laws-of-reflection
  658.  
  659. Runtime
  660.  
  661. . Controlling the go runtime http://youtu.be/us9hfJqncV8
  662.  
  663. Security
  664.  
  665. . Traversal-resistant file APIs http://go.dev/blog/osroot
  666. . Open Source Supply Chain Security at Google http://research.swtch.com/acmscored
  667. . Secure Coding in Go: Avoiding Common Vulnerabilities http://youtu.be/com5l5DKvqQ
  668. . Command PATH security in Go http://go.dev/blog/path-security
  669.  
  670. Scheduler
  671.  
  672. . Implementing language with lightweight concurrency http://youtu.be/-K11rY57K7k
  673. . The Scheduler Saga http://youtu.be/YHRO5WQGh0k http://speakerdeck.com/kavya719/the-scheduler-saga
  674. . Queues, Fairness, and the Go Scheduler http://youtu.be/wQpC99Xu1U4
  675. . Goroutines: Spinning, Balancing, or Avoiding http://youtu.be/yo-CkroaQhs
  676.  
  677. Slice
  678.  
  679. . Go Slices: usage and internals http://go.dev/blog/slices-intro
  680. . Arrays, slices (and strings): The mechanics of 'append' http://go.dev/blog/slices
  681.  
  682. Ardan Labs
  683.  
  684. . Understanding Slices in Go Programming
  685. http://ardanlabs.com/blog/2013/08/understanding-slices-in-go-programming.html
  686. . Collections Of Unknown Length in Go
  687. http://ardanlabs.com/blog/2013/08/collections-of-unknown-length-in-go.html
  688. . Iterating Over Slices In Go http://ardanlabs.com/blog/2013/09/iterating-over-slices-in-go.html
  689.  
  690. Stdlib
  691.  
  692. :/^Google.Style.Decisions/
  693. . Common libraries: Flags
  694. . Common libraries: Logging
  695. . Common libraries: crypto/rand
  696.  
  697. . io/fs draft design http://youtu.be/yx7lmuwUNv8
  698. . Advanced Patterns with io.ReadWriter http://youtu.be/kTAsciVuZLQ
  699. . Automatic cipher suite ordering in crypto/tls http://go.dev/blog/tls-cipher-suites
  700. . Evolving the Go Standard Library with math/rand/v2 http://go.dev/blog/randv2
  701. . Secure Randomness in Go 1.22 http://go.dev/blog/chacha8rand
  702. . Language and Locale Matching in Go http://go.dev/blog/matchlang
  703. . Using Time, Timezones and Location in Go
  704. http://ardanlabs.com/blog/2013/08/using-time-timezones-and-location-in-go.html
  705. . Understanding Go's Time Format http://youtu.be/sSxvyGKSJ5U
  706. . Reading XML Documents in Go http://ardanlabs.com/blog/2013/06/reading-xml-documents-in-go.html
  707. . Send an email in Go with smtp.SendMail
  708. http://ardanlabs.com/blog/2013/06/send-email-in-go-with-smtpsendmail.html
  709. . Go's time.Duration Type Unravelled http://ardanlabs.com/blog/2013/06/gos-duration-type-unravelled.html
  710.  
  711. . From unique to cleanups and weak: new low-level tools for efficiency http://go.dev/blog/cleanups-and-weak
  712. . New unique package http://go.dev/blog/unique
  713.  
  714. Slices Package
  715.  
  716. . Contains, Delete, and Equal http://ardanlabs.com/blog/2023/09/golang-slices-contains-delete-equal.html
  717. . Compare http://ardanlabs.com/blog/2023/08/golang-slices-compare.html
  718. . Clip, Clone, and Compact http://ardanlabs.com/blog/2023/08/golang-slices-clip-clone-compact.html
  719. . Binary Search http://ardanlabs.com/blog/2023/08/golang-slices-binary-search.html
  720.  
  721. String
  722.  
  723. . Google Best Practices: String concatenation
  724. . Strings, bytes, runes and characters in Go http://go.dev/blog/strings
  725. . Go Wiki: GoStrings http://go.dev/wiki/GoStrings
  726. . String Matching http://blog.gopheracademy.com/advent-2014/string-matching/
  727.  
  728. SQL
  729.  
  730. . Tutorial: Accessing a relational database http://go.dev/doc/tutorial/database-access
  731. . Accessing relational databases http://go.dev/doc/database/
  732. . Opening a database handle http://go.dev/doc/database/open-handle
  733. . Executing SQL statements that don't return data http://go.dev/doc/database/change-data
  734. . Querying for data http://go.dev/doc/database/querying
  735. . Using prepared statements http://go.dev/doc/database/prepared-statements
  736. . Executing transactions http://go.dev/doc/database/execute-transactions
  737. . Canceling in-progress operations http://go.dev/doc/database/cancel-operations
  738. . Managing connections http://go.dev/doc/database/manage-connections
  739. . Avoiding SQL injection risk http://go.dev/doc/database/sql-injection
  740.  
  741. Testing
  742.  
  743. :/^Google.Style.Decisions/
  744. . Useful test failures
  745. . Test structure
  746.  
  747. :/^Google.Best.Practices/
  748. . Leave testing to the Test function
  749. . Designing extensible validation APIs
  750. . Use real transports
  751. . t.Error vs. t.Fatal
  752. . Error handling in test helpers
  753. . Don’t call t.Fatal from separate goroutines
  754. . Use field names in struct literals
  755. . Keep setup code scoped to specific tests
  756.  
  757. . More predictable benchmarking with testing.B.Loop http://go.dev/blog/testing-b-loop
  758. . Go Wiki: TableDrivenTests http://go.dev/wiki/TableDrivenTests
  759. . Using Subtests and Sub-benchmarks http://go.dev/blog/subtests
  760. . Testable Examples in Go http://go.dev/blog/examples
  761.  
  762. . Testing Techniques http://youtu.be/ndmB0bj7eyw http://go.dev/talks/2014/testing.slide
  763. . Go Testing by Example http://research.swtch.com/testing http://youtu.be/X4rxi9jStLo
  764. . Table driven tests in Go http://youtu.be/SuImJLqx3wU
  765. . Advanced Testing with Go http://youtu.be/8hQG7QlcLBk
  766. . Test Go Service Integration Using Contracts http://youtu.be/9suYz4mgKOU
  767. . A Journey through Integration Testing with Go http://youtu.be/o_B4HFfeKEs
  768. . Advanced Testing Concepts http://youtu.be/Iu4nqoCzlRE
  769. . Advanced Testing Techniques http://youtu.be/_NKQX-TdNMc
  770. . Acceptance Tests, BDD & Go http://youtu.be/ZMWJCk_0WrY
  771. . How not to write a test in Go http://youtu.be/AcY_HID7mxY
  772. . Rethinking How We Test Our Async Architecture http://youtu.be/xa_lLAucKKg
  773.  
  774. Integration Testing in Go
  775.  
  776. . Executing Tests with Docker
  777. http://ardanlabs.com/blog/2019/03/integration-testing-in-go-executing-tests-with-docker.html
  778. . Set-up and Writing Tests
  779. http://ardanlabs.com/blog/2019/10/integration-testing-in-go-set-up-and-writing-tests.html
  780.  
  781. Telemetry
  782.  
  783. http://research.swtch.com/telemetry
  784.  
  785. . Transparent Telemetry for Open-Source Projects
  786. . The Design of Transparent Telemetry
  787. . Use Cases for Transparent Telemetry
  788. . Opting In to Transparent Telemetry
  789.  
  790. Tools
  791.  
  792. . Finding unreachable functions with deadcode http://go.dev/blog/deadcode
  793. . go:build design draft http://youtu.be/AgR_mdC4Rs4
  794. . //go:embed draft design http://youtu.be/rmS-oWcBZaI
  795. . Go docs http://go.dev/talks/2012/go-docs.slide
  796. . Gophers with Hammers http://go.dev/talks/2014/hammers.slide
  797. . Go Dynamic Tools http://youtu.be/a9xrxRsIbSU http://go.dev/talks/2015/dynamic-tools.slide
  798. . About the go command http://go.dev/doc/articles/go_command
  799. . Go Doc Comments http://go.dev/doc/comment
  800. . Diagnostics http://go.dev/doc/diagnostics
  801. . Go Wiki: GcToolchainTricks http://go.dev/wiki/GcToolchainTricks
  802. . Go tooling essentials http://rakyll.org/go-tool-flags/
  803. . Cross Compile Your Go Programs http://ardanlabs.com/blog/2013/10/cross-compile-your-go-programs.html
  804. . Writing testable examples in Go http://youtu.be/-p79vJF_k8c
  805. . Codebase Refactoring (with help from Go) http://youtu.be/h6Cw9iCDVcU
  806. . Dynamically Instrumenting Go Programs http://youtu.be/de9cVAx6REA
  807. . Optimizing Go Code without a Blindfold http://youtu.be/oE_vm7KeV_E
  808. . Tracking Inter-process Dependencies http://youtu.be/Um3l_pr3dzw
  809.  
  810. Tools: code generation
  811.  
  812. . The cover story http://go.dev/blog/cover
  813. . Generating code http://go.dev/blog/generate
  814. . Becoming the Metaprogrammer http://youtu.be/RpmYXh0ppRo
  815. . Inception: Go programs that generate Go code http://youtu.be/Zl50bk6VRQE
  816. . Write Less (Code), Generate More http://youtu.be/xcpboZZy-64
  817.  
  818. Tools: debugging
  819.  
  820. . Debugging Go code (a status report) http://go.dev/blog/debug-status
  821. . Debugging Go Code with GDB http://go.dev/doc/gdb
  822. . Delve into Go http://youtu.be/InG72scKPd4
  823. . Deterministically Debugging Go Programs http://youtu.be/S05f-lgY5S0
  824. . Be Smug, Debug http://youtu.be/ISYdvmg2D_k
  825.  
  826. Tools: fuzzing
  827.  
  828. . Go Fuzzing http://go.dev/doc/security/fuzz/
  829. . Getting started with fuzzing http://go.dev/doc/tutorial/fuzz
  830. . Fuzz Testing Made Easy http://youtu.be/7KWPiRq3ZYI
  831.  
  832. Tools: pgo
  833.  
  834. . Profile-guided optimization preview http://go.dev/blog/pgo-preview
  835. . Profile-guided optimization in Go 1.21 http://go.dev/blog/pgo
  836. . Profile-guided optimization http://go.dev/doc/pgo
  837.  
  838. Tools: profiling
  839.  
  840. . Profiling Go Programs http://go.dev/blog/pprof
  841. . Kubernetes Memory Limits and Go http://ardanlabs.com/blog/2024/02/kubernetes-memory-limits-go.html
  842. . Kubernetes CPU Limits and Go http://ardanlabs.com/blog/2024/02/kubernetes-cpu-limits-go.html
  843. . Getting Friendly With CPU Caches http://ardanlabs.com/blog/2023/07/getting-friendly-with-cpu-caches.html
  844. . Two Go Programs, Three Different Profiling Techniques http://youtu.be/nok0aYiGiYA
  845. . Go Profiling and Observability from Scratch http://youtu.be/7hg4T2Qqowk
  846. . Collect First, Ask Questions Later http://youtu.be/srprZ2NgRgk
  847. . Performance in a High-throughput SQL Database http://youtu.be/IiPT6g2F1Kk
  848. . Seven ways to profile Go applications http://youtu.be/2h_NFBFrciI
  849. . You, Latency, and Profiling http://youtu.be/Lxt8Vqn4JiQ
  850.  
  851. Tools: race detection
  852.  
  853. . Introducing the Go Race Detector http://go.dev/blog/race-detector
  854. . Data Race Detector http://go.dev/doc/articles/race_detector
  855. . Sneaky race conditions and granular locks http://blogtitle.github.io/sneaky-race-conditions-and-granular-locks/
  856. . Detecting Race Conditions With Go http://ardanlabs.com/blog/2013/09/detecting-race-conditions-with-go.html
  857.  
  858. Tools: security
  859.  
  860. . govulncheck http://go.dev/doc/tutorial/govulncheck
  861. . Vulnerability Management for Go http://go.dev/blog/vuln http://youtu.be/nJm2GP6kMJo
  862. . Understanding Supply Chain Threats with Static Analysis http://youtu.be/8ranre-agv8
  863.  
  864. Tools: tracing
  865.  
  866. . An Introduction to “go tool trace” http://youtu.be/V74JnrGTwKA
  867. . Trace http://pkg.go.dev/cmd/trace
  868. . More powerful Go execution traces http://go.dev/blog/execution-traces-2024
  869. . Scheduler Tracing In Go http://ardanlabs.com/blog/2015/02/scheduler-tracing-in-go.html
  870. . Stack Traces In Go http://ardanlabs.com/blog/2015/01/stack-traces-in-go.html
  871. . Tracing Go Programs with eBPF http://youtu.be/OxLmd7szevI
  872.  
  873. WebAssemply
  874.  
  875. . Extensible Wasm Applications with Go http://go.dev/blog/wasmexport
  876. . BONUS – Go and WebAssembly http://changelog.com/gotime/bonus-77
  877.  
  878. WebSocket
  879.  
  880. . WebSockets in Go http://youtu.be/b6hM0RFNnHw
  881.  
  882. talks/2012
  883.  
  884. . 10 things you (probably) don’t know about Go http://go.dev/talks/2012/10things.slide
  885. . Go: code that grows with grace http://go.dev/talks/2012/chat.slide
  886.  
  887. talks/2013
  888.  
  889. . Twelve Go Best Practices http://youtu.be/8D3Vmm1BGoY http://go.dev/talks/2013/bestpractices.slide
  890.  
  891. talks/2014
  892.  
  893. . When in Go, Do as Gophers Do http://go.dev/talks/2014/readability.slide
  894. . The Research Problems of Implementing Go
  895. http://go.dev/talks/2014/research.slide
  896. http://go.dev/talks/2014/research2.slide
  897.  
  898. Effective Go
  899.  
  900. http://go.dev/doc/effective_go
  901.  
  902. . Introduction
  903. . Formatting
  904. . Commentary
  905. . Names
  906. . Semicolons :/^Language/
  907. . Control structures :/^Language/
  908. . Functions :/^Language/
  909. . Data :/^Memory/
  910. . Initialization :/^Language/
  911. . Methods :/^OOP/
  912. . Interfaces and other types :/^Interface/
  913. . The blank identifier :/^Language/
  914. . Embedding :/^Language/
  915. . Concurrency :/^Concurrency/
  916. . Errors :/^Errors/
  917. . A web server :/^Demo/
  918.  
  919. FAQ
  920.  
  921. http://go.dev/doc/faq
  922.  
  923. . Origins
  924. . Usage
  925. . Design :/^Why.Go/
  926. . Types :/^Language/
  927. . Values :/^Language/
  928. . Writing Code
  929. . Pointers and Allocation :/^Memory/
  930. . Concurrency :/^Concurrency/
  931. . Functions and Methods
  932. . Control Flow :/^Language/
  933. . Type Parameters :/^Generics/
  934. . Packages and Testing
  935. . Implementation
  936. . Performance :/^Performance/
  937. . Changes from C :/^Why.Go/
  938.  
  939. Google Style Guide
  940.  
  941. http://google.github.io/styleguide/go/guide
  942.  
  943. . Style principles: Clarity
  944. . Style principles: Simplicity
  945. . Style principles: Concision
  946. . Style principles: Maintainability
  947. . Style principles: Consistency
  948. . Core guidelines
  949.  
  950. References
  951. . Code Health: IdentifierNamingPostForWorldWideWebBlog
  952. http://testing.googleblog.com/2017/10/code-health-identifiernamingpostforworl.html
  953. . Testing State vs. Testing Interactions
  954. http://testing.googleblog.com/2013/03/testing-on-toilet-testing-state-vs.html
  955. . Effective Testing http://testing.googleblog.com/2014/05/testing-on-toilet-effective-testing.html
  956. . Risk-Driven Testing http://testing.googleblog.com/2014/05/testing-on-toilet-risk-driven-testing.html
  957. . Change-Detector Tests Considered Harmful
  958. http://testing.googleblog.com/2015/01/testing-on-toilet-change-detector-tests.html
  959.  
  960. Google Style Decisions
  961.  
  962. http://google.github.io/styleguide/go/decisions
  963.  
  964. . Naming
  965. . Commentary
  966. . Imports
  967. . Errors :/^Errors/
  968. . Language: Literal formatting :/^Language/
  969. . Language: Nil slices :/^Language/
  970. . Language: Function formatting :/^Language/
  971. . Language: Conditionals and loops :/^Language/
  972. . Language: Copying :/^Memory/
  973. . Language: Don’t panic :/^Errors/
  974. . Language: Goroutine lifetimes :/^Concurrency/
  975. . Language: Interfaces :/^Interface/
  976. . Language: Generics :/^Generics/
  977. . Language: Pass values :/^Memory/
  978. . Language: Receiver type :/^Memory/
  979. . Language: switch and break :/^Language/
  980. . Language: Synchronous functions :/^Concurrency/
  981. . Language: Type aliases :/^Language/
  982. . Language: Use %q :/^Language/
  983. . Language: Use any :/^Language/
  984. . Common libraries: Flags :/^Stdlib/
  985. . Common libraries: Logging :/^Stdlib/
  986. . Common libraries: Contexts :/^Concurrency:.Context/
  987. . Common libraries: crypto/rand :/^Stdlib/
  988. . Useful test failures :/^Testing/
  989. . Test structure :/^Testing/
  990. . Non-decisions
  991.  
  992. Google Best Practices
  993.  
  994. http://google.github.io/styleguide/go/best-practices
  995.  
  996. . Naming: Function and method names
  997. . Naming: Test double packages and types
  998. . Naming: Shadowing
  999. . Naming: Util packages
  1000. . Package size
  1001. . Imports
  1002. . Error handling :/^Errors/
  1003. . Documentation: Conventions
  1004. . Documentation: Preview
  1005. . Documentation: Godoc formatting
  1006. . Documentation: Signal boosting
  1007. . Variable declarations :/^Language/
  1008. . Function argument lists :/^Language/
  1009. . Complex command-line interfaces :/^Demo/
  1010. . Tests :/^Testing/
  1011. . String concatenation :/^String/
  1012. . Global state
  1013.  
  1014. References
  1015. . Self-referential functions and the design of options
  1016. http://commandcenter.blogspot.com/2014/01/self-referential-functions-and-design.html
  1017. . Functional options for friendly APIs
  1018. http://youtu.be/24lFtGHWxAQ
  1019. http://dave.cheney.net/2014/10/17/functional-options-for-friendly-apis
  1020.  
Advertisement
Add Comment
Please, Sign In to add comment