By Eduardo Lima.
GNOME, the free desktop environment, has embraced Javascript. Starting from version 3.0, Javascript is at the core of the user experience delivered to tens of thousands of GNOME users out there. We call it the gnome-shell, but the real beauty lies within.
This presentation will give you a brief tour around the great technology behind the shell, a technology that GNOME hackers use to have automatic reflection of their core libraries into Javascript. Yes, you read well, automatic! It is called gobject-introspection and gives you the super-powers of Javascript-ing most of the hardcore C libraries that powers GNOME, from multimedia, web browsing, accelerated 2D and 3D graphics, communications, UX, hardware interaction, and many more.
During the talk, a couple of examples will be discussed, some demos dropped, and we might hack the shell on-the-fly as well!
By Eduardo Lima.
GNOME, the free desktop environment, has embraced Javascript. Starting from version 3.0, Javascript is at the core of the user experience delivered to tens of thousands of GNOME users out there. We call it the gnome-shell, but the real beauty lies within.
This presentation will give you a brief tour around the great technology behind the shell, a technology that GNOME hackers use to have automatic reflection of their core libraries into Javascript. Yes, you read well, automatic! It is called gobject-introspection and gives you the super-powers of Javascript-ing most of the hardcore C libraries that powers GNOME, from multimedia, web browsing, accelerated 2D and 3D graphics, communications, UX, hardware interaction, and many more.
During the talk, a couple of examples will be discussed, some demos dropped, and we might hack the shell on-the-fly as well!
scala.concurrent.Future is familiar to nearly all Scala devs.
This presentation first talks about referential transparency and the IO Monad in general. (Monix Task is an impl of the IO Monad.)
Then it compares Future Monix 3.x Task with their Pros and Cons.
Interop with Future: As Scala's Future is used in many environments and libraries, we look at the conversion from Task to Future and - vice versa - from Future to Task.
I will also take a look at Task evaluation, cancelation and memoization as well as tail recursive loops and asynchronous boundaries.
The presentation will include a comparative discussion on ExecutionContext (required for Future) and Scheduler (required for Task, but only to run it).
Often recurring on the valuable Monix Task doumentation at https://monix.io/docs/3x/eval/task.html the presentation can also be seen as an introduction to Monix Task.
With my simple implementation I wanted to demonstrate the basic ideas of th IO Monad.
My impl of the IO Monad is just a feasibility study, not production code!
When coding my impl of IO I was very much inspired by cats.effect.IO and monix.eval.Task which I studied at that time. Both are implementions of the IO Monad.
The API of my IO is very similar to the basics of Monix Task. This IO implementation also helped me to understand the IO Monad (of cats-effect) and Monix Task.
Interop with Future is also supported. You can convert IO to a Future. Vice versa you can convert a Future to an IO.
The development of my impl can be followed step by step in the code files in package iomonad.
Joe Bew - Apprendi un nuovo linguaggio sfruttando il TDD e il Clean Code - Co...Codemotion
Al giorno d'oggi un buon programmatore non lo distingui solo dalle competenze che ha sul singolo linguaggio ma dalla capacità di sapere scrivere codice leggibile e manutenibile. Un metodo per affinare questa capacità può essere costruito da alcune pratiche base che ogni buon professionista dello sviluppo software dovrebbe portare nella propria cassetta degli attrezzi. In questo talk vi presento un case study su come si può imparare un nuovo linguaggio di programmazione (Elixir) avendo come supporto all'apprendimento le pratiche del Clean Code e del Test-Driven Development.
Effecting Pure Change - How anything ever gets done in functional programming...Tech Triveni
Newcomers to functional programming are often mystified when they encounter pure functions and immutable data structures. A mathematical function which always produces the same output for the same input is so inflexible as to be almost useless! And surely how can you even represent even the simplest of dynamic program state without variables to store it in, to say nothing of fancy user interfaces, and complex input output.
This talk will present an overview of the various techniques that are used by functional programming languages to tackle state and external "effects" which are needed for any real world program. It will cover a large landscape ranging from Monads, to Algebraic Effects, to Functional Reactive Programming. And it will show how functional programming can be as *useful* for real world programs, as it is *beautiful*.
Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/1Ihu917.
Jafar Husain shows the Reactive Extensions (Rx) library which allows to treat events as collections, how Netflix uses Rx on the client and the server, allowing to build end-to-end reactive systems. Filmed at qconsf.com.
Jafar Husain developed software for companies like GE, Microsoft, and Netflix. He specializes in building web servers and clients using functional reactive programming, and was the first user of the Reactive Extensions Framework. He's also responsible for "Falkor", a RESTful data access framework that powers most Netflix clients.
Developer Experience i TypeScript. Najbardziej ikoniczne duoThe Software House
Wiktor Toporek: TypeScript bez wątpienia jest obecnie pewnym standardem wśród obecnych rozwiązań powstałych w JavaScripcie. Ale czy poza byciem dodatkiem który uzupełnia odrobinę dokumentacje i deklaruje kontrakt jakiego typu parametry przyjmują i zwracają np. funkcje jakiejś biblioteki, można wycisnąć z niego coś więcej? Podczas prezentacji wykorzystamy TypeScript do granic możliwości, używając zaawansowanych technik które sprawiają że interfejs naszego API będzie sam kierował używających go developerów na drogę poprawnego użycia, które jest zgodne z naszymi (twórców) założeniami, poprawiając tym samym ich doświadczenia.
An overview how to realize code generation of languages on the JVM that implement other class layouts than the Java programming languages. As an example, the inline-mock-maker for Mockito is discussed which supports languages like Kotlin that make any property final by default.
Functional Programming in Java - Code for MaintainabilityMarcin Stepien
Functional Programming is nothing new to the JVM. But with Java 8 it was the big change in paradigm for Java developers. Learn how switching from imperative to functional results in more maintainable code.
The presentation was given at tech meetup KrkDataLink, The missing link between Functional Programming and Data Science.
In Java 8, the java.util.function has numerous built-in interfaces. Other packages in the Java library (notably java.util.stream package) make use of the interfaces defined in this package. Java 8 developers should be familiar with using key interfaces provided in this package. This presentation provides an overview of four key functional interfaces (Consumer, Supplier, Function, and Predicate) provided in this package.
What's in Groovy for Functional ProgrammingNaresha K
Slides from my APACHECON@HOME 2020 talk - "What's in Groovy for Functional Programming".
The directions in which popular programming languages are heading to is clear evidence of the need for multiple programming paradigms. One such programming paradigm that is gaining attention these days is functional programming. Groovy too has embraced functional programming and provides a wide variety of features for a developer to code in the functional style. In this session, I demonstrate the functional programming features of Groovy. We start with the higher-order function support in Groovy and see the benefits they offer. From the example, we can observe that functional programming is indeed idiomatic in several parts of Groovy. We then step into implementing functional composition, currying, memoizing tail-call optimization, and recursion.
ZIO: Powerful and Principled Functional Programming in ScalaWiem Zine Elabidine
This is an introduction of purely functional programming type safe abstractions that provide a variety of features for building asynchronous and concurrent applications data structures built on ZIO.
You'll learn by examples about the power of functional programming to solve the hard problems of software development in a principled, without compromises.
Redux saga: managing your side effects. Also: generators in es6Ignacio Martín
Explanation of redux-saga for its use in React and React Native. Contains an explanation about ES6 generators, used in sagas, with emphasis in generators to manage async code.
scala.concurrent.Future is familiar to nearly all Scala devs.
This presentation first talks about referential transparency and the IO Monad in general. (Monix Task is an impl of the IO Monad.)
Then it compares Future Monix 3.x Task with their Pros and Cons.
Interop with Future: As Scala's Future is used in many environments and libraries, we look at the conversion from Task to Future and - vice versa - from Future to Task.
I will also take a look at Task evaluation, cancelation and memoization as well as tail recursive loops and asynchronous boundaries.
The presentation will include a comparative discussion on ExecutionContext (required for Future) and Scheduler (required for Task, but only to run it).
Often recurring on the valuable Monix Task doumentation at https://monix.io/docs/3x/eval/task.html the presentation can also be seen as an introduction to Monix Task.
With my simple implementation I wanted to demonstrate the basic ideas of th IO Monad.
My impl of the IO Monad is just a feasibility study, not production code!
When coding my impl of IO I was very much inspired by cats.effect.IO and monix.eval.Task which I studied at that time. Both are implementions of the IO Monad.
The API of my IO is very similar to the basics of Monix Task. This IO implementation also helped me to understand the IO Monad (of cats-effect) and Monix Task.
Interop with Future is also supported. You can convert IO to a Future. Vice versa you can convert a Future to an IO.
The development of my impl can be followed step by step in the code files in package iomonad.
Joe Bew - Apprendi un nuovo linguaggio sfruttando il TDD e il Clean Code - Co...Codemotion
Al giorno d'oggi un buon programmatore non lo distingui solo dalle competenze che ha sul singolo linguaggio ma dalla capacità di sapere scrivere codice leggibile e manutenibile. Un metodo per affinare questa capacità può essere costruito da alcune pratiche base che ogni buon professionista dello sviluppo software dovrebbe portare nella propria cassetta degli attrezzi. In questo talk vi presento un case study su come si può imparare un nuovo linguaggio di programmazione (Elixir) avendo come supporto all'apprendimento le pratiche del Clean Code e del Test-Driven Development.
Effecting Pure Change - How anything ever gets done in functional programming...Tech Triveni
Newcomers to functional programming are often mystified when they encounter pure functions and immutable data structures. A mathematical function which always produces the same output for the same input is so inflexible as to be almost useless! And surely how can you even represent even the simplest of dynamic program state without variables to store it in, to say nothing of fancy user interfaces, and complex input output.
This talk will present an overview of the various techniques that are used by functional programming languages to tackle state and external "effects" which are needed for any real world program. It will cover a large landscape ranging from Monads, to Algebraic Effects, to Functional Reactive Programming. And it will show how functional programming can be as *useful* for real world programs, as it is *beautiful*.
Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/1Ihu917.
Jafar Husain shows the Reactive Extensions (Rx) library which allows to treat events as collections, how Netflix uses Rx on the client and the server, allowing to build end-to-end reactive systems. Filmed at qconsf.com.
Jafar Husain developed software for companies like GE, Microsoft, and Netflix. He specializes in building web servers and clients using functional reactive programming, and was the first user of the Reactive Extensions Framework. He's also responsible for "Falkor", a RESTful data access framework that powers most Netflix clients.
Developer Experience i TypeScript. Najbardziej ikoniczne duoThe Software House
Wiktor Toporek: TypeScript bez wątpienia jest obecnie pewnym standardem wśród obecnych rozwiązań powstałych w JavaScripcie. Ale czy poza byciem dodatkiem który uzupełnia odrobinę dokumentacje i deklaruje kontrakt jakiego typu parametry przyjmują i zwracają np. funkcje jakiejś biblioteki, można wycisnąć z niego coś więcej? Podczas prezentacji wykorzystamy TypeScript do granic możliwości, używając zaawansowanych technik które sprawiają że interfejs naszego API będzie sam kierował używających go developerów na drogę poprawnego użycia, które jest zgodne z naszymi (twórców) założeniami, poprawiając tym samym ich doświadczenia.
An overview how to realize code generation of languages on the JVM that implement other class layouts than the Java programming languages. As an example, the inline-mock-maker for Mockito is discussed which supports languages like Kotlin that make any property final by default.
Functional Programming in Java - Code for MaintainabilityMarcin Stepien
Functional Programming is nothing new to the JVM. But with Java 8 it was the big change in paradigm for Java developers. Learn how switching from imperative to functional results in more maintainable code.
The presentation was given at tech meetup KrkDataLink, The missing link between Functional Programming and Data Science.
In Java 8, the java.util.function has numerous built-in interfaces. Other packages in the Java library (notably java.util.stream package) make use of the interfaces defined in this package. Java 8 developers should be familiar with using key interfaces provided in this package. This presentation provides an overview of four key functional interfaces (Consumer, Supplier, Function, and Predicate) provided in this package.
What's in Groovy for Functional ProgrammingNaresha K
Slides from my APACHECON@HOME 2020 talk - "What's in Groovy for Functional Programming".
The directions in which popular programming languages are heading to is clear evidence of the need for multiple programming paradigms. One such programming paradigm that is gaining attention these days is functional programming. Groovy too has embraced functional programming and provides a wide variety of features for a developer to code in the functional style. In this session, I demonstrate the functional programming features of Groovy. We start with the higher-order function support in Groovy and see the benefits they offer. From the example, we can observe that functional programming is indeed idiomatic in several parts of Groovy. We then step into implementing functional composition, currying, memoizing tail-call optimization, and recursion.
ZIO: Powerful and Principled Functional Programming in ScalaWiem Zine Elabidine
This is an introduction of purely functional programming type safe abstractions that provide a variety of features for building asynchronous and concurrent applications data structures built on ZIO.
You'll learn by examples about the power of functional programming to solve the hard problems of software development in a principled, without compromises.
Redux saga: managing your side effects. Also: generators in es6Ignacio Martín
Explanation of redux-saga for its use in React and React Native. Contains an explanation about ES6 generators, used in sagas, with emphasis in generators to manage async code.
1. what is the different unbuffered and buffered channel?
2. how to implement a job queue in golang?
3. how to stop the worker in a container?
4. Shutdown with Sigterm Handling
5. Canceling Workers without Context
6. Graceful shutdown with worker
7. How to auto-scaling build agent?
8. How to cancel the current Job?
Découverte d'algèbre, d'interpréteur par la création d'un DSL pour la base de données Aerospike. Le tout est implémenté dans le langage Scala avec un style fonctionnel.
Utilizing Kotlin Flows in an Android application
Vijay will be revealing to you the kind of challenges we face while working with asynchronous data streams and how Kotlin Flows solves them.
Learn the latest tips, tricks, and tools for Android Development from our international team of Android Developers in Bangkok!
Lambda Chops - Recipes for Simpler, More Expressive CodeIan Robertson
While the new Streams API has been a great showcase for lambda methods, there are many other ways this new language feature can be used to make friendlier APIs and more expressive code. Lambdas can be used for a number of tasks which historically required significant boilerplate, type-unsafe constructs, or both. From new ways to express metedata, to emulating Groovy's null-safe navigation operator, we'll take a look at a myriad of ways, big and small, that you can use lambdas to improve APIs and streamline your code. We'll also look at some of the limitations of lambdas, and some techniques for overcoming them.
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfPeter Spielvogel
Building better applications for business users with SAP Fiori.
• What is SAP Fiori and why it matters to you
• How a better user experience drives measurable business benefits
• How to get started with SAP Fiori today
• How SAP Fiori elements accelerates application development
• How SAP Build Code includes SAP Fiori tools and other generative artificial intelligence capabilities
• How SAP Fiori paves the way for using AI in SAP apps
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
2. ● O que é Spring WebFlux?
● Reactive Programming
● Reactive Stream
○ Reactor
● Arquitetura do WebFlux
● Aplicação de Exemplo
● Non-blocking IO vs Blocking IO
● Event loop
● Vantagens
● Desvantagens
● Referências
Agenda
3. O que é Spring Web Flux
● É um projeto do Spring!
● Fornece suporte para programação reativa na camada Web do Spring
● Chegou na versão 5.0 do Spring (2017)
AH NÃO BRINCA WELLINGTON
😒
43. Reactor
val publisher = Flux.fromArray(arrayOf("Goku", ">", "Naruto"))
publisher.subscribe { value -> print(value) /* consumer */ }
// Imprime: Goku>Naruto
44. Reactor
val publisher = Flux.fromArray(arrayOf("Goku", ">", "Naruto"))
publisher.subscribe { value -> print(value) /* consumer */ }
// Imprime: Goku>Naruto
45. Reactor
val publisher = Flux.fromArray(arrayOf("Goku", ">", "Naruto"))
publisher.subscribe { value -> print(value) /* consumer */ }
// Imprime: Goku>Naruto
46. Reactor
val publisher = Flux.fromArray(arrayOf("Goku", ">", "Naruto"))
publisher.subscribe { value -> print(value) /* consumer */ }
// Imprime: Goku>Naruto
47. Reactor
val publisher = Flux.fromArray(arrayOf("Goku", ">", "Naruto"))
publisher.map(String::toUpperCase)
.map { value -> if(value == ">") "<" else value }
.subscribe { value -> print(value) /* consumer */ }
// Imprime: GOKU<NARUTO
48. Reactor
val publisher = Flux.fromArray(arrayOf("Goku", ">", "Naruto"))
publisher.map(String::toUpperCase)
.map { value -> if(value == ">") "<" else value }
.subscribe { value -> print(value) /* consumer */ }
// Imprime: GOKU<NARUTO
49. Reactor
val publisher = Flux.fromArray(arrayOf("Goku", ">", "Naruto"))
publisher.map(String::toUpperCase)
.map { value -> if(value == ">") "<" else value }
.subscribe { value -> print(value) /* consumer */ }
// Imprime: GOKU<NARUTO
50. Reactor
val publisher = Flux.fromArray(arrayOf("Goku", ">", "Naruto"))
publisher.map(String::toUpperCase)
.map { value -> if(value == ">") "<" else value }
.subscribe { value -> print(value) /* consumer */ }
// Imprime: GOKU<NARUTO
51. Reactor
val publisher = Flux.fromArray(arrayOf("Goku", ">", "Naruto"))
publisher.map(String::toUpperCase)
.map { value -> if(value == ">") "<" else value }
.subscribe { value -> print(value) /* consumer */ }
// Imprime: GOKU<NARUTO
52. Reactor
val publisher = Flux.fromArray(arrayOf("Goku", ">", "Naruto"))
publisher.map(String::toUpperCase)
.map { value -> if(value == ">") "<" else value }
.subscribe { value -> print(value) /* consumer */ }
// Imprime: GOKU<NARUTO
53. Reactor
val monoPublisher = Mono.just("Goku is the best!")
monoPublisher.subscribeOn(Schedulers.parallel())
.subscribe { print("[${Thread.currentThread().name}] $it") }
println("[${Thread.currentThread().name}] Who is the best?")
// Imprime: [main] Who is the best?
// [parallel-1] Goku is the best!
54. Reactor
val monoPublisher = Mono.just("Goku is the best!")
monoPublisher.subscribeOn(Schedulers.parallel())
.subscribe { print("[${Thread.currentThread().name}] $it") }
println("[${Thread.currentThread().name}] Who is the best?")
// Imprime: [main] Who is the best?
// [parallel-1] Goku is the best!
55. Reactor
val monoPublisher = Mono.just("Goku is the best!")
monoPublisher.subscribeOn(Schedulers.parallel())
.subscribe { print("[${Thread.currentThread().name}] $it") }
println("[${Thread.currentThread().name}] Who is the best?")
// Imprime: [main] Who is the best?
// [parallel-1] Goku is the best!
56. Reactor
val monoPublisher = Mono.just("Goku is the best!")
monoPublisher.subscribeOn(Schedulers.parallel())
.subscribe { print("[${Thread.currentThread().name}] $it") }
println("[${Thread.currentThread().name}] Who is the best?")
// Imprime: [main] Who is the best?
// [parallel-1] Goku is the best!
57. Reactor
val monoPublisher = Mono.just("Goku is the best!")
monoPublisher.subscribeOn(Schedulers.parallel())
.subscribe { print("[${Thread.currentThread().name}] $it") }
println("[${Thread.currentThread().name}] Who is the best?")
// Imprime: [main] Who is the best?
// [parallel-1] Goku is the best!
58. Reactor
val monoPublisher = Mono.just("Goku is the best!")
monoPublisher.subscribeOn(Schedulers.parallel())
.subscribe { print("[${Thread.currentThread().name}] $it") }
println("[${Thread.currentThread().name}] Who is the best?")
// Imprime: [main] Who is the best?
// [parallel-1] Goku is the best!
104. + Utiliza melhor os recursos do hardware
+ Alta disponibilidade
Vantagens
105. - Codebase mais complexo
- É mais complexo para debugar
- Suposições erradas podem bloquear todo o servidor
- Não trabalha com thread local
- Logs
- Telemetria
- Stack Traces podem se tornar inúteis
Desvantagens