In this talk, I'm presenting an alternative approach to thinking about UI and navigation on iOS - one that is declarative and that I find easy to reason about in a big application. I did live coding and the link is on the last slide. Enjoy!
A quick introduction into promises and observables by Stefan Charsley.
Presented on 23rd July 2020 for Palmerston North Software Developers meetup group.
This session of The Ajax Experience 2008 takes a look at the latest features in both Prototype and script.aculo.us, including custom events and how to leverage them, method wrapping for AOP-style programming, sprockets, the refactorings and improvements on Ajax, scheduling and the DOM, the new effects engine, and more.
We wrap up with an overview of the community landscape for these libraries, looking at major helpful resources, prominent peripheral frameworks, and seeing what the future looks like for both Prototype and script.aculo.us.
A quick introduction into promises and observables by Stefan Charsley.
Presented on 23rd July 2020 for Palmerston North Software Developers meetup group.
This session of The Ajax Experience 2008 takes a look at the latest features in both Prototype and script.aculo.us, including custom events and how to leverage them, method wrapping for AOP-style programming, sprockets, the refactorings and improvements on Ajax, scheduling and the DOM, the new effects engine, and more.
We wrap up with an overview of the community landscape for these libraries, looking at major helpful resources, prominent peripheral frameworks, and seeing what the future looks like for both Prototype and script.aculo.us.
Workshop JavaScript Testing. Frameworks. Client vs Server Testing. Jasmine. Chai. Nock. Sinon. Spec Runners: Karma. TDD. Code coverage. Building a testable JS app.
Presentado por ing: Raúl Delgado y Mario García
What about reactivity? So much talks about it, but does it really reactive? How to solve current reactivity purposes. Future of Vue.js. Try to find answers in these slides.
One of JavaScript’s strengths is how it handles asynchronous code. Async is one of the most important and often misunderstood part of Javascript or any other language. Async is hard because we, as human beings, can’t do two conscious actions at once and think about both of them at the same moment. In this talk we will see how asynchronous JavaScript evolved over the years. It all started with callbacks… and it landed on generators!
Plusieurs frameworks permettent de mettre en place facilement des microservices. Vert.x ou Sprint Cloud sont souvent cités. Venez découvrir comment Akka permet, grâce au modèle acteur, de construire des systèmes distribués complexes, résilient et scalable.
Nous verrons aussi les grands principes d'architecture à respecter pour tirer pleinement parti de cette technologie prometteuse.
Par Xavier Bucchiotthy et Fabian Guttierez
Workshop JavaScript Testing. Frameworks. Client vs Server Testing. Jasmine. Chai. Nock. Sinon. Spec Runners: Karma. TDD. Code coverage. Building a testable JS app.
Presentado por ing: Raúl Delgado y Mario García
What about reactivity? So much talks about it, but does it really reactive? How to solve current reactivity purposes. Future of Vue.js. Try to find answers in these slides.
One of JavaScript’s strengths is how it handles asynchronous code. Async is one of the most important and often misunderstood part of Javascript or any other language. Async is hard because we, as human beings, can’t do two conscious actions at once and think about both of them at the same moment. In this talk we will see how asynchronous JavaScript evolved over the years. It all started with callbacks… and it landed on generators!
Plusieurs frameworks permettent de mettre en place facilement des microservices. Vert.x ou Sprint Cloud sont souvent cités. Venez découvrir comment Akka permet, grâce au modèle acteur, de construire des systèmes distribués complexes, résilient et scalable.
Nous verrons aussi les grands principes d'architecture à respecter pour tirer pleinement parti de cette technologie prometteuse.
Par Xavier Bucchiotthy et Fabian Guttierez
Angular 16 is the biggest release since the initial rollout of Angular, and it changes everything: Bye bye zones, change-detection, life-cycle, children-selectors, Rx and what not.
Recorded webinar based on these slides given by Yaron Biton, Misterbit Coding-Academy’s CTO, can be found at: https://www.youtube.com/watch?v=92K1fgPbku8
Coding-Academy offers advanced web-techs training and software development services: Top-rated Full-stack courses for Angular, React, Vue, Node, Modern architectures, etc. | Available top-notch on-demand-coders trough Misterbit technological solutions | Coding-Academy Bootcamp: Hundreds of employed full-stack developers every year | Anything web, end to end projects | Tech companies and startups | Consulting to management and dev teams | Workshops for managers and leaders.
Java Svet - Communication Between Android App ComponentsAleksandar Ilić
Presentation about how to build flexible (using fragments), smooth (using async tasks and intent services) and "data up to date" (using loaders) Android applications.
Java Svet - Communication Between Android App ComponentsPSTechSerbia
Presentation about how to build flexible (using fragments), smooth (using async tasks and intent services) and "data up to date" (using loaders) Android applications.
Adding a modern twist to legacy web applicationsJeff Durta
Avoid misery of working with legacy code
We will see how you can add independent and isolated components to existing pages; pages that may be difficult to change
React and Flux allow you to make self-contained additions that handle their own data access/persistence
The complexity of frontend applications over the years led to the creation of more robust solutions, where data logic won’t be messed up at scale. A shift took place from the traditional services approach, in which data is tightly coupled to the Views of their Components, towards more composable and shareable solutions. Each of these solutions is what we call a "state-manager".
Goal of this presentation is the comparative analysis between different react frontend state managers such as Redux, MobX, Recoil and React-Query. State Machines will also be presented, showing a completely different perception of how state can be orchestrated. Different mental models of the aforementioned state managers along with their different technical implementations will be presented to the audience. Ultimately, the audience can use this presentation for future reference on faster deciding which state-manager fits their own projects. Before delving into the comparison there will be a description of the main data flow in the browser. Concepts like reactivity, immutability, predictability, concurrency and performance will be detected on the main flow and will act as our comparison metrics among the state-managers.
Developing ASP.NET Applications Using the Model View Controller Patterngoodfriday
Learn how to use the model-view-controller (MVC) pattern to take advantage of your favorite .NET Framework language for writing business logic in a way that is de-coupled from the views of the data.
9. Instructions
Facts
Understand how the system works
and based on its state and state
transitions decide what instructions to
execute.
State how your code should work if
certain conditions are met. You don’t
need to keep track of the current
state of the system, it calls you.
20. The concept
We show things on the screen for a
reason. When presenting a view, we
need to wait for a user to take some
kind of action and then our app
responds to that action.
💡
Presenting a view == asynchronous
operation.
28. Presentable as we defined it
protocol Presentable {
associatedtype Value
func start() -> (UIViewController, FutureResult<Value>)
}
29. Presentable in iZettle
public protocol Presentable {
associatedtype Matter
associatedtype Result
/// Constructs a matter from `self` and returns it
together with the result of presenting it.
func materialize() -> (Matter, Result)
}
30. Presentable wrapper
public struct Presentation<P>
where P : Presentable, P.Matter : UIViewController {
// The presentable wrapped by `self`.
public var presentable: P
// The presentation style to use when presenting `self`.
public var style: PresentationStyle
// The presentation options to use when presenting `self`.
public var options: PresentationOptions
// The configuration to apply just before presenting `self`.
public var configure: (P.Matter, DisposeBag) -> ()
// A transformation to apply on the result of `materialize()`.
public var transform: (P.Result) -> P.Result
// A callback that will be called once presentation is done,
either with `nil` if normally dismissed, or with an error if not.
public var onDismiss: (Error?) -> ()
}
31. Example
let playVideo: (Video) -> Presentation<MoviePlayer> = { video in
return Presentation(MoviePlayer(video: video),
style: .flipPush,
configure: installDismiss(.close))
}
9:55:53 AM: TestScreen will 'flipPush' present: MoviePlayer
9:55:55 AM: TestScreen did end presentation of: MoviePlayer
9:55:55 AM: MoviePlayer was deallocated after presentation from
TestScreen
(lldb)
32. Utilising Swift type system
You can create helpers that make it
easier to write declarative code, keep
track of presentations and even detect
memory leaks!
40. Take-aways
•We show UI for a purpose - to drive
data flows in our apps and we can
express presentations as async
functions that return a Result
•Keeping the UI flow logic decoupled
makes it easy to follow and test
•Declarative programming for
presentations makes the possible user
journeys explicit.
41. Further reading
1. Live coding playground
2. iZettle - Introducing Presentation [oss]
3. Chris Eidhof - Functional View Controllers
4. Benjamin Encz - Turning UIKit Inside Out
5. iZettle - Functional Views
6. Google I/O - Declarative UI patterns
7. Matt Galagher - Declarative views
8. Less verbose constraints [oss]
…