- 35
- 148 737
GopherConAU
Australia
เข้าร่วมเมื่อ 10 พ.ย. 2019
GopherConAU is an Australian technology conference about the Go programming language
08. Victoria Polishchuk - Implementing Event-driven Systems with Go | GopherConAU 2023
Discover the transformative power of event-driven systems in Go. This talk delves into the practical application of the transactional outbox design pattern and essential Go patterns. Learn how to implement robust, scalable event-driven systems in Go, enabling seamless asynchronous event processing.
Slides:
About Victoria Polishchuk
Victoria is a Software Engineer at Nine and has 5 years of experience in back-end and front-end development. She specialises in back-end development of Microservices and has been working with Go, RDS, GCP and AWS for over 3 years. Her interests range across a variety of industries, fields of technology and science. She loves sharing her passion for Go through mentoring university students and graduates
Slides:
About Victoria Polishchuk
Victoria is a Software Engineer at Nine and has 5 years of experience in back-end and front-end development. She specialises in back-end development of Microservices and has been working with Go, RDS, GCP and AWS for over 3 years. Her interests range across a variety of industries, fields of technology and science. She loves sharing her passion for Go through mentoring university students and graduates
มุมมอง: 3 673
วีดีโอ
13. Raghav Roy - Coroutines and Go | GopherConAU 2023
มุมมอง 2.8K11 หลายเดือนก่อน
Go provides great primitives for concurrency, but Coroutines are a concurrency pattern not served natively. They are one of the oldest proposals of a general control abstraction, can we implement them using existing Go definitions? What changes can be made to the Go runtime for efficiency? Slides: speakerdeck.com/royra/coroutines-and-go About Raghav Roy Raghav loves systems! But that's not all....
05. Vladimir Chalupecky - Elements of Gonum for Scientific Computing | GopherConAU 2023
มุมมอง 76611 หลายเดือนก่อน
In the realm of scientific computing, the efficiency, power, and adaptability of your tools can greatly influence the quality and speed of research. For those seeking to harness the capabilities of Go for data-intensive tasks, Gonum provides a robust foundation. In this talk, we will journey through the core elements of the Gonum library, shedding light on its potential for modern scientific co...
04. Jyotsna Gupta - WebAssembly with Go: Powering the Web with Speed and Efficiency | GopherConAU 23
มุมมอง 1.2K11 หลายเดือนก่อน
The rapid evolution of web technologies brings forth a new paradigm: WebAssembly (Wasm). As a binary instruction format, WebAssembly bridges the gap between web applications and native code, unlocking a realm of possibilities for performance improvements and expanded feature sets. This talk delves into the fascinating synergy of WebAssembly and Go, a statically typed, compiled language known fo...
19. Rob Pike - What We Got Right, What We Got Wrong | GopherConAU 2023
มุมมอง 100K11 หลายเดือนก่อน
Fourteen years after the launch of Go, there is much to think about. With the benefit of hindsight, this talk explores some of the lessons learned from Go's progress so far: not just the things that went well but also the things that could have been done better. Slides: docs.google.com/presentation/d/1_-HnEBC_wSrywgMHwKtOBr0wuWYqGw9WqF261mHNlG4/edit?usp=sharing Blog Post: commandcenter.blogspot...
17. Marian Montagnino - Back to the Future: Modernizing CLIs Using Go | GopherConAU 2023
มุมมอง 1.2K11 หลายเดือนก่อน
Since the dawn of computing, we've interacted with computers using the text-based Command Line Interface (CLI). Today, even with the dominance of graphical interfaces, CLIs are often paired with company APIs to boost platform engagement or used in cloud infrastructure. In my talk, I'll dive into the CLI's structure, the principles for building an effective one, and showcase hands-on examples wi...
14. Sadie Freeman & Quinn Hou - Code Reviews in Go: Top 5 Misses | GopherConAU 2023
มุมมอง 1.2K11 หลายเดือนก่อน
While working together over the past 4 years at Dapper Labs with Go as the primary backend language, we’ve shared countless code reviews. From late night incidents during surging product demands, we’ve come to value the importance of meticulous code reviews with no room for error. We’ll share stories of memorable code mishaps, shedding light on common pitfalls in Go code reviews. We’ll provide ...
16. Yarden Laifenfeld - Go Stack: Should It Be Moving Like That? | GopherConAU 2023
มุมมอง 82211 หลายเดือนก่อน
Have you ever thought about what's actually happening when you run your program? Where are the variables held? How is the memory managed? What even are goroutines ("lightweight threads")? How much is Go hiding from us? This talk will touch on all these topics, focusing on how the Go runtime manages the Go stack. We will discover best (and worst) practices that can only be explained by understan...
02 - Aysa Matueva - How Go Made a Better Engineer Out of an ex-Barista | GopherConAU 2023
มุมมอง 1K11 หลายเดือนก่อน
My journey into the tech world was a bit unconventional. I initially studied medicine and spent a decade working in the hospitality industry. However, I eventually made a career pivot into software engineering. What makes my story somewhat unusual is that Go was my very first language in a professional role. I'm excited to share my experiences and insights at the conference, where I'll discuss ...
15. Jeff Levin - Dog Food Can Be Delicious | GopherConAU 2023
มุมมอง 35611 หลายเดือนก่อน
Maturity of software is related to the technical debt and requirements it took to get there along the way. How do you know when you're ready to make architectural changes or how to make those changes? By benchmarking of course! This is a story about Grafana's path to maturity and how we're using Grafana and K6 to benchmark Grafana and overcome technical debt as part of our architecture overhaul...
09. Mirjam Uher - What's The Point? A Guide To Using Pointers Without Panicking | GopherConAU 2023
มุมมอง 4K11 หลายเดือนก่อน
Puzzled by pointers? In her talk, Mirjam will explore how, and more importantly when, to use pointers without falling into one of their many pitfalls. If you're curious about why you can't deep-copy a struct containing slices, when you should use pointer receivers vs. value receivers, how much space you really are saving by using a pointer or just how to stop your code from panicking, you shoul...
10. Ben Boyter - Building a Cutting Edge Search Engine in Go | GopherConAU 2023
มุมมอง 1.3K11 หลายเดือนก่อน
10. Ben Boyter - Building a Cutting Edge Search Engine in Go | GopherConAU 2023
18. Lightning Talks | GopherConAU 2023
มุมมอง 59011 หลายเดือนก่อน
18. Lightning Talks | GopherConAU 2023
12. Egon Elbre - Infinite Possibilities | GopherConAU 2023
มุมมอง 39611 หลายเดือนก่อน
12. Egon Elbre - Infinite Possibilities | GopherConAU 2023
07. Patrycja Wegrzynowicz - The Hacker's Guide to JWT Security | GopherConAU 2023
มุมมอง 75311 หลายเดือนก่อน
How to hijack a user account in a JWT app? How to exploit security vulnerabilities on the client-side, on the server-side, or in transport? In our live demos, you'll dive into these and other aspects of JWT security. JSON Web Token (JWT) is an open standard for securely transmitting information between parties as a JSON object. JWT is widely used in modern applications as a stateless authentica...
11. Julia Ogris - Building a Beginner's Programming Language with Go | GopherConAU 2023
มุมมอง 1.3K11 หลายเดือนก่อน
In this talk, Julia will explain the motivation for writing a beginner-friendly programming language. She will then show you how to write an interpreter using only the Go standard library, including how a Pratt parser works for expressions with different operator precedence. Evy: evy.dev Slides: docs.google.com/presentation/d/1E2WmO4nWjhPNiXEWGBjXa2SblX8fODP7-Xjv6vpo9FA/edit?usp=sharing Discord...
06. Matteo Grella - The Go-to Language for AI: Opportunities and Challenges | GopherConAU 2023
มุมมอง 72911 หลายเดือนก่อน
This session explores the unfolding potential of Go in AI, spotlighting pioneering ML/NLP frameworks and emerging LLM-oriented projects. Highlighting the shift towards compiled languages for more efficient AI solutions, Go emerges as a streamlined, high-performance choice. However, when juxtaposed against established frameworks or emerging stars written in C and Rust, which offer 'close to the ...
03. Axel Wagner - Constraining Complexity in the Generics Design | GopherConAU 2023
มุมมอง 1.4K11 หลายเดือนก่อน
When Go added generics, it also added unions to interfaces. They let you specify a list of types, constraining a type parameter to be from that list. However, those types can not be interfaces with methods. I explain why that is. And what we might do about it. Blog post: blog.merovius.de/posts/2024-01-05_constraining_complexity/ About Axel Wagner Axel is a Senior Software Engineer at Infront Qu...
01. Russ Cox - Go Testing By Example | GopherConAU 2023
มุมมอง 15K11 หลายเดือนก่อน
01. Russ Cox - Go Testing By Example | GopherConAU 2023
GopherConAU 2019 - Joshua Carpeggiani - Go for Decimals
มุมมอง 2475 ปีที่แล้ว
GopherConAU 2019 - Joshua Carpeggiani - Go for Decimals
GopherConAU 2019 - Julia Wong- Migrate to a New Platform by Creating a Pipeline in Go
มุมมอง 1635 ปีที่แล้ว
GopherConAU 2019 - Julia Wong- Migrate to a New Platform by Creating a Pipeline in Go
GopherConAU 2019 - Kaylyn Gibilterra - Unlocking net http APIs
มุมมอง 2385 ปีที่แล้ว
GopherConAU 2019 - Kaylyn Gibilterra - Unlocking net http APIs
GopherConAU 2019 - Ben Boyter - Sloc Cloc and Code
มุมมอง 6875 ปีที่แล้ว
GopherConAU 2019 - Ben Boyter - Sloc Cloc and Code
GopherConAU 2019 - Darrell Chua - Getting Started with Deep Learning in Go
มุมมอง 2305 ปีที่แล้ว
GopherConAU 2019 - Darrell Chua - Getting Started with Deep Learning in Go
GopherConAU 2019 - Alexander Else - Profiling a go service in production
มุมมอง 2.6K5 ปีที่แล้ว
GopherConAU 2019 - Alexander Else - Profiling a go service in production
GopherConAU 2019 - Peter Williams - PDF Full Text Search in Pure Go
มุมมอง 1345 ปีที่แล้ว
GopherConAU 2019 - Peter Williams - PDF Full Text Search in Pure Go
GopherConAU 2019 - Gareth Seneque - Reinforcement Learning for News Recommendation
มุมมอง 2315 ปีที่แล้ว
GopherConAU 2019 - Gareth Seneque - Reinforcement Learning for News Recommendation
GopherConAU 2019 - Jeff Levin - Let’s build our own webstack in Go
มุมมอง 1315 ปีที่แล้ว
GopherConAU 2019 - Jeff Levin - Let’s build our own webstack in Go
Amazing talk! Really inspiring and well put.
Very amusing watching a talk about testing while battling the clickers' functionality :D
Cross compilation is magic with Golang
Davis Maria Hernandez Helen Martinez Patricia
If you don’t use go you a ho lang
10:54 - Tip #4 Write exhaustive tests
15:26 Here is critical bug in this code, related with misunderstanding how defer works: The code within defer closures runs *after* the return statement. So it gonna be called in both scenario: success and fail. So, in general code must be written like: // Get a Tx for making transaction requests. tx, err := db.BeginTx(ctx, nil) if err != nil { // handle err } // Defer a rollback in case anything fails. defer tx.Rollback() // Insert article query. _, err = tx.ExecContext(ctx, "...") if err != nil { // handle err } // Insert Event logic. // Commit the transaction. if err = tx.Commit(); err != nil { // handle err } return nil
Thanks for your comment, this is intended behavior. tx.Rollback() is indeed called on both success and failure. However, after the transaction has been committed tx.Rollback() will not rollback any changes. The reason tx.Rollback() is wrapped with rollback(tx) is to handle an error from tx.Rollback(). I hope this answers your concern!
I wish there was another (functional) language using go runtime.
Baking telemetry into a programming language is a TOTAL NO GO. I would ditch the entire ecosystem and fallback onto ASM if all languages did that. Even those who assert that it is an opt-in should be scrutinized. Apparently they got paid by Ggl and speak on behalf of Ggl's interests. STOP SPYING STOP GLORYING BACKDOORS.
Great talk, great presenter.
after the citation of ousterhout I wen to look at the threads paper, and to me it seems ousterhout is still right, and pike got ousterhout's message wrong (just look at the conclusion slide), pike's own admission of "doing concurrency like things sometimes without even realizing it" is a problem and in agreement with ousterhout (but then, of course, he later goes on to talk exactly about the problems ousterhout stated ...)
Love listening to Rob.
this is very well explained.
the overly strong dependence on git has been the bane of my existence
Awesome talk!
i can answer that title question.. NOT MUCH, ALMOST EVERYTHING.. go really is the dumbest language ever invented and most people are dumb.. so.. success i guess..
Great Talk
So I went on Wikipedia to refresh my knowledge of all the amazing things this man did for the software industry, and I realized he looks two decades younger than he actually is. Way to efffin go, Rob!
00:39 🎉 Rob Pike reflects on the 14th anniversary of Go's launch, highlighting the journey and lessons learned since then. 01:48 🧠 Go's original goal wasn't just about creating a new programming language but providing a better way to write software, addressing issues beyond language features. 03:37 🐿 The Go Gopher played a significant role in Go's success, serving as a symbol of community engagement and technical excellence, but challenges arose with its Creative Commons licensing. 07:20 📜 Go's adherence to a formal specification, support for multiple implementations, and emphasis on compatibility were crucial factors in its success. 10:30 🛠 Go's tooling, including the Go command and Gofmt, significantly enhanced developer productivity and fostered a robust ecosystem. 13:21 💡 Go's novel approach to concurrency popularized the concept as a powerful tool for structuring server software, although clarification was needed on the differences between concurrency and parallelism. 16:49 🔄 Interfaces emerged as a fundamental concept in Go, facilitating a behavior-focused style of programming and encouraging library development and composability. 19:10 🤔 Go's journey with generics illustrates the complexities of language design, influenced by prior decisions such as the foundational role of interfaces, leading to a subtle yet profound evolution in the language's design. 20:59 💬 "Generics" in Go originated from a term for a different style of polymorphism, but it's an accurate but awkward term for parametric polymorphism. 21:26 🛠 Bootstrapping Go's compiler was done in C due to familiarity and efficiency, despite community preference for LLVM or self-hosting. 22:48 🔀 Go's unorthodox approach to cross-compilation facilitated rapid progress, despite some community skepticism. 23:15 💻 Translating Go's compiler from C to Go allowed for leveraging Go's advantages like testing and tooling, leading to a cleaner compiler. 24:13 🌐 Transitioning Go to an open-source project took time, with a learning curve on community engagement and management. 25:23 🚀 Go's insistence on code quality through mandatory reviews was unconventional but proved valuable for community contributions. 27:01 📦 Go's package management design consumed significant discussion initially, leading to a bumpy transition to importing external code. 28:39 📃 Initial documentation efforts in Go lacked practical examples, highlighting the community's preference for hands-on guidance. 29:50 🎮 Deploying executable code snippets online and in the Go Playground facilitated learning and experimentation, enhancing documentation effectiveness. 30:33 📈 Go's success stems from its design philosophy emphasizing simplicity, readability, and community support, leading to widespread adoption and uniformity in code style. 41:38 🔄 More can be done at compile time for concurrency models and deadlock detection in Go. 42:24 📦 Despite Go's successful standard library, there are regrets about early decisions, such as issues with the log and os packages, but efforts are being made to improve with updated versions. 44:03 💡 Arenas in memory management could be useful if done carefully, potentially saving CPU cycles, but they require proper guardrails to avoid breaking Go's safety rules. 45:53 🎨 Character design for the Go Gopher was primarily the work of Renee French, with variations in color evolving over time, including blue, pink, and monochrome versions.
I want the wallpaper from the beginning!
I just don't like the language named Go. It's not even unique. Go? Why is it called Go? Is it because it's fast? So unusual. What a name! 😅
And languages named after snakes, rocks, random letters, corrosion and punctuation are better named?
** Strobe light warning ** (editor: some of us need this warning)
Honestly some of the go docs are still awful. Not as bad as a lot of the package documentation for a lot of packages like the AWS SDK for Go but that's not the Go teams fault
Nice to see a shout out on the gofmt slide
Folks, we love that you comment, but as a reminder, please keep your comments civil, and always aim to add to the discussion. If you have nothing to add to the discussion, please refrain from commenting. Otherwise it takes a lot of effort to moderate the comments.
👏Great talk!
Odin > Go 🔥🔥🔥
This adds nothing to the discussion.
@@gopherconau That's an arrow. From Odin to Go.
if err != nil go 🎊
Russ is clearly way more experienced than I'll ever be, so I'm probably wrong. I don't like obscure logic in tests. As the logic of the test might as well just be wrong. I also don't like the idea of custom mini languages and tests that 'correct' tests. It just seems like there's so much room to introduce problems into your tests. I want my tests easy to understand at a glance. For me and for the other people on the team. If I have to figure out some obscure custom mini language to understand whether my code is bad or the test is bad, I'm not happy.
Just write tests for your tests, EZ
Mostly very good advise on how to write good tests and a great talk well worth watching. I disagree in one point though. Putting lot of logic into test cases is a bad idea. It makes them harder to understand and more likely to be buggy themselves. Instead, test code should be as trivial as possible (using tables for test cases is fine). This also means that it is totally fine to have redundant code in your test cases.
depends on type of test and number of test case. In case of an integration-test: if one is testing a scripting language with hundreds of test cases, then a table-driven test would be hard to maintain. In this case it is preferable to define a test case as the input file vs the expected output file. Now a table-driven test is ok for unit tests: a table-driven test is perfect for the binary search function example.
I don't think that the person mainly responsible for most of what Go got wrong is in position to objectively say what it got right and wrong
Silly take.
@@blain20_ Silly, but true
@@foljs5858 Nah. The designer of the language knows best what he should've and could've done.
You should look "retrospection" up in a dictionary.. This is a very healthy exercise and what you say is absolutely true, which is why one needs to be aware of it when making such an analysis. I find it quite incredible, that your only contribution to a 40+ min video, is your take without any nuance. Also, I mean you are incredible as in not-credible.
I would like to uncover uncover
I LOVE GO!
33:26 Rob Pike describes telemetry of google chrome.
take a look at mobile phone keyboards - shock horror
🎯 Key Takeaways for quick navigation: 00:09 🤖 *About the speaker and talk expectations* - Ragav Roy, engineer at VMware, works on network virtualization and contributes open source - Talk will cover coroutines as generalized subroutines, history of coroutines, classifications, implementing in Go, and Go runtime changes 01:43 🛡️ *Basics of subroutines* - Can suspend themselves, run other subroutines, terminate and yield control back - Eager means expressions evaluated immediately, closed means returns after evaluation 03:08 💼 *Defining coroutines* - Generalized subroutines that can suspend mid-execution and yield output to caller - Like functions that can return multiple times and keep state - Allows message passing without intermediate steps 04:18 🤔 *Comparing binary trees with coroutines* - Visit function traverses tree recursively, yields values back to caller - Callers resume visit concurrently to compare nodes - Context switching between coroutines calling visit 05:58 ⏳ *History: 1958 compiler example* - Symbol reducer writes tokens on tape, yields to name lookup - Direct passing via coroutines instead of expensive hardware - Negative cost abstraction: increasing abstraction while reducing cost 07:45 🤔 *Why coroutines not more prolific* - Lack of uniform view and precise definitions - Advent of ALGOL 60 and stack variables provided alternative 10:44 💭 *Implementing coroutines on call stack* - Mimics expensive multithreading instead of cheap abstraction - No consistent runtime model across languages 12:59 ⚖️ *Classifying and defining full coroutines* - Key properties: asymmetric, first-class, stackful - Full coroutines more powerful than Python/Kotlin coroutines 16:16 💡 *Asymmetric sufficient, symmetric hard* - Can build symmetric from asymmetric - Asymmetric easier to write and maintain 18:04 🏗️ *Building coroutine API in Go* - Go concurrency doesn't directly support coroutines - Can leverage goroutines, channels, functions 23:35 🤔 *Are these real coroutines? * - Yes, provide concurrency without parallelism - But just goroutines with resume/yield using channels 25:13 🛡️ *Handling errors* - Check running status, propagate panics - Cancel function to stop coroutine gracefully 28:25 ⚡ *Optimized runtime* - Fuse send/receive pairs - Direct switches without channels - 10X faster than channel implementation 30:02 🏁 *Conclusions* - Covered basics, history, classifications - Showed need in Go and implementation - Runtime optimizations significant speedup Made with HARPA AI
For me, the major bloopers are allowing naked returns and weak enums. Had my share of bugs mostly due to those two things.
I am really struggling to understand who is supposed to be the target audience. For a personal story, there was too much unrelated talking about Go. Not really a different point of view at learning Go. Not really a solid intro to Go as the experience is lacking... It would have been better to choose one category and focus on that. Hopefully covering something useful that is not a common knowledge.
You try making a presentation after Russ Cox and then comment back
@@victorlacasse-beaudoin9287 what would have been different if it was not after his presentation?
What's your thoughts on using a workflow pattern instead of stitching logic together in your service like shown here?
I have been using Kogito with Java. I do not like how I am dependent on it's "magic" and generated code. This architecture is rather clean to me and I have full control over it.
How do you create output for machines vs human. I.e a machine might want to pipe the results of your command into another program but a human wants to see progress bar?
This was both enjoyable and educational! Very well crafted presentation 🎉
The thing is, "we are boring on purpose" gets really old after a decade. Now it looks more like an excuse for intellectual masturbation or just laziness.. I really don't think it has much to do with backwards compatibility either, a lot of cool things can be done while still maintaining backwards compatibility. Theres been so much innovation in the languages world over the past decade. I'll even agree that most are bad ideas or not compatible with go but there are a few good ideas there and even some that a compatible with go.. if not copying, they should at least inspire some action or innovation..
What innovations?
@@AJewFR0 Just look at Swift. But to mention just one: optional parameters.
@@jabuciI find swift to be incredibly hard to read, with too many features. Anyways, optional parameters can be implemented with pointers and a bit of godocs on top of the function to make sure people know what the params serves.
Thank you!
I kind of expected a bit more about command line format and e.g. why the built-in flags library should/should not be used instead of just "I use these 3rd party libraries". Also my eyes hurt from the light theme :). Otherwise it is quite nice that there is a demo for inspiration...
Thanks for the feedback! I will definitely make sure to include that in my next talk - when to use a framework vs standard package.
What a waste of time
26:54 Indeed, go's module system is it's one of the worst sides of it. It's way more better how node.js and rust handles that, when i struggle to understand go's module system i've experienced very big frustration.
Nice to see Rob being honest but I expected this talk to be about the Go type system. It's less than optimal. It misses Enums built-in.
I'm glad he mentioned "Go 2" is no longer going to exist.
Go 2 considered harmful
If they admit Go2 is an eventuality or even a remote possibility, Go dies. No one will want to build knowing theirs a time bound on the future of their platform, unless they agree to a huge future migration effort.
@@EbonySeraphimYou mean like every other language?
@@Alex-lu4po yes, just like every other language that isn’t being discussed now.
@@EbonySeraphim but where should they migrate to then?
Nice presentation - and also very accessible!
It would have been better if there were various real-world code examples, where there was an issue. So instead of describing generic issue, it would be a concrete example from past experience...
Was coming in to comment exactly this… newer to programming myself in Go, I can’t say I know off the top of my head each smell(?) they were discussing here or how to do it specifically. Either way, enjoyed and thanks to the presenters for presenting.
When seeing "Gopher" and and greybeard like "Rob Pike" in the title, I thought of the old Minnesota link-hierarchy server.