Matt KØDVB
Matt KØDVB
  • 45
  • 576 407
Go and Google App Engine (Go Developer's Network, March 2021)
This is my presentation on Go and Google App Engine for the March 2021 GoBridge / Go Developer's Network meetup (on St Patrick's Day). In this presentation I talk about monitoring and debugging GAE apps: using trace IDs to correlate logs, profiling in GCP, and monitoring via custom OpenCensus metrics. I also show how to deploy a simple service to App Engine and use IAP for security.
The code is available at github.com/matt4biz/go-gae-example; the examples are similar to what I use for the profiling segment of my class (ua-cam.com/video/MDB2x1Di5uM/v-deo.html).
Slides at: github.com/matt4biz/go-class-slides/blob/trunk/gobridge/gdn-2103-gae-slides.pdf
Переглядів: 3 095

Відео

Go Class: 13 Regular Expressions & Search
Переглядів 6 тис.3 роки тому
Bonus! I've added a segment that was not part of the original class in which I talk about Go's regular expression (regex) support and some of the gotchas of using regexes (or package "regexp"). Slides at: github.com/matt4biz/go-class-slides/blob/trunk/xmas-2020/README.md See also golang.org/pkg/regexp/syntax/ and github.com/google/re2/wiki/Syntax Russ Cox has some articles at swtch.com/~rsc/reg...
Go Class: 43 Parting Thoughts
Переглядів 3,4 тис.3 роки тому
This is the wrap-up for the Go class with some parting thoughts, a reference to some resources for more learning, and one more thing ... Slides at: github.com/matt4biz/go-class-slides/blob/trunk/xmas-2020/README.md
Go Class: 42 Parametric Polymorphism
Переглядів 4,8 тис.3 роки тому
In this segment I'll talk a little about the future of Go, which will now include generics; I'll give a couple examples, demo them in the playground, and discuss when generics should (and shouldn't) be used. Slides at: github.com/matt4biz/go-class-slides/blob/trunk/xmas-2020/README.md
Go Class: 41 Building Go Programs
Переглядів 4,7 тис.3 роки тому
In this section I'll discuss how to use go build, particularly to make a "pure" Go program; how to version your executable; some things about project layout and Makefiles; and how to build in Docker. I have a complete demo on building & publishing a container and then running it on another machine, so you get a Docker lesson for free :-) UPDATE: use `git describe tags long dirty always` to get ...
Go Class: 40 Go Modules
Переглядів 4,1 тис.3 роки тому
This is a short introduction to Go modules and dependency management, enough for day-to-day work. It reflects Go 1.15; there are some changes in Go 1.16 (released after the recording was made) that you should note; see the release notes at golang.org/doc/go1.16#tools. I briefly mention one: that go build will no longer download modules by default; you must use go get or go mod tidy. Slides at: ...
Go Class: 39 Code Coverage
Переглядів 2,9 тис.4 роки тому
This segment shows how to use "go tool cover" to measure and visualize code coverage, with an example where I improve a unit test to increase coverage. Slides at: github.com/matt4biz/go-class-slides/blob/trunk/xmas-2020/README.md
Go Class: 38 Testing
Переглядів 3,9 тис.4 роки тому
In this segment I'll circle back to Go's testing package and then get up on a soap box and say a few words about testing in general. Warning: contains informed opinions! Slides at: github.com/matt4biz/go-class-slides/blob/trunk/xmas-2020/README.md
Go Class: 37 Static Analysis
Переглядів 2,6 тис.4 роки тому
This segment describes (and recommends!) the available static analysis tools and how to enable them. Slides at: github.com/matt4biz/go-class-slides/blob/trunk/xmas-2020/README.md
Go Class: 36 Profiling
Переглядів 5 тис.4 роки тому
In this segment I'll show how to use pprof to find goroutine leaks and to optimize CPU usage. I'll also give a quick demonstration of using metrics (Prometheus, in this case) as a debugging tool. Slides at: github.com/matt4biz/go-class-slides/blob/trunk/xmas-2020/README.md Code at: github.com/matt4biz/go-class-profile
Go Class: 35 Benchmarking
Переглядів 4,1 тис.4 роки тому
I this segment I demonstrate Go's benchmarking tools and run benchmarks to show some of the issues I mentioned in the previous segment on mechanical sympathy. Slides at: github.com/matt4biz/go-class-slides/blob/trunk/xmas-2020/README.md Code at: github.com/matt4biz/go-class-bench (I don't recommend trying to run benchmarks on repl.it)
Go Class: 34 Mechanical Sympathy
Переглядів 6 тис.4 роки тому
Mechanical sympathy is about building programs that work with the machine rather than against it. In this segment I describe what it is, why we care, and how Go helps you build efficient programs, and offer a few opinions also. Slides at: github.com/matt4biz/go-class-slides/blob/trunk/xmas-2020/README.md
Go Class: 33 Reflection
Переглядів 9 тис.4 роки тому
We look at Go's reflection feature, including type assertions and switch-on-type, and a couple examples involving JSON, including a custom JSON unmarshal method. Slides at: github.com/matt4biz/go-class-slides/blob/trunk/xmas-2020/README.md Code at: github.com/matt4biz/go-class-contains
Go Class: 32 Error Handling
Переглядів 11 тис.4 роки тому
This segment covers the creation of error types and the use of Go 1.13's error wrapping, as well as a discussion of why Go's error handling is based on returning error values and not throwing exceptions, and how best to handle errors of different kinds. Slides at: github.com/matt4biz/go-class-slides/blob/trunk/xmas-2020/README.md
Go Class: 31 Odds & Ends
Переглядів 4 тис.4 роки тому
In this segment I talk about some odds & ends in Go: enumerations, variable argument lists, bitwise operators (and short/signed integers), and to goto statement. Slides at: github.com/matt4biz/go-class-slides/blob/trunk/xmas-2020/README.md
Go Class: 30 Concurrency Gotchas
Переглядів 5 тис.4 роки тому
Go Class: 30 Concurrency Gotchas
Go Class: 29 Homework #5 (h/w #4 part deux)
Переглядів 2,8 тис.4 роки тому
Go Class: 29 Homework #5 (h/w #4 part deux)
Go Class: 28 Conventional Synchronization
Переглядів 6 тис.4 роки тому
Go Class: 28 Conventional Synchronization
Go Class: 27 Concurrent File Processing
Переглядів 11 тис.4 роки тому
Go Class: 27 Concurrent File Processing
Go Class: 26 Channels in Detail
Переглядів 15 тис.4 роки тому
Go Class: 26 Channels in Detail
Go Class: 25 Context
Переглядів 26 тис.4 роки тому
Go Class: 25 Context
Go Class: 24 Select
Переглядів 11 тис.4 роки тому
Go Class: 24 Select
Go Class: 23 CSP, Goroutines, and Channels
Переглядів 28 тис.4 роки тому
Go Class: 23 CSP, Goroutines, and Channels
Go Class: 22 What is Concurrency?
Переглядів 10 тис.4 роки тому
Go Class: 22 What is Concurrency?
Go Class: 21 Homework #4
Переглядів 4,8 тис.4 роки тому
Go Class: 21 Homework #4
Go Class: 20 Interfaces & Methods in Detail
Переглядів 11 тис.4 роки тому
Go Class: 20 Interfaces & Methods in Detail
Go Class: 19 Composition
Переглядів 11 тис.4 роки тому
Go Class: 19 Composition
Go Class: 18 Methods and Interfaces
Переглядів 15 тис.4 роки тому
Go Class: 18 Methods and Interfaces
Go Class: 17 Go does OOP
Переглядів 9 тис.4 роки тому
Go Class: 17 Go does OOP
Go Class: 16 Homework #3
Переглядів 6 тис.4 роки тому
Go Class: 16 Homework #3

