- Видео 351
- Просмотров 536 024
Ziverge
США
Добавлен 14 янв 2020
The official RUclips channel of Ziverge Technologies.
Zymposium l Golem 1.0 Hackathon Solution Breakdown
Host: John De Goes
Guests: Daniele Torelli & Afsal Thaj
Recorded on: 10.25.2024
Welcome to Zymposium: using innovation, static types, and attention to pain points and developer experience, learn how to create award-winning open source that changes the way we build software!
In this episode, we sit down with Daniele Torelli, winner of the Golem 1.0 Hackathon, and Afsaj Thaj from the Golem Cloud team, to break down the winning entry.
Follow us on Twitter:
@zivergetech
Follow Golem on Twitter:
@golemcloud
Guests: Daniele Torelli & Afsal Thaj
Recorded on: 10.25.2024
Welcome to Zymposium: using innovation, static types, and attention to pain points and developer experience, learn how to create award-winning open source that changes the way we build software!
In this episode, we sit down with Daniele Torelli, winner of the Golem 1.0 Hackathon, and Afsaj Thaj from the Golem Cloud team, to break down the winning entry.
Follow us on Twitter:
@zivergetech
Follow Golem on Twitter:
@golemcloud
Просмотров: 183
Видео
[PART 2] Don't Rewrite ALL The Code: Leveraging WebAssembly for Type-Safe High-Performance Workflow
Просмотров 1662 месяца назад
Host: John De Goes Guest: Cameron Smith Recorded on: 7.19.2024 Watch all the parts: Part 1 ruclips.net/video/vlVUMgfGvjQ/видео.html Part 2 ruclips.net/video/rH4goxYNHOw/видео.html Part 3 ruclips.net/video/1DNltQ6mv-k/видео.html Welcome to Zymposium's series Building Better Open Source. Using innovation, static types, and attention to pain points and developer experience, learn how to create awa...
[PART 3] Don't Rewrite ALL The Code: Leveraging WebAssembly for Type-Safe High-Performance Workflow
Просмотров 1202 месяца назад
Host: John De Goes Guest: Cameron Smith Recorded on: 8.16.2024 Watch all the parts: Part 1 ruclips.net/video/vlVUMgfGvjQ/видео.html Part 2 ruclips.net/video/rH4goxYNHOw/видео.html Part 3 ruclips.net/video/1DNltQ6mv-k/видео.html Welcome to Zymposium's series Building Better Open Source. Using innovation, static types, and attention to pain points and developer experience, learn how to create awa...
[PART 1] Don't Rewrite ALL The Code: Leveraging WebAssembly for Type-Safe High-Performance Workflow
Просмотров 5764 месяца назад
Host: John De Goes Guest: Cameron Smith Recorded on: 7.12.2024 Watch all the parts: Part 1 ruclips.net/video/vlVUMgfGvjQ/видео.html Part 2 ruclips.net/video/rH4goxYNHOw/видео.html Part 3 ruclips.net/video/1DNltQ6mv-k/видео.html Welcome to Zymposium's series Building Better Open Source. Using innovation, static types, and attention to pain points and developer experience, learn how to create awa...
Heroes of Ziverge: Leo Benkel (Experienced Engineer at Ziverge)
Просмотров 1754 месяца назад
Heroes of Ziverge: Leo Benkel (Experienced Engineer at Ziverge)
Heroes of Ziverge: Jorge Vásquez (Senior Software Engineer at Ziverge)
Просмотров 5114 месяца назад
Heroes of Ziverge: Jorge Vásquez (Senior Software Engineer at Ziverge)
Zymposium: Building Better Open Source (June 14th, 2024)
Просмотров 2035 месяцев назад
Zymposium: Building Better Open Source (June 14th, 2024)
Zymposium - Building Better Open Source series part II (April 5, 2024)
Просмотров 4797 месяцев назад
Zymposium - Building Better Open Source series part II (April 5, 2024)
Zymposium - How to Build an OSS Library that Provides Golden Testing (April 12, 2024)
Просмотров 3307 месяцев назад
Zymposium - How to Build an OSS Library that Provides Golden Testing (April 12, 2024)
Zymposium - Learn How to Build Better Open Source with John A. De Goes (March 22, 2024)
Просмотров 1,1 тыс.7 месяцев назад
Zymposium - Learn How to Build Better Open Source with John A. De Goes (March 22, 2024)
How To Catch Graphs With Linked Lists And Generics by Aleksandr Novikov at Functional Scala Conf
Просмотров 3188 месяцев назад
How To Catch Graphs With Linked Lists And Generics by Aleksandr Novikov at Functional Scala Conf
Exploring Language Design with 'Flappy' by Satoshi Ogasawara at Functional Scala Conference
Просмотров 1848 месяцев назад
Exploring Language Design with 'Flappy' by Satoshi Ogasawara at Functional Scala Conference
The Pain Of Engineering Management by Roksolana Diachuk
Просмотров 2438 месяцев назад
The Pain Of Engineering Management by Roksolana Diachuk
Releasing Kyo: When Performance Meets Elegance In Scala by Flavio Brasil
Просмотров 2,2 тыс.8 месяцев назад
Releasing Kyo: When Performance Meets Elegance In Scala by Flavio Brasil
Pathodental Complexity by Alexander Ioffe
Просмотров 3708 месяцев назад
Pathodental Complexity by Alexander Ioffe
Durable Computing For Scala by Adam Fraser
Просмотров 8398 месяцев назад
Durable Computing For Scala by Adam Fraser
Solid & Flexible: The Tour Of Temporal Workflows by Vitalii Honta
Просмотров 2618 месяцев назад
Solid & Flexible: The Tour Of Temporal Workflows by Vitalii Honta
Observability With ZIO-Telemetry by Pierangelo Cecchetto
Просмотров 3078 месяцев назад
Observability With ZIO-Telemetry by Pierangelo Cecchetto
The Ubiquity Of Functional Programming Concepts In Latest Tech by Afsal Thaj
Просмотров 4708 месяцев назад
The Ubiquity Of Functional Programming Concepts In Latest Tech by Afsal Thaj
Practical Codegen: Metaprogramming For Pragmatists by Devon Stewart
Просмотров 1598 месяцев назад
Practical Codegen: Metaprogramming For Pragmatists by Devon Stewart
Grandmaster: Multi-Modal Heterogeneous Build Tool For Scala by Pavel Shirshov
Просмотров 1148 месяцев назад
Grandmaster: Multi-Modal Heterogeneous Build Tool For Scala by Pavel Shirshov
Elevating API Design With Smithy: A Close Look At Smithy IDL And Smithy4s by Yisrael Union
Просмотров 2248 месяцев назад
Elevating API Design With Smithy: A Close Look At Smithy IDL And Smithy4s by Yisrael Union
ZIO-HTTP In Comparison by Nabil Abdel-Hafeez
Просмотров 4728 месяцев назад
ZIO-HTTP In Comparison by Nabil Abdel-Hafeez
Letting Go Of Data Encapsulation: Unlocking New Possibilities by Michael Perucca
Просмотров 1758 месяцев назад
Letting Go Of Data Encapsulation: Unlocking New Possibilities by Michael Perucca
Using Testcontainers For Testing by Jasper van Zandbeek
Просмотров 1158 месяцев назад
Using Testcontainers For Testing by Jasper van Zandbeek
Harnessing The Power Of ZIO Schema: Beyond The Limits Of Common Techniques by Jaroslav Regec
Просмотров 2898 месяцев назад
Harnessing The Power Of ZIO Schema: Beyond The Limits Of Common Techniques by Jaroslav Regec
Thank you, do not think this will be possible for life sciences(Nucleotide,Genomic, Teritary Protein Structure etc) or physics(HLC) scenario....believe it's limited in its scope
nice! thanks for sharing, definitely archiving this one for later reference
I had to use a CountDownLatch in the FiberImpl to make a proper wait until the thread joins because even with the Thread.sleep the main thread was still exiting early.
Please use high contrast next time.
Scala needs ohne killer Feature to survive. Maybe full wasm and wasi support?
@kitlangton // 4. Companion Object Idioms // - constructors / higher-arity combinators // - example using Coord May I know know where can I find the content of this topic??? Any RUclips links and gists?
i watched it twice, but it seems to be more about zio rather than the idea of functional effect systems and an introduction for functional beginners .
Thank you.....
Great concept-will take a couple of impressions to get it, but I like the idea. Some real innovation! Honestly I’m in favor of anything to help push forward the effectful functional model. Granted this is a first release, so I would expect everything to be optimized yet, but do you have any baseline benchmarks?
Thank you......lot of errors in scientific papers!!!!!!! [ reproducability,!!! what happen to the 3R's ]
Thank you, however, it sounds like returning to "MapReduce" scenario, in big data space using more of a concurrency/parallel processing paradigms for [bioinformatics, cheminformatics, and for deeper scientific computing scenario[from datasets form sites such as LHC, FCC and similar sites around globe etc], however, still few confusing statements such as is it a OnPremise or Cloud computing?, consider these are two different scenario and "regional" means more of a cloud computing, most scientist or research professional prefer the prior than the later...also would like state aware of academic credentials of both parties, and still would suggest folks without inter disciplinary lower level knowledge, skills and talents are not ideal folks to be associated with levels of development(POC), even though they might possess Phds in their respective fields, since most platforms available out there does not fulfill needs [Blast, NCBI, SNP, Galaxy etc] most deeper research professionals and scientific folks even in 2024...., though the story of Big Data from 2008....something like that, and functional programming is like 1940....something like that and the rest thought process should be able figure out....
nice I love scala-cli
16:04 "The rust language was designed for synchronous code" - really? I think rust was designed for programming with threads rather than with async/await. Another thing that makes async/await complicated for rust is that it does not have a standard async runtime nor does it require an async runtime.
Memory safety, type safety allowed fearless concurrency. But we are used to async pattern. I feel go did a great work. Balancing between performance and how simple it is do it.
is it still posible to signup?
Yes! Register here: share.hsforms.com/1VeS7vcAdRyqme1TLriu-YA444dk Watch the live here: ruclips.net/video/RRet38EwSoo/видео.html Join us on Discord to ask any questions (and download the guide): discord.com/invite/c3esdEfywj We'll expect you at 1pm EDT tomorrow 👀
Sum types and subtyping are similar right?
Make sure to subscribe to our designated Durable Computing channel, where we talk more about Golem 💪 www.youtube.com/@DurableComputing
Yes! Come on over 👀
Nice demo, congratulations on the 1.0 launch! During the demo Daniel says that it's impossible to update the worker under certain conditions: namely when interface changes (though it seems like in the demo only the implementation was changed?). That brings a more general questions of how to evolve worker states: e.g. how to migrate the state from test2 to test22 atomically during update? And is there a shortcut for common cases, e.g. adding a new field with default value to the State class?
Thanks for the question! I might have been wrong in the live demo about not being able to use worker update in that particular case. It was hard to quickly think it through while not getting out of the planned schedule. Golem supports two ways to update a worker to a new component version. Automatic update basically replays the whole history of the worker using the new codebase. This potentially can fail, if there were "too big" changes in the codebase. If it fails, the worker is restored to its original version and it works as if nothing happened (and the failed update attempt is available in the worker metadata). So this means that you can change anything (including the external interface) that has not run yet, but if something ran, then the possibilities are limited to small fixes that do not change the (observable) outcome. For example if you invoked function A, and it returned a value, that value is persisted, and if the modified version would return a different value, that is a divergence and fails the update. But if the change only affects things that are not observable (persisted) then it's fine. Of course there are cases when you have to do such a change that cannot be applied to a worker automatically, but you still need to preserve your worker AND have the new version running. For this we support something we call manual update; in this case you have to implement a `save` function in the old version (if it was not there yet, it can be added and auto-updated as it's something never ran yet!) and a `load` function in the new version, and you have to serialize/restore your state manually from an arbitrary byte array. Once the functions are implemented, the process of running them as part of the update process is orchestrated by Golem.
@@DanielVigovszky Thanks for the great response! Having two cases makes sense, but doesn't it mean that Golem has to store the history of all arguments of each interface function invocation in order to attempt automatic update? That seems to be quite demanding on storage: does Golem support remote object stores for such metadata? And even then, if the first version of the worker was launched say a month ago and actively used, wouldn't automatic update be prohibitively time-consuming for any change to that worker? Meaning that save/load implementations would rather be the default approach.
@@yfjolne You are right that for automatic update we always need to use the full history, even if snapshots would be used to optimise recovery (which is by the way on the roadmap but not enabled right now). So this is a tradeoff the user can make between having to implement custom code, or use the built-in machinery. Both makes sense depending on your workers and their lifetime. So if we need to store the journal forever, how do we do it? It is stored in multiple layers, the primary layer is the one being written in live - that's currently a redis stream. There are (configurable number of) secondary layers, either further Redis streams, or S3 buckets, where old entries got moved in compressed chunks. The default configuration right now is 1 archive layer in Redis and 1 in S3. Eventually if you are not accessing a worker, it gets completely moved down to the bottom layer. We only have redis+s3 implementation now, but it's designed in a way that it should be easy to implement connectors for other data storages (just need to implement a keyvaluestore, an indexedstore and a blobstore interface) See more at learn.golem.cloud/docs/operate/persistence#oplog
@@DanielVigovszky I see, thank you for the detailed reply.
amazing interview indeed
Great trolling, none of these are trully a problems of Rust, those are issues with Scala.
Too good to be true?
John, here it Goes
I'm learning SCALA right now. Why does it need WASM?
Since Java got lambdas and streams, Scala does provide very few advantages. And tones of complications.
Scala is great language. Thank you for supporting
very nice detailed explanation for beginners
Its a must watch, thanks for this session
Why the fight when you can use Loom inside the ZIO or Kyo or Cats Effect one of these days !! 👍😎 ... This requires a heavy rewrite of these tools but it's possible or at least more productive than fighting 😅😇
Great video Yisrael ❤
Nice, I was waiting for next vide ;-=
It's no Clojure... I have had no end of issues with Scala and backwards compatibility. Even just simple version changes w/libraries. Not with Clojure. I like Scala, but I love Clojure.
If you have multiple instances, the STM cannot solve the transaction problem, right?
Hey John, really cool and comprehensive subject, thanks for your contributions to the Scala community and to helping improve engineers. I would have a suggestion for a topic for your open-source series, which would be open-sourcing a commercial project.
she got a glimpse into the Matrix sqeeze the people but not so much that they'll break
Difficult to follow due to the ambient room reverb. It's generally better to use a mic.
39:10 Isn't Scala.JS very much integrated in Scala?
34:10 scala-cli is probably much better than cargo
i am learn a lot from scala to understand rust
Dependency Injection Attacks [19:26] 😂🤣😂🤣
Scala value prop (for me at least): write reliable concurrent code on the JVM, easily.
This is great! I like seeing things process.
Excellent stuff, Nabil. I appreciate seeing the progression of the DSL and how it reached its awesome current state.
What you describe with "you say what you want to do" is actually a command on CQRS, as I said you can apply your Flows as an abstraction that behind the scenes use CQRS + ES (each flow step is one command that generates 1 to n events)
Some comments related with your comments on event sourcing: - you never retry events, you retry a command (and if the command fails 0 events are generated), events are always facts that happened in the past and hence there is no need to retry anything (commands are actions that produce events) - I do agree in most cases it's true using ES is accidental complexity and that is a new paradigm, but I dont agree that makes you change ALL your application. If you follow DDD it will only affect a part of your application, normally a bounded context where CQRS + ES is justified - Also you don't mention that once you have the events stored is super easy to reply them and create new views or feed other aggregates, in a super natural way compared with a traditional "store snapshot" approach with CRUD - Kafka is not a good fit for event sourcing as it doesn't have optimistic locks, I saw super good implementations using Postgres, event sourcing is NOT event streaming, it's a style of how you store your events - The example of the shopping cart is actually a good fit for event sourcing, for example when you need information for analytics it's super easy to replay all events from our users and create different views, but if you read from transactional tables you miss lot of information relevant for data science models - I actually think you can apply durable computing on top of event sourcing, they are compatible things solving different concerns, event sourcing is used to reflect business (it's linked to domain) where durable computing is about fixing non-functional issues like failures, hardware retries, etc. You can apply both together
Really enjoying this series - thank you both, Nabil and John!
Probably the most convoluted implementation of tic tac toe I've ever seen 😅
Oh yeah. It definitely balloons when trying to be precise, and we’ve probably surpassed the point of “is it worth it?”
Thanks Daniel, great session!
Here he goes! 💪💪
Pragmatist here: Correct me if I am wrong but as far as I can tell Scala has the following to learn from Rust: 1) It has to learn to work with out the JVM (or any kind of run-time system). Requiring the JVM implies bloat and poor performance. That excludes use of Scala from much of the work I do. 2) It has to learn to work without a garbage collector. A garbage collector introduces unpredictability in performance. It also excludes use of Scala from much of the work I do. 3) It has to learn to run in only kilobytes of code space on micro-controllers and the like. 4) It has to learn that maths is great and all, but maths is limited. Maths does not have a solution for the many body problem, for example. As for monoids, I had them surgically removed as a child.
Scott Wlaschin - Designing with capabilities ruclips.net/video/RqlnWv6NZos/видео.html
Interesting video! One advantage of this over the capability approach is the ability to define the move validity at the method definition, forcing the implementer to check the game is in a valid state before applying a user’s request.