Skip to content

Instantly share code, notes, and snippets.

@andriisoldatenko
Created September 5, 2019 14:28
Show Gist options
  • Save andriisoldatenko/ec7e551ec5c8d0d10d446e87909cc723 to your computer and use it in GitHub Desktop.
Save andriisoldatenko/ec7e551ec5c8d0d10d446e87909cc723 to your computer and use it in GitHub Desktop.
{
"kind": "youtube#videoListResponse",
"etag": "\"8jEFfXBrqiSrcF6Ee7MQuz8XuAM/CCMKJ4Yog67Jfq11ExS2XxNDDQ0\"",
"pageInfo": {
"totalResults": 28,
"resultsPerPage": 28
},
"items": [
{
"kind": "youtube#video",
"etag": "\"8jEFfXBrqiSrcF6Ee7MQuz8XuAM/lmL_dEHR0dIABiMJWRkfWbboI7A\"",
"id": "WaD8sNqroAw",
"snippet": {
"publishedAt": "2019-08-27T14:23:45.000Z",
"channelId": "UCx9QVEApa5BKLw9r8cnOFEA",
"title": "GopherCon 2019: Michael McLoughlin - Better x86 Assembly Generation from Go",
"description": "This talk will equip you with the tools to safely write lightning fast assembly functions for Go. We will introduce Go assembly and the role it plays in the Go ecosystem, promote best practices for assembly development and demonstrate how code generation tools can manage complexity in large assembly projects.\n\nIn the Go standard library and beyond, assembly language is used to provide access to architecture and OS-specific features, to accelerate hot loops in scientific code, and provide high-performance cryptographic routines. For these specific applications correctness is paramount, yet assembly functions can be painstaking to write and nearly impossible to review; the subtle crypto/elliptic bug in 6 lines of a 2000+ line assembly file led to CVE-2017-8932 and should serve as a warning to those entering this game. Due to this, code generation tools have gained traction in other languages.\n\nThis talk will demonstrate the use of code generation for Go assembly, with a particular focus on the avo library for x86 assembly generation. Such techniques simplify assembly functions by enabling the use of Go control structures, offering automatic register allocation and handling interaction with Go types. Using examples, we will demonstrate how these methods help produce maintainable high-performance functions. Intermediate to advanced Gophers will leave with greater confidence in the world of Go assembly.",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/WaD8sNqroAw/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/WaD8sNqroAw/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/WaD8sNqroAw/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/WaD8sNqroAw/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/WaD8sNqroAw/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "Gopher Academy",
"tags": [
"golang",
"gophercon",
"programming"
],
"categoryId": "28",
"liveBroadcastContent": "none",
"defaultLanguage": "en",
"localized": {
"title": "GopherCon 2019: Michael McLoughlin - Better x86 Assembly Generation from Go",
"description": "This talk will equip you with the tools to safely write lightning fast assembly functions for Go. We will introduce Go assembly and the role it plays in the Go ecosystem, promote best practices for assembly development and demonstrate how code generation tools can manage complexity in large assembly projects.\n\nIn the Go standard library and beyond, assembly language is used to provide access to architecture and OS-specific features, to accelerate hot loops in scientific code, and provide high-performance cryptographic routines. For these specific applications correctness is paramount, yet assembly functions can be painstaking to write and nearly impossible to review; the subtle crypto/elliptic bug in 6 lines of a 2000+ line assembly file led to CVE-2017-8932 and should serve as a warning to those entering this game. Due to this, code generation tools have gained traction in other languages.\n\nThis talk will demonstrate the use of code generation for Go assembly, with a particular focus on the avo library for x86 assembly generation. Such techniques simplify assembly functions by enabling the use of Go control structures, offering automatic register allocation and handling interaction with Go types. Using examples, we will demonstrate how these methods help produce maintainable high-performance functions. Intermediate to advanced Gophers will leave with greater confidence in the world of Go assembly."
},
"defaultAudioLanguage": "en"
},
"statistics": {
"viewCount": "2250",
"likeCount": "33",
"dislikeCount": "0",
"favoriteCount": "0",
"commentCount": "2"
}
},
{
"kind": "youtube#video",
"etag": "\"8jEFfXBrqiSrcF6Ee7MQuz8XuAM/XInbo9euSoivMmLzmdh-GjjnnGY\"",
"id": "O_R7Nwsix1c",
"snippet": {
"publishedAt": "2019-08-27T14:23:45.000Z",
"channelId": "UCx9QVEApa5BKLw9r8cnOFEA",
"title": "GopherCon 2019: Yusuke Miyake - Optimization for Number of goroutines Using Feedback Control",
"description": "The design for the number of concurrency is important to achieve both speed and stability. To give a good performance without depending on platform and load conditions, it’s desirable for the number to be dynamic and rapidly controlled. In this talk, I will propose an architecture to solve this by utilizing feedback control.",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/O_R7Nwsix1c/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/O_R7Nwsix1c/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/O_R7Nwsix1c/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/O_R7Nwsix1c/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/O_R7Nwsix1c/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "Gopher Academy",
"tags": [
"golang",
"gophercon",
"programming"
],
"categoryId": "28",
"liveBroadcastContent": "none",
"localized": {
"title": "GopherCon 2019: Yusuke Miyake - Optimization for Number of goroutines Using Feedback Control",
"description": "The design for the number of concurrency is important to achieve both speed and stability. To give a good performance without depending on platform and load conditions, it’s desirable for the number to be dynamic and rapidly controlled. In this talk, I will propose an architecture to solve this by utilizing feedback control."
},
"defaultAudioLanguage": "en"
},
"statistics": {
"viewCount": "887",
"likeCount": "17",
"dislikeCount": "7",
"favoriteCount": "0",
"commentCount": "0"
}
},
{
"kind": "youtube#video",
"etag": "\"8jEFfXBrqiSrcF6Ee7MQuz8XuAM/QKO8vV57CdA3oteSRi2JU0ZEvDg\"",
"id": "kNHo788oO5Y",
"snippet": {
"publishedAt": "2019-08-27T14:23:45.000Z",
"channelId": "UCx9QVEApa5BKLw9r8cnOFEA",
"title": "GopherCon 2019: Russ Cox - On the Path to Go 2",
"description": "We're on the road to Go 2. But where exactly are we? Where are we headed? Come find out.",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/kNHo788oO5Y/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/kNHo788oO5Y/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/kNHo788oO5Y/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/kNHo788oO5Y/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/kNHo788oO5Y/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "Gopher Academy",
"tags": [
"golang",
"gophercon",
"programming"
],
"categoryId": "28",
"liveBroadcastContent": "none",
"localized": {
"title": "GopherCon 2019: Russ Cox - On the Path to Go 2",
"description": "We're on the road to Go 2. But where exactly are we? Where are we headed? Come find out."
},
"defaultAudioLanguage": "en"
},
"statistics": {
"viewCount": "4562",
"likeCount": "121",
"dislikeCount": "3",
"favoriteCount": "0",
"commentCount": "2"
}
},
{
"kind": "youtube#video",
"etag": "\"8jEFfXBrqiSrcF6Ee7MQuz8XuAM/iHekJ3UDWeIE4ImE7G7H_JjCMUY\"",
"id": "EFJfdWzBHwE",
"snippet": {
"publishedAt": "2019-08-27T14:23:45.000Z",
"channelId": "UCx9QVEApa5BKLw9r8cnOFEA",
"title": "GopherCon 2019: Rebecca Stambler - Go, pls stop breaking my editor",
"description": "The Go community has built many amazing tools to improve the Go developer experience. However, when a maintainer disappears or a new Go release wreaks havoc, the Go development experience becomes frustrating and complicated. This talk will cover the details behind a new tool to solve these issues: gopls (pronounced “go please”). This tool is currently in development by the Go team and community, and it will ultimately serve as the backend for your Go editor.",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/EFJfdWzBHwE/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/EFJfdWzBHwE/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/EFJfdWzBHwE/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/EFJfdWzBHwE/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/EFJfdWzBHwE/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "Gopher Academy",
"tags": [
"golang",
"gophercon",
"programming"
],
"categoryId": "28",
"liveBroadcastContent": "none",
"localized": {
"title": "GopherCon 2019: Rebecca Stambler - Go, pls stop breaking my editor",
"description": "The Go community has built many amazing tools to improve the Go developer experience. However, when a maintainer disappears or a new Go release wreaks havoc, the Go development experience becomes frustrating and complicated. This talk will cover the details behind a new tool to solve these issues: gopls (pronounced “go please”). This tool is currently in development by the Go team and community, and it will ultimately serve as the backend for your Go editor."
},
"defaultAudioLanguage": "en"
},
"statistics": {
"viewCount": "1509",
"likeCount": "46",
"dislikeCount": "1",
"favoriteCount": "0",
"commentCount": "1"
}
},
{
"kind": "youtube#video",
"etag": "\"8jEFfXBrqiSrcF6Ee7MQuz8XuAM/VrVeMeQyAEUXcbYSM-Go1Q18sCY\"",
"id": "us9hfJqncV8",
"snippet": {
"publishedAt": "2019-08-27T14:23:45.000Z",
"channelId": "UCx9QVEApa5BKLw9r8cnOFEA",
"title": "GopherCon 2019: Patrick Hawley - Controlling the go runtime",
"description": "Sometimes we need to tell the go runtime what to do. This talk explains how to control the runtime, why we should, and describes two new ways to control it better.",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/us9hfJqncV8/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/us9hfJqncV8/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/us9hfJqncV8/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/us9hfJqncV8/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/us9hfJqncV8/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "Gopher Academy",
"tags": [
"golang",
"gophercon",
"programming"
],
"categoryId": "28",
"liveBroadcastContent": "none",
"localized": {
"title": "GopherCon 2019: Patrick Hawley - Controlling the go runtime",
"description": "Sometimes we need to tell the go runtime what to do. This talk explains how to control the runtime, why we should, and describes two new ways to control it better."
},
"defaultAudioLanguage": "en"
},
"statistics": {
"viewCount": "849",
"likeCount": "18",
"dislikeCount": "1",
"favoriteCount": "0",
"commentCount": "3"
}
},
{
"kind": "youtube#video",
"etag": "\"8jEFfXBrqiSrcF6Ee7MQuz8XuAM/nSr2Z7YzfHHdQZgEtgY6ZqRoT4E\"",
"id": "VwPQKS9Njv0",
"snippet": {
"publishedAt": "2019-08-27T14:23:45.000Z",
"channelId": "UCx9QVEApa5BKLw9r8cnOFEA",
"title": "GopherCon 2019: Eric Chiang - PKI for Gophers",
"description": "TLS is easy, PKI is hard. Learn about Go primitives for generating certificate hierarchies, instrumenting mTLS, hardware backed keys, and public infrastructure like Let’s Encrypt and Certificate Transparency. Along the way we’ll discuss roots of trust for automated issuance, nuances of revocation, and encourage you to roll your own PKI.",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/VwPQKS9Njv0/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/VwPQKS9Njv0/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/VwPQKS9Njv0/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/VwPQKS9Njv0/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/VwPQKS9Njv0/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "Gopher Academy",
"tags": [
"golang",
"gophercon",
"programming"
],
"categoryId": "28",
"liveBroadcastContent": "none",
"localized": {
"title": "GopherCon 2019: Eric Chiang - PKI for Gophers",
"description": "TLS is easy, PKI is hard. Learn about Go primitives for generating certificate hierarchies, instrumenting mTLS, hardware backed keys, and public infrastructure like Let’s Encrypt and Certificate Transparency. Along the way we’ll discuss roots of trust for automated issuance, nuances of revocation, and encourage you to roll your own PKI."
},
"defaultAudioLanguage": "en"
},
"statistics": {
"viewCount": "747",
"likeCount": "18",
"dislikeCount": "0",
"favoriteCount": "0",
"commentCount": "1"
}
},
{
"kind": "youtube#video",
"etag": "\"8jEFfXBrqiSrcF6Ee7MQuz8XuAM/76wVVw2bibOV6qP_TgALA27sDz8\"",
"id": "cQgpNkKi9aA",
"snippet": {
"publishedAt": "2019-08-27T14:23:45.000Z",
"channelId": "UCx9QVEApa5BKLw9r8cnOFEA",
"title": "GopherCon 2019: Oliver Stenbom - Contributing to the os Package: How Deep Do You Go?",
"description": "When the core of a language fails you, and you can’t remove a file, how can you fix it? Oliver will share his contribution journey from bug to merge in a crucial part of Golang: the os package. Discover how Golang manages platform independence and how even novices can contribute Unix system calls.",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/cQgpNkKi9aA/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/cQgpNkKi9aA/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/cQgpNkKi9aA/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/cQgpNkKi9aA/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/cQgpNkKi9aA/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "Gopher Academy",
"tags": [
"golang",
"gophercon",
"programming"
],
"categoryId": "28",
"liveBroadcastContent": "none",
"localized": {
"title": "GopherCon 2019: Oliver Stenbom - Contributing to the os Package: How Deep Do You Go?",
"description": "When the core of a language fails you, and you can’t remove a file, how can you fix it? Oliver will share his contribution journey from bug to merge in a crucial part of Golang: the os package. Discover how Golang manages platform independence and how even novices can contribute Unix system calls."
},
"defaultAudioLanguage": "en"
},
"statistics": {
"viewCount": "467",
"likeCount": "14",
"dislikeCount": "0",
"favoriteCount": "0",
"commentCount": "0"
}
},
{
"kind": "youtube#video",
"etag": "\"8jEFfXBrqiSrcF6Ee7MQuz8XuAM/7N1zdcJjdXBdV5KFAiaExOlTVT4\"",
"id": "pGR3r0UhoS8",
"snippet": {
"publishedAt": "2019-08-27T14:23:46.000Z",
"channelId": "UCx9QVEApa5BKLw9r8cnOFEA",
"title": "GopherCon 2019: Gabbi Fisher - Socket to Me: Where do Sockets Live in Go?",
"description": "Have you ever used HTTP server functions surfaced by the net/http package? Or gone down a couple of network levels and used TCP and UDP Listeners? Sockets are the secret sauce underlying these networking tools in Go. While Go abstracts away sockets, there are circumstances where knowing about sockets and how to configure them is instrumental. This talk will explain the fundamentals of socket-level programming in Go, and how and where to use it.",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/pGR3r0UhoS8/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/pGR3r0UhoS8/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/pGR3r0UhoS8/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/pGR3r0UhoS8/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/pGR3r0UhoS8/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "Gopher Academy",
"tags": [
"golang",
"gophercon",
"programming"
],
"categoryId": "28",
"liveBroadcastContent": "none",
"localized": {
"title": "GopherCon 2019: Gabbi Fisher - Socket to Me: Where do Sockets Live in Go?",
"description": "Have you ever used HTTP server functions surfaced by the net/http package? Or gone down a couple of network levels and used TCP and UDP Listeners? Sockets are the secret sauce underlying these networking tools in Go. While Go abstracts away sockets, there are circumstances where knowing about sockets and how to configure them is instrumental. This talk will explain the fundamentals of socket-level programming in Go, and how and where to use it."
},
"defaultAudioLanguage": "en"
},
"statistics": {
"viewCount": "1131",
"likeCount": "62",
"dislikeCount": "0",
"favoriteCount": "0",
"commentCount": "5"
}
},
{
"kind": "youtube#video",
"etag": "\"8jEFfXBrqiSrcF6Ee7MQuz8XuAM/iLGrfpk3XdU_fRHoW4qkumCtvfg\"",
"id": "nok0aYiGiYA",
"snippet": {
"publishedAt": "2019-08-27T14:23:46.000Z",
"channelId": "UCx9QVEApa5BKLw9r8cnOFEA",
"title": "GopherCon 2019: Dave Cheney - Two Go Programs, Three Different Profiling Techniques",
"description": "Go, being a relatively recent statically typed, compiled language, is known to produce efficient programs. But writing a program in Go is not sufficient for good performance.\n\nIn this tutorial Dave will demonstrate three different methods of profiling Go programs to diagnose, then improve, the performance of several programs. By the conclusion, you’ll know how to profile the cpu and memory usage of a Go program, understand how to examine an execution trace, and come to grips with the reality of Amdahl’s Law.",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/nok0aYiGiYA/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/nok0aYiGiYA/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/nok0aYiGiYA/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/nok0aYiGiYA/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/nok0aYiGiYA/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "Gopher Academy",
"tags": [
"golang",
"gophercon",
"programming"
],
"categoryId": "28",
"liveBroadcastContent": "none",
"localized": {
"title": "GopherCon 2019: Dave Cheney - Two Go Programs, Three Different Profiling Techniques",
"description": "Go, being a relatively recent statically typed, compiled language, is known to produce efficient programs. But writing a program in Go is not sufficient for good performance.\n\nIn this tutorial Dave will demonstrate three different methods of profiling Go programs to diagnose, then improve, the performance of several programs. By the conclusion, you’ll know how to profile the cpu and memory usage of a Go program, understand how to examine an execution trace, and come to grips with the reality of Amdahl’s Law."
},
"defaultAudioLanguage": "en"
},
"statistics": {
"viewCount": "2534",
"likeCount": "89",
"dislikeCount": "1",
"favoriteCount": "0",
"commentCount": "4"
}
},
{
"kind": "youtube#video",
"etag": "\"8jEFfXBrqiSrcF6Ee7MQuz8XuAM/iKnG2we9O19XP3jG7EdNHyonG90\"",
"id": "eMz0vni6PAw",
"snippet": {
"publishedAt": "2019-08-27T14:23:45.000Z",
"channelId": "UCx9QVEApa5BKLw9r8cnOFEA",
"title": "GopherCon 2019: Carolyn Van Slyck - Design Command-Line Tools People Love",
"description": "It is a joy to build command-line tools that are not only easy to learn, but that other developers are willing to maintain. Often a team's engineering efforts are spent on the backend, while the cli doesn't receive the same level of attention. This can result in hard-to-test tools and dumping maintenance of them to whoever most recently joined the team.\n\nLearn how to take full advantage of popular Go libraries, structure your Go code to improve reuse and testability, publish binaries, and of course design your commands to be user friendly.",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/eMz0vni6PAw/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/eMz0vni6PAw/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/eMz0vni6PAw/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/eMz0vni6PAw/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/eMz0vni6PAw/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "Gopher Academy",
"tags": [
"golang",
"gophercon",
"programming"
],
"categoryId": "28",
"liveBroadcastContent": "none",
"localized": {
"title": "GopherCon 2019: Carolyn Van Slyck - Design Command-Line Tools People Love",
"description": "It is a joy to build command-line tools that are not only easy to learn, but that other developers are willing to maintain. Often a team's engineering efforts are spent on the backend, while the cli doesn't receive the same level of attention. This can result in hard-to-test tools and dumping maintenance of them to whoever most recently joined the team.\n\nLearn how to take full advantage of popular Go libraries, structure your Go code to improve reuse and testability, publish binaries, and of course design your commands to be user friendly."
},
"defaultAudioLanguage": "en"
},
"statistics": {
"viewCount": "1370",
"likeCount": "39",
"dislikeCount": "3",
"favoriteCount": "0",
"commentCount": "0"
}
},
{
"kind": "youtube#video",
"etag": "\"8jEFfXBrqiSrcF6Ee7MQuz8XuAM/2oEEo8VgfHERCvf7itf2xiNj8iY\"",
"id": "xknPvUmeUTQ",
"snippet": {
"publishedAt": "2019-08-27T14:23:45.000Z",
"channelId": "UCx9QVEApa5BKLw9r8cnOFEA",
"title": "GopherCon 2019: Kris Brandow - The Gopher's Manual of Style",
"description": "Our industry has borrowed ideas and practices from a range of industries to improve the design and production of software. In this talk, we’ll look to the publishing industry for ways to improve software development for our industry and within the Go community.",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/xknPvUmeUTQ/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/xknPvUmeUTQ/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/xknPvUmeUTQ/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/xknPvUmeUTQ/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/xknPvUmeUTQ/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "Gopher Academy",
"tags": [
"golang",
"gophercon",
"programming"
],
"categoryId": "28",
"liveBroadcastContent": "none",
"localized": {
"title": "GopherCon 2019: Kris Brandow - The Gopher's Manual of Style",
"description": "Our industry has borrowed ideas and practices from a range of industries to improve the design and production of software. In this talk, we’ll look to the publishing industry for ways to improve software development for our industry and within the Go community."
},
"defaultAudioLanguage": "en"
},
"statistics": {
"viewCount": "660",
"likeCount": "9",
"dislikeCount": "4",
"favoriteCount": "0",
"commentCount": "0"
}
},
{
"kind": "youtube#video",
"etag": "\"8jEFfXBrqiSrcF6Ee7MQuz8XuAM/a9rXWXOgPAojDZJgoAC8CiGw7Jo\"",
"id": "hIWQeTL4gpQ",
"snippet": {
"publishedAt": "2019-08-27T14:23:46.000Z",
"channelId": "UCx9QVEApa5BKLw9r8cnOFEA",
"title": "GopherCon 2019: Jessica Lucci - You Can't Go Your Own Way",
"description": "Ever feel like moving code bases, even in the same language, can feel like working at an entirely new company? Over the past year, GitHub has been working on standardizing its’ usage of Go to mitigate issues like this. This talk will cover challenges faced and lessons learned throughout this process.",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/hIWQeTL4gpQ/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/hIWQeTL4gpQ/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/hIWQeTL4gpQ/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/hIWQeTL4gpQ/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/hIWQeTL4gpQ/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "Gopher Academy",
"tags": [
"golang",
"gophercon",
"programming"
],
"categoryId": "28",
"liveBroadcastContent": "none",
"localized": {
"title": "GopherCon 2019: Jessica Lucci - You Can't Go Your Own Way",
"description": "Ever feel like moving code bases, even in the same language, can feel like working at an entirely new company? Over the past year, GitHub has been working on standardizing its’ usage of Go to mitigate issues like this. This talk will cover challenges faced and lessons learned throughout this process."
},
"defaultAudioLanguage": "en"
},
"statistics": {
"viewCount": "1072",
"likeCount": "8",
"dislikeCount": "1",
"favoriteCount": "0",
"commentCount": "1"
}
},
{
"kind": "youtube#video",
"etag": "\"8jEFfXBrqiSrcF6Ee7MQuz8XuAM/Bzi_2LjygYrkda8F8NuvHAhMPzo\"",
"id": "KqTySYYhPUE",
"snippet": {
"publishedAt": "2019-08-27T14:23:46.000Z",
"channelId": "UCx9QVEApa5BKLw9r8cnOFEA",
"title": "GopherCon 2019: Katie Hockman - Go Module Proxy: Life of a Query",
"description": "The Go team has built a module mirror and checksum database, which adds reliability and security to the Go ecosystem. This talk discusses the technical details of authenticated module proxies, following the journey of a request through the go command, proxy, and checksum database.",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/KqTySYYhPUE/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/KqTySYYhPUE/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/KqTySYYhPUE/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/KqTySYYhPUE/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/KqTySYYhPUE/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "Gopher Academy",
"tags": [
"golang",
"gophercon",
"programming"
],
"categoryId": "28",
"liveBroadcastContent": "none",
"localized": {
"title": "GopherCon 2019: Katie Hockman - Go Module Proxy: Life of a Query",
"description": "The Go team has built a module mirror and checksum database, which adds reliability and security to the Go ecosystem. This talk discusses the technical details of authenticated module proxies, following the journey of a request through the go command, proxy, and checksum database."
},
"defaultAudioLanguage": "en"
},
"statistics": {
"viewCount": "1534",
"likeCount": "35",
"dislikeCount": "2",
"favoriteCount": "0",
"commentCount": "1"
}
},
{
"kind": "youtube#video",
"etag": "\"8jEFfXBrqiSrcF6Ee7MQuz8XuAM/HCVrz_M_nFzcGjuvjOIxMQgqor8\"",
"id": "h0s8CWpIKdg",
"snippet": {
"publishedAt": "2019-08-27T14:23:46.000Z",
"channelId": "UCx9QVEApa5BKLw9r8cnOFEA",
"title": "GopherCon 2019: Chris Hines - Death by 3,000 Timers: Streaming Video-on-Demand for Cable TV",
"description": "Can Go handle soft real-time applications? Learn about the challenges my team overcame to deliver video-on-demand MPEG streams to millions of cable TV customers using pure Go. Along the way we’ll dig deeper into how Go manages timers and goroutine scheduling.",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/h0s8CWpIKdg/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/h0s8CWpIKdg/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/h0s8CWpIKdg/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/h0s8CWpIKdg/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/h0s8CWpIKdg/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "Gopher Academy",
"tags": [
"golang",
"gophercon",
"programming"
],
"categoryId": "28",
"liveBroadcastContent": "none",
"localized": {
"title": "GopherCon 2019: Chris Hines - Death by 3,000 Timers: Streaming Video-on-Demand for Cable TV",
"description": "Can Go handle soft real-time applications? Learn about the challenges my team overcame to deliver video-on-demand MPEG streams to millions of cable TV customers using pure Go. Along the way we’ll dig deeper into how Go manages timers and goroutine scheduling."
},
"defaultAudioLanguage": "en"
},
"statistics": {
"viewCount": "1687",
"likeCount": "91",
"dislikeCount": "0",
"favoriteCount": "0",
"commentCount": "2"
}
},
{
"kind": "youtube#video",
"etag": "\"8jEFfXBrqiSrcF6Ee7MQuz8XuAM/66sbxDYbJWoAsbw1TdwqK3Z4uZg\"",
"id": "WzgLqE-3IhY",
"snippet": {
"publishedAt": "2019-08-27T14:23:46.000Z",
"channelId": "UCx9QVEApa5BKLw9r8cnOFEA",
"title": "GopherCon 2019: Ian Lance Taylor -Generics in Go",
"description": "Advantages and requirements for generics in Go.",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/WzgLqE-3IhY/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/WzgLqE-3IhY/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/WzgLqE-3IhY/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/WzgLqE-3IhY/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/WzgLqE-3IhY/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "Gopher Academy",
"tags": [
"golang",
"gophercon",
"programming"
],
"categoryId": "28",
"liveBroadcastContent": "none",
"localized": {
"title": "GopherCon 2019: Ian Lance Taylor -Generics in Go",
"description": "Advantages and requirements for generics in Go."
},
"defaultAudioLanguage": "en"
},
"statistics": {
"viewCount": "3204",
"likeCount": "83",
"dislikeCount": "6",
"favoriteCount": "0",
"commentCount": "14"
}
},
{
"kind": "youtube#video",
"etag": "\"8jEFfXBrqiSrcF6Ee7MQuz8XuAM/_1SZRmfa0nhgBKuEhT7k8mXM9dQ\"",
"id": "Dxs4LGjmEL4",
"snippet": {
"publishedAt": "2019-08-27T14:23:46.000Z",
"channelId": "UCx9QVEApa5BKLw9r8cnOFEA",
"title": "GopherCon 2019: Johan Brandhorst - Get Going with WebAssembly",
"description": "Curious about WebAssembly and how we can use it with Go? This tutorial will introduce the technology, show how to get started with WebAssembly and Go, discuss what is possible today and what will be possible tomorrow.",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/Dxs4LGjmEL4/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/Dxs4LGjmEL4/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/Dxs4LGjmEL4/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/Dxs4LGjmEL4/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/Dxs4LGjmEL4/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "Gopher Academy",
"tags": [
"golang",
"gophercon",
"programming"
],
"categoryId": "28",
"liveBroadcastContent": "none",
"localized": {
"title": "GopherCon 2019: Johan Brandhorst - Get Going with WebAssembly",
"description": "Curious about WebAssembly and how we can use it with Go? This tutorial will introduce the technology, show how to get started with WebAssembly and Go, discuss what is possible today and what will be possible tomorrow."
},
"defaultAudioLanguage": "en"
},
"statistics": {
"viewCount": "1114",
"likeCount": "27",
"dislikeCount": "1",
"favoriteCount": "0",
"commentCount": "1"
}
},
{
"kind": "youtube#video",
"etag": "\"8jEFfXBrqiSrcF6Ee7MQuz8XuAM/TIOMxg1cpYaVk8mvoZmoEWE8Vms\"",
"id": "WDbbIS7m9bU",
"snippet": {
"publishedAt": "2019-08-27T14:23:46.000Z",
"channelId": "UCx9QVEApa5BKLw9r8cnOFEA",
"title": "GopherCon 2019: Aaron Schlesinger - The Athens Project",
"description": "Go 1.11 was a big release for all of us because we got a new package management system called modules built right into the go CLI. If you tried out vgo before 1.11, you'll be familiar with modules. There’s some really cool stuff in there, but there's one piece that a lot of us missed that we need to pay special attention to: the download API.\n\nWe used to download dependency code directly from GitHub, and that led to major problems for the community. Over time, heavily used packages would change owners or disappear completely, leaving everyone who used it out in the cold. But now we can build federated module proxies. These are servers that download code from GitHub / GitLab / etc..., save code in their own storage, and Gophers fetch their dependencies from them. This new development lets us, as a community, treat our dependencies as immutable artifacts, free up the package owner to focus on development, and separate the code from the released module artifact.\n\nEven better, our proxies can serve these module artifacts to Gophers from CDNs to speed up their builds everywhere. The Athens project is leading the way toward this new world, and it’s a huge step forward for our community!\n\nIn this talk, I’ll start with a brief history of broken dependencies both inside and outside our community. Then, I'll summarize why proxies matter, how they help solve broken dependencies today, and where they're still lacking. Finally, I’ll focus specifically on how Athens solves many of those problems, and I'll show a live demo of Athens in action!\n\nYou’ll walk away understanding why module proxies and Athens matter, where they're already being used, what this new technology actually fixes, how it makes your life easier (without changing your current workflow much!), and how you can start using Athens right away with very little work.\n\nYou’ll also learn why you might want to set up your own Athens server and how to do it. And as an added bonus, you’ll be able to delete your vendor directories and break out of the GOPATH if that’s your thing!",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/WDbbIS7m9bU/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/WDbbIS7m9bU/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/WDbbIS7m9bU/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/WDbbIS7m9bU/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/WDbbIS7m9bU/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "Gopher Academy",
"tags": [
"golang",
"gophercon",
"programming",
"gomods"
],
"categoryId": "28",
"liveBroadcastContent": "none",
"localized": {
"title": "GopherCon 2019: Aaron Schlesinger - The Athens Project",
"description": "Go 1.11 was a big release for all of us because we got a new package management system called modules built right into the go CLI. If you tried out vgo before 1.11, you'll be familiar with modules. There’s some really cool stuff in there, but there's one piece that a lot of us missed that we need to pay special attention to: the download API.\n\nWe used to download dependency code directly from GitHub, and that led to major problems for the community. Over time, heavily used packages would change owners or disappear completely, leaving everyone who used it out in the cold. But now we can build federated module proxies. These are servers that download code from GitHub / GitLab / etc..., save code in their own storage, and Gophers fetch their dependencies from them. This new development lets us, as a community, treat our dependencies as immutable artifacts, free up the package owner to focus on development, and separate the code from the released module artifact.\n\nEven better, our proxies can serve these module artifacts to Gophers from CDNs to speed up their builds everywhere. The Athens project is leading the way toward this new world, and it’s a huge step forward for our community!\n\nIn this talk, I’ll start with a brief history of broken dependencies both inside and outside our community. Then, I'll summarize why proxies matter, how they help solve broken dependencies today, and where they're still lacking. Finally, I’ll focus specifically on how Athens solves many of those problems, and I'll show a live demo of Athens in action!\n\nYou’ll walk away understanding why module proxies and Athens matter, where they're already being used, what this new technology actually fixes, how it makes your life easier (without changing your current workflow much!), and how you can start using Athens right away with very little work.\n\nYou’ll also learn why you might want to set up your own Athens server and how to do it. And as an added bonus, you’ll be able to delete your vendor directories and break out of the GOPATH if that’s your thing!"
},
"defaultAudioLanguage": "en"
},
"statistics": {
"viewCount": "602",
"likeCount": "11",
"dislikeCount": "0",
"favoriteCount": "0",
"commentCount": "1"
}
},
{
"kind": "youtube#video",
"etag": "\"8jEFfXBrqiSrcF6Ee7MQuz8XuAM/eFivjmHscFfxHaOTfvT7MBNKS_0\"",
"id": "9D6eWP4peYM",
"snippet": {
"publishedAt": "2019-08-27T14:23:45.000Z",
"channelId": "UCx9QVEApa5BKLw9r8cnOFEA",
"title": "GopherCon 2019: Elias Naur - Portable, Immediate Mode GUI Programs for Mobile and Desktop in 100% Go",
"description": "Gio is a new open source Go library for writing immediate mode GUI programs that run on all the major platforms: Android, iOS/tvOS, macOS, Linux, Windows. The talk will cover Gio’s unusual design and how it achieves simplicity, portability and performance.",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/9D6eWP4peYM/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/9D6eWP4peYM/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/9D6eWP4peYM/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/9D6eWP4peYM/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/9D6eWP4peYM/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "Gopher Academy",
"tags": [
"golang",
"gophercon",
"programming"
],
"categoryId": "28",
"liveBroadcastContent": "none",
"localized": {
"title": "GopherCon 2019: Elias Naur - Portable, Immediate Mode GUI Programs for Mobile and Desktop in 100% Go",
"description": "Gio is a new open source Go library for writing immediate mode GUI programs that run on all the major platforms: Android, iOS/tvOS, macOS, Linux, Windows. The talk will cover Gio’s unusual design and how it achieves simplicity, portability and performance."
},
"defaultAudioLanguage": "en"
},
"statistics": {
"viewCount": "3648",
"likeCount": "136",
"dislikeCount": "0",
"favoriteCount": "0",
"commentCount": "7"
}
},
{
"kind": "youtube#video",
"etag": "\"8jEFfXBrqiSrcF6Ee7MQuz8XuAM/mL3khIBSuLaeC9EjL1cKgirBycg\"",
"id": "1U-Gzz4TYP0",
"snippet": {
"publishedAt": "2019-08-27T14:23:46.000Z",
"channelId": "UCx9QVEApa5BKLw9r8cnOFEA",
"title": "GopherCon 2019: Denis Isaev - Go Linters: Myths and Best Practices",
"description": "Go contains over 50 different linters. For linter adepts, I’ll reveal how to use their full power, as well as little-known tips and tricks to get ahead. For linters beginners, this presentation explains what they are, the benefit of their use, and the best way to introduce them into a workflow. The following topics will be covered:\n\nCommon myths about linters in Go\nHow to introduce dozens of linters into any project in just one day\nAn overview of 25 linters with examples: staticcheck, go-critic, etc.\nGolangci-lint and gometalinter\nThis tutorial is based on my own experiences of introducing gometalinter and golangci-lint to the two largest internet companies in Russia. I have also communicated with hundreds of golangci-lint users, helping them understand how linters can best help them and how to best use them in the Go projects.",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/1U-Gzz4TYP0/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/1U-Gzz4TYP0/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/1U-Gzz4TYP0/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/1U-Gzz4TYP0/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/1U-Gzz4TYP0/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "Gopher Academy",
"tags": [
"golang",
"gophercon",
"programming"
],
"categoryId": "28",
"liveBroadcastContent": "none",
"localized": {
"title": "GopherCon 2019: Denis Isaev - Go Linters: Myths and Best Practices",
"description": "Go contains over 50 different linters. For linter adepts, I’ll reveal how to use their full power, as well as little-known tips and tricks to get ahead. For linters beginners, this presentation explains what they are, the benefit of their use, and the best way to introduce them into a workflow. The following topics will be covered:\n\nCommon myths about linters in Go\nHow to introduce dozens of linters into any project in just one day\nAn overview of 25 linters with examples: staticcheck, go-critic, etc.\nGolangci-lint and gometalinter\nThis tutorial is based on my own experiences of introducing gometalinter and golangci-lint to the two largest internet companies in Russia. I have also communicated with hundreds of golangci-lint users, helping them understand how linters can best help them and how to best use them in the Go projects."
},
"defaultAudioLanguage": "en"
},
"statistics": {
"viewCount": "695",
"likeCount": "25",
"dislikeCount": "0",
"favoriteCount": "0",
"commentCount": "0"
}
},
{
"kind": "youtube#video",
"etag": "\"8jEFfXBrqiSrcF6Ee7MQuz8XuAM/oprirKHOME2TxPanqhuRj_5WRh8\"",
"id": "JhdL5AkH-AQ",
"snippet": {
"publishedAt": "2019-08-27T14:23:45.000Z",
"channelId": "UCx9QVEApa5BKLw9r8cnOFEA",
"title": "GopherCon 2019: Jonathan Amsterdam - Detecting Incompatible API Changes",
"description": "Detecting whether your package’s API is backwards-compatible is an important problem. You want to know whether your change could break existing users, or whether you’re just adding new features. In this tutorial, I’ll begin by discussing what we mean by API compatibility. I’ll talk about how computing it is harder than it might seem at first, and I’ll describe the algorithm I used to write my apidiff tool. Along the way, I’ll provide tips on how to future-proof your own code against API breakage. Listeners will emerge with a new appreciation for and a deeper understanding of the Go language, as well as a sense of how to build tools like this one.",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/JhdL5AkH-AQ/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/JhdL5AkH-AQ/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/JhdL5AkH-AQ/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/JhdL5AkH-AQ/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/JhdL5AkH-AQ/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "Gopher Academy",
"tags": [
"golang",
"gophercon",
"programming"
],
"categoryId": "28",
"liveBroadcastContent": "none",
"localized": {
"title": "GopherCon 2019: Jonathan Amsterdam - Detecting Incompatible API Changes",
"description": "Detecting whether your package’s API is backwards-compatible is an important problem. You want to know whether your change could break existing users, or whether you’re just adding new features. In this tutorial, I’ll begin by discussing what we mean by API compatibility. I’ll talk about how computing it is harder than it might seem at first, and I’ll describe the algorithm I used to write my apidiff tool. Along the way, I’ll provide tips on how to future-proof your own code against API breakage. Listeners will emerge with a new appreciation for and a deeper understanding of the Go language, as well as a sense of how to build tools like this one."
},
"defaultAudioLanguage": "en"
},
"statistics": {
"viewCount": "264",
"likeCount": "7",
"dislikeCount": "0",
"favoriteCount": "0",
"commentCount": "0"
}
},
{
"kind": "youtube#video",
"etag": "\"8jEFfXBrqiSrcF6Ee7MQuz8XuAM/-RolrPXODjYco7Y2LKHJaciPkCo\"",
"id": "de9cVAx6REA",
"snippet": {
"publishedAt": "2019-08-27T14:23:46.000Z",
"channelId": "UCx9QVEApa5BKLw9r8cnOFEA",
"title": "GopherCon 2019: Jason Keene - Dynamically Instrumenting Go Programs",
"description": "Ever wanted to ask arbitrary questions about your program while it is running with minimal impact on performance? In this talk, we go beyond static instrumentation and look at specific techniques for gathering information about your programs so that you can understand what your gophers are up to!",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/de9cVAx6REA/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/de9cVAx6REA/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/de9cVAx6REA/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/de9cVAx6REA/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/de9cVAx6REA/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "Gopher Academy",
"tags": [
"golang",
"gophercon",
"programming"
],
"categoryId": "28",
"liveBroadcastContent": "none",
"localized": {
"title": "GopherCon 2019: Jason Keene - Dynamically Instrumenting Go Programs",
"description": "Ever wanted to ask arbitrary questions about your program while it is running with minimal impact on performance? In this talk, we go beyond static instrumentation and look at specific techniques for gathering information about your programs so that you can understand what your gophers are up to!"
},
"defaultAudioLanguage": "en"
},
"statistics": {
"viewCount": "656",
"likeCount": "15",
"dislikeCount": "1",
"favoriteCount": "0",
"commentCount": "0"
}
},
{
"kind": "youtube#video",
"etag": "\"8jEFfXBrqiSrcF6Ee7MQuz8XuAM/33oLhWWQ8LlUVLmjo_F2-Dg7Je0\"",
"id": "oE_vm7KeV_E",
"snippet": {
"publishedAt": "2019-08-27T14:23:46.000Z",
"channelId": "UCx9QVEApa5BKLw9r8cnOFEA",
"title": "GopherCon 2019: Daniel Marti - Optimizing Go Code Without a Blindfold",
"description": "Making code faster is exciting, and benchmarks in Go make that easy to do! Not really. Optimizing a program can be complex and requires careful consideration to do so properly. This session will demonstrate techniques and tools which are a must for any performance aficionado.",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/oE_vm7KeV_E/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/oE_vm7KeV_E/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/oE_vm7KeV_E/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/oE_vm7KeV_E/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/oE_vm7KeV_E/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "Gopher Academy",
"tags": [
"golang",
"gophercon",
"programming"
],
"categoryId": "28",
"liveBroadcastContent": "none",
"localized": {
"title": "GopherCon 2019: Daniel Marti - Optimizing Go Code Without a Blindfold",
"description": "Making code faster is exciting, and benchmarks in Go make that easy to do! Not really. Optimizing a program can be complex and requires careful consideration to do so properly. This session will demonstrate techniques and tools which are a must for any performance aficionado."
},
"defaultAudioLanguage": "en"
},
"statistics": {
"viewCount": "672",
"likeCount": "19",
"dislikeCount": "0",
"favoriteCount": "0",
"commentCount": "0"
}
},
{
"kind": "youtube#video",
"etag": "\"8jEFfXBrqiSrcF6Ee7MQuz8XuAM/ntYM3ceLxDJyJY007H9RmR3_Fpw\"",
"id": "nLskCRJOdxM",
"snippet": {
"publishedAt": "2019-08-27T14:23:45.000Z",
"channelId": "UCx9QVEApa5BKLw9r8cnOFEA",
"title": "GopherCon 2019: Elena Morozova - How Uber Goes",
"description": "Maintaining a large codebase with maximum readability and minimal overhead is hard. This is the story of how Go went from a few enthusiastic Gophers to the most popular language for microservices at Uber. Learn where we failed, and how that led us to solutions that we think are pretty darn neat!",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/nLskCRJOdxM/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/nLskCRJOdxM/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/nLskCRJOdxM/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/nLskCRJOdxM/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/nLskCRJOdxM/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "Gopher Academy",
"tags": [
"golang",
"gophercon",
"programming"
],
"categoryId": "28",
"liveBroadcastContent": "none",
"localized": {
"title": "GopherCon 2019: Elena Morozova - How Uber Goes",
"description": "Maintaining a large codebase with maximum readability and minimal overhead is hard. This is the story of how Go went from a few enthusiastic Gophers to the most popular language for microservices at Uber. Learn where we failed, and how that led us to solutions that we think are pretty darn neat!"
},
"defaultAudioLanguage": "en"
},
"statistics": {
"viewCount": "1479",
"likeCount": "45",
"dislikeCount": "1",
"favoriteCount": "0",
"commentCount": "3"
}
},
{
"kind": "youtube#video",
"etag": "\"8jEFfXBrqiSrcF6Ee7MQuz8XuAM/lBvH4tiuyO4-IO8e-eXTDhtCZu8\"",
"id": "Um3l_pr3dzw",
"snippet": {
"publishedAt": "2019-08-27T14:23:46.000Z",
"channelId": "UCx9QVEApa5BKLw9r8cnOFEA",
"title": "GopherCon 2019: Mike Seplowitz - Tracking Inter-process Dependencies",
"description": "Using a service-oriented architecture instead of a monolithic architecture adds flexibility but also increases complexity. How will we keep track of which parts of our system depend on each other?\n\n To help solve this problem, I've been working on a project to analyze Go code (using Go!) to detect inter-process dependencies in our system. In this talk, I'll give a brief introduction to the static analysis libraries I used and share a few tips about how to use them effectively. I'll discuss obstacles I encountered along the way and my attempts to overcome them.",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/Um3l_pr3dzw/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/Um3l_pr3dzw/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/Um3l_pr3dzw/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/Um3l_pr3dzw/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/Um3l_pr3dzw/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "Gopher Academy",
"tags": [
"golang",
"gophercon",
"programming"
],
"categoryId": "28",
"liveBroadcastContent": "none",
"localized": {
"title": "GopherCon 2019: Mike Seplowitz - Tracking Inter-process Dependencies",
"description": "Using a service-oriented architecture instead of a monolithic architecture adds flexibility but also increases complexity. How will we keep track of which parts of our system depend on each other?\n\n To help solve this problem, I've been working on a project to analyze Go code (using Go!) to detect inter-process dependencies in our system. In this talk, I'll give a brief introduction to the static analysis libraries I used and share a few tips about how to use them effectively. I'll discuss obstacles I encountered along the way and my attempts to overcome them."
},
"defaultAudioLanguage": "en"
},
"statistics": {
"viewCount": "281",
"likeCount": "5",
"dislikeCount": "0",
"favoriteCount": "0",
"commentCount": "0"
}
},
{
"kind": "youtube#video",
"etag": "\"8jEFfXBrqiSrcF6Ee7MQuz8XuAM/cyK6dG8kOIVT4wWxGKKbyKWeMHY\"",
"id": "rWBSMsLG8po",
"snippet": {
"publishedAt": "2019-08-27T14:23:46.000Z",
"channelId": "UCx9QVEApa5BKLw9r8cnOFEA",
"title": "GopherCon 2019: Mat Ryer - How I Write HTTP Web Services after Eight Years",
"description": "A look at how Mat Ryer builds web services after doing so for the past eight years. Extremely practical, tried and tested patterns that everybody can start using today.",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/rWBSMsLG8po/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/rWBSMsLG8po/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/rWBSMsLG8po/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/rWBSMsLG8po/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/rWBSMsLG8po/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "Gopher Academy",
"tags": [
"golang",
"gophercon",
"programming"
],
"categoryId": "28",
"liveBroadcastContent": "none",
"localized": {
"title": "GopherCon 2019: Mat Ryer - How I Write HTTP Web Services after Eight Years",
"description": "A look at how Mat Ryer builds web services after doing so for the past eight years. Extremely practical, tried and tested patterns that everybody can start using today."
},
"defaultAudioLanguage": "en"
},
"statistics": {
"viewCount": "3161",
"likeCount": "114",
"dislikeCount": "1",
"favoriteCount": "0",
"commentCount": "3"
}
},
{
"kind": "youtube#video",
"etag": "\"8jEFfXBrqiSrcF6Ee7MQuz8XuAM/GLR7VPe6doLt0su-fHOmH6XyNj0\"",
"id": "EiB9ZVrvrz0",
"snippet": {
"publishedAt": "2019-08-27T14:23:46.000Z",
"channelId": "UCx9QVEApa5BKLw9r8cnOFEA",
"title": "GopherCon 2019: Ron Evans - Small is Going Big: Go on Microcontrollers",
"description": "TinyGo takes the Go programming language to the \"final frontier\" where we could not go before... running directly on microcontrollers like Arduino and more! In this talk I will introduce TinyGo (http://tinygo.org) a new miniature version of the Go language that uses the LLVM compiler toolchain to create native code that can run directly even on the smallest of computing devices. This talk will feature live coding demos of flying objects!",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/EiB9ZVrvrz0/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/EiB9ZVrvrz0/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/EiB9ZVrvrz0/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/EiB9ZVrvrz0/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/EiB9ZVrvrz0/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "Gopher Academy",
"tags": [
"golang",
"gophercon",
"programming",
"embedded",
"tinygo",
"arduino"
],
"categoryId": "28",
"liveBroadcastContent": "none",
"localized": {
"title": "GopherCon 2019: Ron Evans - Small is Going Big: Go on Microcontrollers",
"description": "TinyGo takes the Go programming language to the \"final frontier\" where we could not go before... running directly on microcontrollers like Arduino and more! In this talk I will introduce TinyGo (http://tinygo.org) a new miniature version of the Go language that uses the LLVM compiler toolchain to create native code that can run directly even on the smallest of computing devices. This talk will feature live coding demos of flying objects!"
},
"defaultAudioLanguage": "en"
},
"statistics": {
"viewCount": "1100",
"likeCount": "38",
"dislikeCount": "0",
"favoriteCount": "0",
"commentCount": "2"
}
},
{
"kind": "youtube#video",
"etag": "\"8jEFfXBrqiSrcF6Ee7MQuz8XuAM/R3mtwG_-Z2Lj5HQhF394Kl6UIqk\"",
"id": "_Pc0bzz4-gM",
"snippet": {
"publishedAt": "2019-08-27T14:23:46.000Z",
"channelId": "UCx9QVEApa5BKLw9r8cnOFEA",
"title": "GopherCon 2019: Johnny Boursiquot - What Got Us Here, Won't Get Us There",
"description": "There’s never been a better time to adopt Go. The language is attracting more newcomers every day and by all accounts, its community has a lot to do with it. If, however, we want to retain what makes Go special beyond the language itself, we, as a community, must recognize and amplify what makes us great and address what threatens our unity.\n\nAs an early adopter and proponent of Go, Johnny has seen the community mature over the years, but from a perspective you might not expect. He will share both lived experiences and witnessed transformations that characterize what it means to be part of this amazing community and why it’s so important that we protect it now more than ever.",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/_Pc0bzz4-gM/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/_Pc0bzz4-gM/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/_Pc0bzz4-gM/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/_Pc0bzz4-gM/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/_Pc0bzz4-gM/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "Gopher Academy",
"tags": [
"golang",
"gophercon",
"programming"
],
"categoryId": "28",
"liveBroadcastContent": "none",
"localized": {
"title": "GopherCon 2019: Johnny Boursiquot - What Got Us Here, Won't Get Us There",
"description": "There’s never been a better time to adopt Go. The language is attracting more newcomers every day and by all accounts, its community has a lot to do with it. If, however, we want to retain what makes Go special beyond the language itself, we, as a community, must recognize and amplify what makes us great and address what threatens our unity.\n\nAs an early adopter and proponent of Go, Johnny has seen the community mature over the years, but from a perspective you might not expect. He will share both lived experiences and witnessed transformations that characterize what it means to be part of this amazing community and why it’s so important that we protect it now more than ever."
},
"defaultAudioLanguage": "en"
},
"statistics": {
"viewCount": "395",
"likeCount": "11",
"dislikeCount": "7",
"favoriteCount": "0",
"commentCount": "0"
}
},
{
"kind": "youtube#video",
"etag": "\"8jEFfXBrqiSrcF6Ee7MQuz8XuAM/diXXROh5AyWg3XtcWMBtncbSKbA\"",
"id": "4WIhhzTTd0Y",
"snippet": {
"publishedAt": "2019-08-27T15:21:09.000Z",
"channelId": "UCx9QVEApa5BKLw9r8cnOFEA",
"title": "GopherCon 2019: Marwan Sulaiman - Handling Go Errors",
"description": "Let’s talk about programmable errors and how you can design your own architecture that allows you to legibly master your system failures.",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/4WIhhzTTd0Y/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/4WIhhzTTd0Y/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/4WIhhzTTd0Y/hqdefault.jpg",
"width": 480,
"height": 360
}
},
"channelTitle": "Gopher Academy",
"tags": [
"gophercon",
"golang",
"programming"
],
"categoryId": "28",
"liveBroadcastContent": "none",
"defaultLanguage": "en",
"localized": {
"title": "GopherCon 2019: Marwan Sulaiman - Handling Go Errors",
"description": "Let’s talk about programmable errors and how you can design your own architecture that allows you to legibly master your system failures."
},
"defaultAudioLanguage": "en"
},
"statistics": {
"viewCount": "2704",
"likeCount": "110",
"dislikeCount": "6",
"favoriteCount": "0",
"commentCount": "1"
}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment