{"id":18768419,"url":"https://github.com/ekhabarov/talks","last_synced_at":"2026-05-09T14:07:57.514Z","repository":{"id":144362590,"uuid":"240957001","full_name":"ekhabarov/talks","owner":"ekhabarov","description":"Slides and videos from conferences and meetups","archived":false,"fork":false,"pushed_at":"2024-04-24T03:48:32.000Z","size":4479,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-14T05:31:36.331Z","etag":null,"topics":["bazel","go","golang","grpc","grpc-go","grpc-plugins","slides","talks"],"latest_commit_sha":null,"homepage":"https://ekhabarov.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ekhabarov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-02-16T20:00:47.000Z","updated_at":"2024-04-24T03:48:36.000Z","dependencies_parsed_at":"2024-06-19T13:28:00.085Z","dependency_job_id":"2e6fc10d-6377-4aff-a81f-60b895790dd8","html_url":"https://github.com/ekhabarov/talks","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekhabarov%2Ftalks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekhabarov%2Ftalks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekhabarov%2Ftalks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekhabarov%2Ftalks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ekhabarov","download_url":"https://codeload.github.com/ekhabarov/talks/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239671416,"owners_count":19677873,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bazel","go","golang","grpc","grpc-go","grpc-plugins","slides","talks"],"created_at":"2024-11-07T19:12:33.186Z","updated_at":"2025-12-10T04:30:13.962Z","avatar_url":"https://github.com/ekhabarov.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Talks\n\n### \"Protobuf-First APIs: gRPC \u0026 Co.\" | [Boston Golang meetup](https://www.meetup.com/bostongo/events/273933921/) | Oct 27, 2020\n\nAs a very lazy developer I try to make life as easy as possible. In an ideal\nworld code should write itself, but it won’t … until you say it should do this.\nIn this talk we will discuss code generation and how while writing gRPC API to\nget REST for free.\n\n* [slides](https://talks.godoc.org/github.com/ekhabarov/talks/grpc-rest/grpc.slide#1)\n\n### \"Interface in Go\" | [Golang Winnipeg Meetup #4](https://www.meetup.com/golangwpg/events/266794339/) | Dec 4, 2019\nIt's a very very basic presentation about how to use interfaces, what is it and\nwhy you need it.\n\n* [slides](https://talks.godoc.org/github.com/ekhabarov/talks/interfaces/interfaces.slide#1)\n\n### \"protoc-gen-struct-transformer plugin\" | [Gopherpalooza, 2019](http://gopherpalooza.com/) | Mountain View, CA | Nov 8, 2019\n\nWhen you work with gRPC you work with an auto-generated code which contains Go\nstructures. If your app has a strong separation between business logic and\ntransport level most likely your business logins has it’s own set of structures.\nThe issue here is for Go two structure types with different names and even with\nequal set of fields are different types, i.e. in order to publish result from BL\nlevel to gRPC endpoint you have to convert one structure type into another,\nfield-by-field or you can generate such kind of transformations and I’m going to\nexplain how to achieve it.\n\n* [slides](https://talks.godoc.org/github.com/ekhabarov/talks/struct-transformer/lightning.slide#1)\n* [video](https://youtu.be/ifJ7enmOG9I)\n\n### \"Protobuf-first APIs: gRPC \u0026 Co.\" | [Golang Winnipeg Meetup #3](https://www.meetup.com/golangwpg/events/263867072/) | Sep 18, 2019\n\n* [slides](https://talks.godoc.org/github.com/ekhabarov/talks/protobuf/protobuf.slide#1)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fekhabarov%2Ftalks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fekhabarov%2Ftalks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fekhabarov%2Ftalks/lists"}