- Видео 126
- Просмотров 224 501
GopherCon Europe
Добавлен 28 янв 2018
GopherCon has arrived to Europe on 2018 and we're traveling the continent:
2018 - Reykjavik, Iceland
2019 - Tenerife, Canary Islands
2020 - Online
2021 - Online
2022 - Berlin, Germany
2023 - Berlin, Germany
2024 - Athens, Greece & Berlin, Germany
Save the date: June 16-19 2025 - Berlin, Germany
2018 - Reykjavik, Iceland
2019 - Tenerife, Canary Islands
2020 - Online
2021 - Online
2022 - Berlin, Germany
2023 - Berlin, Germany
2024 - Athens, Greece & Berlin, Germany
Save the date: June 16-19 2025 - Berlin, Germany
GopherCon Europe 2024: Martin Gallauner - From Java to Go: I Have a Hammer and See Nails Everywhere
About the talk:
I want to talk about fallacies you might run into as someone who spent most of his developer career with Java and tries to apply the same train of thought to writing Go. Some of the topics I want to address are:
- Code organization and where are my classes?
- When ignoring pointers and always copying by value is maybe not the best idea
- What implicit interfaces want you to do
About the speaker: Martin Gallauner
I'm a developer with five years of experience, mainly within the Java ecosystem. Currently with Posedio, a Vienna-based company offering first-class consultancy services specialized in cloud native and DevOps. I pull from diverse experiences from my previous life as a h...
I want to talk about fallacies you might run into as someone who spent most of his developer career with Java and tries to apply the same train of thought to writing Go. Some of the topics I want to address are:
- Code organization and where are my classes?
- When ignoring pointers and always copying by value is maybe not the best idea
- What implicit interfaces want you to do
About the speaker: Martin Gallauner
I'm a developer with five years of experience, mainly within the Java ecosystem. Currently with Posedio, a Vienna-based company offering first-class consultancy services specialized in cloud native and DevOps. I pull from diverse experiences from my previous life as a h...
Просмотров: 738
Видео
GopherCon Europe 2024: Robert Laszczak - Rethinking Domain-Driven Design in Go
Просмотров 1,6 тыс.3 месяца назад
About the talk: Rethinking Domain-Driven Design in Go: From Myths to Reduced Project Complexity Splitting problems into smaller ones can be a good strategy for tackling complex problems. But sometimes, instead of making project development faster, the opposite happens. Ultimately, developing the simplest feature requires the heroic work of 10 teams on a dozen microservices over half a year. Sou...
GopherCon Europe 2024: Raghav Roy - Using Formal Reasoning to Build Concurrent Go Systems
Просмотров 6273 месяца назад
About the talk: Using Formal Reasoning to Build Concurrent Go Systems Go is popular for making concurrency easy through great language support for Goroutines and Channels, but getting it right is still up to you. In order to verify your design is truly correct, you need to look above the code and at the intent, but how does one do that? That’s where TLA comes in. About the speaker: Raghav Roy R...
GopherCon Europe 2024: Zvonimir Pavlinovic - Securing Containers Against Known Go Vulnerabilities
Просмотров 3383 месяца назад
About the talk: Securing Containers Against Known Go Vulnerabilities In this talk, we'll discuss the recent results on analyzing publicly available Google Cloud containers for known Go vulnerabilities. We’ll discuss what kind of Go vulnerabilities are prevalent in the containers, how often they present themselves, and how we can guard against them. About the speaker: Zvonimir Pavlinovic Zvonimi...
GopherCon Europe 2024: Felix Geisendörfer - How to Win Frames and Influence Pointers @felixge
Просмотров 6353 месяца назад
About the talk: How to Win Frames and Influence Pointers Go's execution tracer (aka go tool trace) has suffered from high overhead since its inception in 2014. Historically this has forced potential users to worry about up to 20% of CPU overhead when turning it on. Due to this, it's mostly been used in test environments or tricky situations rather than gaining adoption as a continuous profiling...
GopherCon Europe 2024 : Rabieh Fashwall - Unraveling Go Anti-Patterns
Просмотров 9683 месяца назад
About the talk: Unraveling Go Anti-patterns: Best Practices for Clean and Efficient Code Embark on a journey to enhance your Go programming prowess by unraveling common anti-patterns that can sneak into your codebase, hindering maintainability and efficiency. In this insightful talk, I will explore real-world scenarios, providing not just a diagnosis of these anti-patterns but, more crucially, ...
GopherCon Europe 2024: Hila Fish - Technical Documentation
Просмотров 3323 месяца назад
About the talk: Technical Documentation - How Can I Write Them Better and Why Should I Care? Gathering pieces of information for a task to deliver/modify a feature in your Go service, or dev project in any scale - is a wasteful act and could result in duplicated work done by different people. Onboarding, your ability to maintain your Go code or infrastructure and systems handover - Documentatio...
GopherCon Europe 2024: Jonathan Amsterdam - HTTP Routing Enhancements
Просмотров 6033 месяца назад
About the talk: HTTP Routing Enhancements Go 1.22 added two enhancements to the routing patterns for http.ServeMux: methods and path wildcards. I'll describe the new features, explain our search for a good rule for deciding which pattern wins in case of a conflict, and talk about how the changes affect performance. About the speaker: Jonathan Amsterdam Jonathan is a Software Engineer at the Go ...
GopherCon Europe 2024 - Chioma Onyekpere - Leveraging Go for Efficient Infrastructure&Data Handling
Просмотров 3073 месяца назад
About the talk: Leveraging Go for Efficient Infrastructure and Data Handling Astronomer is a platform that streamlines Apache Airflow's deployment, management, and scaling, a tool for orchestrating complex data workflows. In this talk, we'll delve into why the Astronomer team chose Go for their cloud-native development. We'll highlight Go's simplicity, performance, and scalability as key factor...
GopherCon Europe 2024: Travis Cline - Building AI Applications in Go
Просмотров 4643 месяца назад
About the talk: Building AI Applications in Go Go sits in a special place in the history of computing, with lineage from Unix, Bell Labs, and Plan 9. As the practice of programming shifts and AI capabilities grow, the way we build systems is evolving. In this talk, we'll explore how Go can be leveraged today in building AI-enabled tools and discuss what the future might hold. We'll delve into h...
GopherCon Europe 2024: Go Team Panel
Просмотров 3143 месяца назад
Panel Members: Cameron Balahan Cameron is a Product Manager and the product lead for Go at Google. Before Go, Cameron led Google Cloud's programming languages support and integrations and, before Google, he led a high frequency market making firm where he built low latency trading systems in C and C . He likes Go more. x.com/cameronbalahan Alice Merrick Alice is a User Experience Researcher at ...
GopherCon Europe 2024: Go in DevOps Panel
Просмотров 2573 месяца назад
Panel Members: Jonathan Amsterdam Jonathan is a Software Engineer at the Go team. Mat Ryer Mat is a Director of Engineering at Grafana Labs on the Machine Learning team. Author of Go Programming Blueprints and host of Go Time podcast. x.com/matryer Johnny Borsiquot Johnny Boursiquot is a multi-disciplined Software, Reliability, and Cloud Systems Engineer with over two decades of experience acro...
GopherCon Europe 2024: Agniva de Sarker - A Deep Dive into the DB Connection Pool
Просмотров 5183 месяца назад
About the talk: A Deep Dive Into the DB Connection Pool The database/sql package is the gateway to interact with a database. But do you know how it works internally? How does the connection pool work? How are the `maxOpenConns` and `maxIdleConns` limits respected? In this talk, we will unpack all of that and more as we dive deep into the innards of the `database/sql` package. You will leave the...
GopherCon Europe 2024: Go Time Podcast
Просмотров 1653 месяца назад
GoTime Podcast: x.com/GoTimeFM Host: Mat Ryer x.com/matryer Panel Members Cameron Balahan x.com/cameronbalahan Chioma Onyekpere x.com/simpcyClassy Ron Evans x.com/deadprogram Johnny Boursiquot x.com/jboursiquot Travis Cline x.com/traviscline Paula Babbicola x.com/pbabbicola #gopherconEU #golang
GopherCon Europe 2024: Diana Shevchenko - Memory Optimization through Structure Packaging
Просмотров 7183 месяца назад
About the talk: Pack Your Bytes, We're Building: Memory Optimization Through Structure Packing Overall, the talk is about optimizing code in applications where every byte matters. I will start with a quick introduction to memory layout in Go with a small example in a few slides. This will be to revise how Go structures occupy memory, explaining concepts like padding and hardware sympathy, follo...
GopherCon Europe 2024: Cameron Balahan - The Business of Go
Просмотров 1 тыс.3 месяца назад
GopherCon Europe 2024: Cameron Balahan - The Business of Go
GopherCon Europe 2023: Cameron Balahan - Keynote: The State Of Go
Просмотров 4,9 тыс.Год назад
GopherCon Europe 2023: Cameron Balahan - Keynote: The State Of Go
GopherCon Europe 2023: Xe Iaso - Reaching the Unix Philosophy's Logical Extreme with Webassembly
Просмотров 3 тыс.Год назад
GopherCon Europe 2023: Xe Iaso - Reaching the Unix Philosophy's Logical Extreme with Webassembly
GopherCon Europe 2023: Robert Grandl - Towards Modern Development of Cloud Applications
Просмотров 2,3 тыс.Год назад
GopherCon Europe 2023: Robert Grandl - Towards Modern Development of Cloud Applications
GopherCon Europe 2023: Björn Rabenstein - How to Avoid Breaking Changes in your Go Modules
Просмотров 762Год назад
GopherCon Europe 2023: Björn Rabenstein - How to Avoid Breaking Changes in your Go Modules
GopherCon Europe 2023: Yiscah Levy Silas - Go Right Ahead! Simple Hacks to Cut Memory Usage by 80&
Просмотров 2,2 тыс.Год назад
GopherCon Europe 2023: Yiscah Levy Silas - Go Right Ahead! Simple Hacks to Cut Memory Usage by 80&
GopherCon Europe 2023: Maciej Rzasa - API Optimization Tale: Monitor, Fix and Deploy
Просмотров 776Год назад
GopherCon Europe 2023: Maciej Rzasa - API Optimization Tale: Monitor, Fix and Deploy
GopherCon Europe 2023: Julie Qiu - Vulnerability Management for Go
Просмотров 557Год назад
GopherCon Europe 2023: Julie Qiu - Vulnerability Management for Go
GopherCon Europe 2023: Jonathan Amsterdam - A Fast Structured Logging Package
Просмотров 2,4 тыс.Год назад
GopherCon Europe 2023: Jonathan Amsterdam - A Fast Structured Logging Package
GopherCon Europe 2023: Drishti Jain - Go Beyond the Console: Developing 2D Games in Go
Просмотров 547Год назад
GopherCon Europe 2023: Drishti Jain - Go Beyond the Console: Developing 2D Games in Go
GopherCon Europe 2023: Ayesha Kaleem - Gentle Introduction to EBPF
Просмотров 598Год назад
GopherCon Europe 2023: Ayesha Kaleem - Gentle Introduction to EBPF
GopherCon Europe 2023: Julien Cretel - Useful Functional-Options Tricks for Better Libraries
Просмотров 3,1 тыс.Год назад
GopherCon Europe 2023: Julien Cretel - Useful Functional-Options Tricks for Better Libraries
GopherCon Europe 2023: Giuseppe Scaramuzzino - Unleashing Desktop App Development with Go and Fyne
Просмотров 590Год назад
GopherCon Europe 2023: Giuseppe Scaramuzzino - Unleashing Desktop App Development with Go and Fyne
GopherCon Europe 2023: Robert Burke - I'm Excited to Use Generics in Go 1.21
Просмотров 1,4 тыс.Год назад
GopherCon Europe 2023: Robert Burke - I'm Excited to Use Generics in Go 1.21
Good presentation thank you for sharing Rabieh Fashwall +1
I just learned delve and feel the endless stream of print statements that I produced in my life will finally diminish ;-)
FWIW, I've since nuanced my stance on the functional-options pattern. If you're dead set on implementing it, I remain convinced that the tricks I presented in this talk still stand. However, I ended up re-implementing my CORS library with a more traditional config-struct approach, and I'm quite happy with the result; see jub0bs/cors.
Great talk! Easy to follow examples with proper explanation.
Very insightful talk - thank you. 🙏
Really good talk. Thank you Robert
Link to slides: docs.google.com/presentation/d/1rnCYgT41quuSKk-p9o7WOfzI5xoUAgEG4MTlZljjenQ/edit#slide=id.g1e07bf1996f_3_1588
woah thanks for this!
Nice one Agniva! Great presentation!
This is a fantastic talk and it has been featured in the last issue of Tech Talks Weekly newsletter 🎉 Congrats!
if Go users are stakeholders, then why there is no donation page like zig does for external users? Does it look unprofessional in an enterprise setting if they asked for donations?
He had me at "I was able to find this really scientific graph on the internet" 🤣 Thanks for a great talk, really enjoyed it.
I can vouch for that, he's very friendly and approachable🙌
Woo!
Making additional layer for database is hard way. You can avoid a lot of problems put repositories near domain entities.
Love it! Can't wait for LanggraphGo 🙂
Great talk, thank you so much!!
Hate to be pedantic but putting a dep in your server is literally global state. Not saying you should t do it btw. Great talk
Putting text in floating boxes does not make it visual language.
Nice talk :)
really cool talk
Really instructive for me, I'll try in my project.
archmage! . love it! :)
This was such a concise and engaging talk. I love discovering talks that aren't thrown around everywhere and this is definitely one of those gems!
Great talk. Thanks for sharing
You ready 2 connect yo nuts to yo brain if u get me. Stop thinking dirty mkkay 😂 🔩🔩
Why was Ken Thompson written out of the history at the beginning of this talk? Otherwise great talk.
It is weird omission.
This was very informative. Thanks!
One of the best session on OTEL. Thanks a lot. Very detailed 👏
In my opinion, functional options add so much complexity and hurt performance just to make your code more "expressive" and "clear at call-site", that they are not worth using in the majority of cases.
Complexity in the implementation (hidden away from users) or complexity in the interface? Obviously, you have to strike the right balance between the two but, as a library author, I don't mind a bit of complexity in the implementation if I can spare my users some complexity in the interface; that's the power of information hiding. As for performance, if functional options are invoked once at startup (not on the hot path of the program) as in my example of a middleware, any incurred performance hit is unlikely to matter much. Finally, note that many of the "principles" (e.g. fallible factory functions) I discuss in my talk are applicable to the traditional config-struct approach.
@@jub0bs I might be biased, since I tend to see functional options being used for required config options, or fail if there is no other special functional option (like consumer group options in franz-go Kafka client library) In theory, functional options do help with the clear interface, when they are combined with traditional options. But in practice, they are very easy to implement poorly Thanks for your replies!
@@sealoftime I agree that functional options are difficult to implement "correctly". The idea for my talk indeed stemmed from my observation of frustrating implementations of that pattern in the wild, which led many members of the Go community to altogether dismiss (unfairly, IMO) the pattern.
This makes me appreciate slog even more.
I think the unit and integration tests are not comparable, it's like apple vs pear case. Each testing level has own advantages and disadvantages. Unit test is good, when you write new unit or new code for a unit, and you need a quick feedback. This can work even if the feature is not implemented fully since it's about testing the unit. In addition, from security perspective unit tests can test the "impossible" paths within the code. And yes, the unit tests are relatively simple compared to the higher levels of testing. Integration is good, when you want test the feature itself. So, units can work together to serve in a proper way. Testing deeply the feature most probably will require more complex code. Both of them are important and they cannot replace each other. I also think based on my experience in SW development that for a good product at least two different levels of testing are needed.
Great talk! Learned so much :)
The example for “structs not being expressive enough” (~7:00) artificially limits itself. They are easily expressive enough if you relax the arbitrary imposed constraints of requiring the value of MaxAge to be the only thing affecting the actual MaxAge header by adding an additional property that controls the caching part and determines whether to include a zero MaxAge or omit it.
At 25:13, the argument to use multiple packages can be more simply handed in one package when you use structs by embedding a ‘Risky’ type in you main struct.
Two arguments against structs are the “visually noisy” data, and the “harder to read docs.” That is clearly the presenters personal preference as I find the exact opposite to be true. That said, I can work with either so I don’t find either of those to be compelling arguments for or against.
This is a big one for me, on ~24:30 the argument is made that using functional options allows for compile time errors, which is great for this rare-case need, but then the presenter relegates handling of more commonly occurring errors to run-time rather than compile-time - ~10:00, ~11:30, ~12:00, ~12:45. Alternatively he requires the developer to discover special cases in the docs rather than make them explicit in a struct, e.g. by having two properties - `FromOrigin` and `FromOrigins` - so usage is obvious for both implementing and reading, and returning an error if both are used. IMO, the common case should trigger compile errors and the rare case should trigger panics, and not vice-versa. This is, of course, if we have to choose.
Lastly, It is clear to me that the presenter really prefers functional options to structs as options because all of his pro and con arguments are biased towards functional options and against struct options. That does not make him wrong per se, it just means he is a human with an opinion. But an inexperienced and/or naive viewer might not be able to discern the bias in his arguments and instead consider his arguments as if gospel. Hopefully my comments can balance our that bias so that the inexperienced and/or naive viewer can evaluate their choices solely on the merits and make their own decision.
@MikeSchinkel Ok, but then wouldn't users have to set two fields of the config struct just to specify that a custom max age be used? Compare that to one option call, which is more ergonomic in my opinion.
Great talk, and great delivery! I particularly enjoyed the explanation of the singleflight package (starting at 10:40).
The purists must be furious when she says golang instead of go 😂
I _knew_ that this guy was a man... based just on his website. What's up with the weird furry chat avatars, multiple personality disorder larp?
Nice presentation, context canceling in errgrouops is what I definitely would use
Excellent talk. I've been using this pattern for a while, and you've given me a few new ideas to add to my toolset!
That was a brilliant talk (not too deep and not too shallow) and with go examples, thank you!
Great Talk.
That’s a roll, not loop, Ron 🤦♂️😂 Great energetic talk!
Very interesting talk Maciej, great work here and there! 😉
Conferences that post videos without the questions are lame.
Perhaps, but there was no Q&A after any of the talks at GopherCon Europe 2023.
Webassembly is here to stay. 🙋♂8:08 𝗗𝗶𝗱 𝗮𝗻𝘆𝗼𝗻𝗲 𝗻𝗼𝘁𝗶𝗰𝗲 𝘄𝗵𝗮𝘁'𝘀 𝗺𝗶𝘀𝘀𝗶𝗻𝗴 𝗶𝗻 𝘁𝗵𝗲 𝗨𝗻𝗶𝘅 𝗽𝗶𝗽𝗲 𝘀𝘆𝘀𝘁𝗲𝗺? That's right, 𝚜𝚝𝚍𝚞𝚒 for user interactions. Neither stdout nor stderr is suitable for interacting with the end-user during an interactive session (print a question and read the answer, etc). If you are using stdout instead of stdui then the output can't be piped, same with stderr.
Very good point about the conspicuous absence, in this prevalent *nix paradigm, of an `stdui`.
This was so much fun to watch! Thanks for sharing it!
There's a reason file operations are reminiscent of tapes........
I always enjoyed your blog and I'm positively surprised by how enjoyable this presentation is
*Summary* *Introduction* - Speaker: Xe Iaso - Topic: Integrating WebAssembly with Unix Philosophy - Goal: To simplify programming by compiling third-party libraries to WebAssembly. *Unix Philosophy* - Core principle: "Everything is a file." - File handles in Unix are arbitrary integers, indices in an array in kernel memory. - Basic model: Open, Close, Read, Write, Seek - Network sockets and processes are also treated as files. *WebAssembly (Wasm)* - A compiler target for an imaginary CPU. - Intended to be a level below JavaScript. - Initially lacks capabilities like file systems or internet connectivity. *WebAssembly System Interface (WASI)* - Provides semantics for IO, files, file systems, and basic network operations. - Makes WebAssembly more like an OS. - Allows for cross-platform compatibility. *Crabto Espionage Technique* - Embedding Rust programs into Go programs using WebAssembly. - Uses the Go library Wazero for WebAssembly VM and WASI hooks. - Allows for the use of C libraries without needing a C compiler. *Practical Example* - Markdown parser written in Rust, compiled to WebAssembly, and embedded in a Go program. - Demonstrated a live demo involving an echo server and client. *Advantages* - No need for multiple compilers or cross-compiling. - Isolation and security through WebAssembly. - Enables plugin architectures. *Conclusion* - By understanding and leveraging the Unix philosophy, one can simplify and extend programming paradigms. - Encourages the audience to think about how they can apply these ideas in their own projects.
You can just copy transcript from RUclips you know
But thank you nonetheless!
🤚I even possessed and used QIC tapes in a Wangtec QIC drive for backup; even restore.