КОМЕНТАРІ

  • @srinadhd8440
    @srinadhd8440 5 днів тому

    I appreciate the depth of your videos, as they not only provide a high-level understanding of concepts but also delve into their backend implementation at the memory and storage level. This level of detail is crucial for engineers to develop a comprehensive understanding of how these concepts work in practice.

  • @RohitKumar-fg1qv
    @RohitKumar-fg1qv 11 днів тому

    This series is the bestest thing on internet

  • @anoasisoftranquillity5773
    @anoasisoftranquillity5773 13 днів тому

    This is pure Gold Matt. Thank you ❤

  • @RicardoCanastro
    @RicardoCanastro 16 днів тому

    Thank you, this has been really helpful ❤

  • @__nitinkumar__
    @__nitinkumar__ 16 днів тому

    Just adding this comment for the people who have started this series. First: This is the best series on Go, and it's free. Second: It is almost 21 hours in total. If you watch and do the hands-on with Matt, it should take you more than a week (probably two weeks) to complete.

  • @ghostofalexandria8914
    @ghostofalexandria8914 18 днів тому

    This is literally the art of Software Engineering!

  • @maxxim2934
    @maxxim2934 19 днів тому

    Http sockets do not exist

  • @ThaldranIronpine
    @ThaldranIronpine 20 днів тому

    Best hello world example I have ever seen awesome! I had no idea how you could make that so educational but you did.

  • @diegocmsantos
    @diegocmsantos 21 день тому

    This playlist is priceless

  • @pantanom18
    @pantanom18 24 дні тому

    good explanation teacher Matt

  • @igordebastiani
    @igordebastiani 25 днів тому

    Very different from the programming languages I am used to. Loving this course. Thank you, Matt!!

  • @AryanSinghal-z2s
    @AryanSinghal-z2s 25 днів тому

    Learning Go from scratch, just read about Channels and goroutines. This video is really helpful to understand the details relevant for practical use. Nice job!

  • @innu8462
    @innu8462 25 днів тому

    This is a piece of gold. Thank you for your amazing work

  • @nitinjuyal7739
    @nitinjuyal7739 26 днів тому

    Really appreciate these quality content on go. Thank you Matt !

  • @gaofan2856
    @gaofan2856 Місяць тому

    Idk why, but I find syntax confusing. I have 10+ years of experience in writing in JS, PHP, C++ and python. I though python is fucked up with its' syntax of inventing the wheel by trying to optimize everything. But then I found Go

  • @glennl9378
    @glennl9378 Місяць тому

    This with benchmarking is like having x-ray vision

  • @glennl9378
    @glennl9378 Місяць тому

    Returning to this video to let people know that the homework series are also neat, even as a viewer. If you don't want to write the "homework", treat it like a lecture because that's how he discusses the homework anyway. Each homework in the series builds on the topics discussed prior to it. Homework #4 and #5 especially are a nice little demonstration of taking naive read/write operations in a REST API (#4), and improving it to avoid race conditions using simple usage of mutexes (#5). He verifies the states of #4 and #5 code using the `-race` option. Please like this so people see immediately.

  • @bsyc26
    @bsyc26 Місяць тому

    Definitely the best course of Go, Thank you Matt!

  • @seraph9029
    @seraph9029 Місяць тому

    Finally I understood why it is named Closure. Best go class! Thanks Matt.

  • @mahmoudel-hawawshy5198
    @mahmoudel-hawawshy5198 Місяць тому

    just want to say a thank you after completing your series. i am really grateful that you posted such content for everyone to see and benifit from. you presented it in a nice and kind way. Thank you Matt.

  • @tutudou
    @tutudou Місяць тому

    At 39:28, can't we just use & to get the address and then call ScaleBy on that?

  • @amanshitta
    @amanshitta Місяць тому

    For anyone using Go >=1.22, the behavior where the variable i captures the same location and prints the same value (e.g., 4) when a closure is called has been fixed in the latest versions. PS: Great explanation Matt, really grateful for these classes and your explanations

    • @vasishthroy3258
      @vasishthroy3258 Місяць тому

      Thanks alot!! That's what I thought I tried it and the same code was giving me a different value.

  • @r4c3c0nd1t1n
    @r4c3c0nd1t1n 2 місяці тому

    Great video, thanks

  • @CoredusK
    @CoredusK 2 місяці тому

    This should be paid!

  • @MixturaLife
    @MixturaLife 2 місяці тому

    Was doing advent of code this year, decided to use go to learn it deeper and faced this very strange behaviour So basically never append to or modify values in slices that were derived from array/another slice…😅 Thank you for explanation!

  • @eillioniscreating
    @eillioniscreating 2 місяці тому

    Looking forward to new courses matt. thank you for your course...

  • @fatihozgen2886
    @fatihozgen2886 2 місяці тому

    Thank you! This is great course!

  • @b99andla
    @b99andla 2 місяці тому

    Great content! Thank you!

  • @MattShort-f6v
    @MattShort-f6v 2 місяці тому

    Great video!

  • @Mr.x.187
    @Mr.x.187 2 місяці тому

    starting my transition to cloud engineering with this series. Thanks

  • @MattShort-f6v
    @MattShort-f6v 3 місяці тому

    Amazing

  • @ruhulbro
    @ruhulbro 3 місяці тому

    when i run this code every things works fine not need to shadow i variable why ? package main import "fmt" func main() { s := make([]func(), 4) for i := 0; i < 4; i++ { s[i] = func() { fmt.Printf("%d -- %p ", i, &i) } } for i := 0; i < 4; i++ { s[i]() } } result is 0 -- 0xc000104040 1 -- 0xc000104048 2 -- 0xc000104050 3 -- 0xc000104058

  • @MattShort-f6v
    @MattShort-f6v 3 місяці тому

    Matt, your wealth of knowledge clearly shows when teaching. Amazing.

  • @iamworstgamer
    @iamworstgamer 3 місяці тому

    this content is free. this is worth paying for. even better than so called paid courses. I wish you make more courses on linux and systems programming in general, or is there somewhere I can purchase your courses.

  • @MattShort-f6v
    @MattShort-f6v 3 місяці тому

    This is an amazing course. Thanks so much!

  • @azufendusgarendum6583
    @azufendusgarendum6583 3 місяці тому

    "it's not to scale" lmao great stuff. Thanks for sharing

  • @ahmad-saeed-goda
    @ahmad-saeed-goda 3 місяці тому

    What are the obvious reasons for not writing software in Go? @ ua-cam.com/users/clipUgkxd6EcsGOtqi-MQJNNp9YpQdJgO8-IXWWP?si=EQtE3c4vS2pvsdpd

    • @ahmad-saeed-goda
      @ahmad-saeed-goda 3 місяці тому

      Just wanted to mention that I can understand that GC is a thing, that makes it risky to write safety-critical systems while it's in-action. But it can be disabled. And apart from such a GC aspect, I wanna learn more! Like all the reasons. As far as I can see the type system is strong, though there's unsafe play around but still wanna grasp the entire idea as a whole pls.. @Matt @everyone

  • @ChopperTon
    @ChopperTon 3 місяці тому

    ua-cam.com/video/MDB2x1Di5uM/v-deo.html Thats me most of the time im trying to code anything.

  • @MichaelKlimenko
    @MichaelKlimenko 3 місяці тому

    Invaluable source of knowledge about Golang and just programming in general. Thank you for such a great work you do.

  • @CristianNica-qp6os
    @CristianNica-qp6os 3 місяці тому

    Seeing your face besides the code is distracting

  • @dixztube
    @dixztube 3 місяці тому

    Man you teach so good!

  • @im_marwa_ayman
    @im_marwa_ayman 3 місяці тому

    either me finish this or this finish me

  • @loggerboy9325
    @loggerboy9325 3 місяці тому

    just finding these videos now cant wait to go through them

  • @plutack
    @plutack 3 місяці тому

    what i understand from this, someone should validate. If you are ever going to have any reason to slice an array.. you are better of creating a slice from the beginning and let go handle the underlying array.

  • @rubyciide5542
    @rubyciide5542 3 місяці тому

    I still dont understand the closed over here

  • @mohamedhabas7391
    @mohamedhabas7391 4 місяці тому

    thank you for the detailed lessons.

  • @slan7
    @slan7 4 місяці тому

    f*ck me, this is the best course I've watched so far on Go... and it's free. Thank you, sir.

  • @themannyzaur
    @themannyzaur 4 місяці тому

    this legend is inspiring a new generation of capable, competent and cracked Go developers!

  • @MalaPawar-o5i
    @MalaPawar-o5i 4 місяці тому

    Hi Matt. great videos. Thank you for posting and sharing them !! Note: @18:53 of slice examples z := a[0:1] you mention that z become a slice that points to first two elements of a. is it correct to say that as z will have only the first element from array a?

  • @MrVipulLal
    @MrVipulLal 4 місяці тому

    Sorry, but I think C or even c++ is way easier to understand and use

    • @amanshitta
      @amanshitta Місяць тому

      Sorry, but this course might not be for you 🤔