Comments (18)
Back in last September, RxJava 2.x had more overloads of common operators with error-delay and buffer-sizing options. Now RxJava 1.x API is catching up.
The primary benefit is the native Reactive-Streams compliance that let's you talk to Akka-Streams and Reactor-Core directly (among other libraries).
The second advantage is that you can build non-backpressured sequences via NbpObservable
(name pending), mainly suitable for GUI-related activities or shorter sequences that don't really need backpressure.
from thecontext-podcast.
These were two very interesting and nice episodes, thanks to you and David!
from thecontext-podcast.
Thanks for the episode, nice improvement from the previous and thanks to David for all the interesting info.
Now I'm even more puzzled about RxJava 2. From the discussion I understand it's a big change for developers of the RxJava 2 library, but for actual users of the library I don't understand if there will be any advantage, besides the performance gains of using a better architecture below. Is there any other noteworthy difference?
from thecontext-podcast.
Let's ask David! cc @akarnokd
// As I understand, for users there will be more types in the API: Observable
with backpressure and without + probably possibility to override applied operators.
Thanks for the feedback!
from thecontext-podcast.
Thank you for creating the podcast.
I found the Internet lacking in more advanced topics and hearing for the tenth time an introduction to Rx doesn't help anybody.
One comment that I have is that in the beginning I got a bit distracted with the particular accent of yours, but this lasted just a moment as I got to enjoy the content a lot. Plus I myself have "an accent".
Please continue addressing hard topics in-depth since we seem to lack them in Android scene.
P. S. Is there any place that the community could suggest topics?
from thecontext-podcast.
Hi, @jaggernod
hearing for the tenth time an introduction to Rx doesn't help anybody
Huge +1
:)
One comment that I have is that in the beginning I got a bit distracted with the particular accent of yours, but this lasted just a moment as I got to enjoy the content a lot. Plus I myself have "an accent".
Yeah, hope I'll eliminate my accent one day. Anyway, I'll try to speak less in the episodes, so this should help too haha.
Please continue addressing hard topics in-depth since we seem to lack them in Android scene.
Will try, btw podcast will be changed in near future, hope you'll like the change, unfortunately I'm very busy at the moment and will be in such state for some time, but I hope we'll deliver new episode in next few weeks.
Regarding suggestions for new episodes I've created an issue for that #34, please feel free to add something there.
Thank you for listening and feedback!
from thecontext-podcast.
hearing for the tenth time an introduction to Rx doesn't help anybody
What are the particular, non intro, topics you want to read/hear about?
from thecontext-podcast.
Hi David,
I'm a fun of your blog. Thank you for sharing your knowledge.
As for what other RX related I'd like to hear is:
- How much easier would RxJava 2.0 be to debug. Huge stack traces make it impossible to debug long Rx chains.
- I know that you are not using Rx that much in your line of work, but would be really nice to hear how to use some more complex operators in creative ways. Let's take for example
window()
. When, how and why?
Thanks a lot.
from thecontext-podcast.
1 How much easier would RxJava 2.0 be to debug. Huge stack traces make it impossible to debug long Rx chains.
Not much. You'll get more meaningful stacktrace entries because massively reduced amount of anonymous inner classes.
I'm debugging RxJava all the time and usually, the top of the stacktrace points to where problems come from: the user provided code. Smaller cases are when the developer's expectations wasn't met such as backpressure exceptions and single() exceptions.
The debugging problem I encountered was with RxNetty where the code contains hundreds of similarly looking sequences with exit points. Setting a breakpoint in some class and seeing the stacktrace didn't help much identifying where the particular sequence was assembled in the library. So it was not about where the value came from but which sequence am I currently in. In theory, the RxJava hooks allows one to wrap Observables and Subscribers and you can add wrappers that capture the current stacktrace when the operators were assembled. You can then look at the variables in the debug window and locate code more easily.
2 I know that you are not using Rx that much in your line of work, but would be really nice to hear how to use some more complex operators in creative ways. Let's take for example window(). When, how and why?
I personally haven't encountered any use for window(). You can have a look at Intro to Rx for some examples. The use I can imagine is to go parallel with fixed-length windows:
range(1, 1000).window(16).flatMap(w -> w.observeOn(Schedulers.computation().map(...)))
There are also the boundary-controlled version of window where you can take other observables and then open and close windows:
PublishSubject<Integer> record = PublishSubject.create();
PublishSubject<Integer> stop = PublishSubject.create();
events.window(record, v -> stop).flatMap(w -> ...).subscribe(...)
Then you wire up record
and stop
to some buttons.
from thecontext-podcast.
I'm debugging RxJava all the time and usually, the top of the stacktrace points to where problems come from: the user provided code.
Main problem is when source emits on the different thread that subscribe chain was established on, then you have no reference to the user code in the stacktrace. But we're currently successfully solving it with similar solution ReactiveX/RxJava#3521
from thecontext-podcast.
Thank you guys for the answer to the questions so quickly!
Happy to hear that RxJava 2 will provide shorter stack traces.
As for the tracing where events came from, I understand the problem. Even faced it. In my previous company, we made a custom Observable
which had an AOP-like ways of recording the paths of the events in streams and visualised it in a web application. Looked pretty nice, but was just a prototype and of course, the performance plummeted :)
And the window
question a general one. Maybe more directed to @artem-zinnatullin and his mission to teach proper Android. There are so many operators that are not that much used. Library of real life examples might encourage and teach in which cases those 'advanced' operators can be used.
I remember and old .Net's RX video that showed window
example based on opening and closing times of a grocery store. They gathered some data about the store based on the collected sessions. Don't remember the link to that. But it was a nice visualisation.
I think that people with functional background have little problems with the operators but, java and especially Android crowd usually have little exposure to FRP.
from thecontext-podcast.
Got it, ok, will try. Currently working on a project where whole
interaction with UI made via RxJava, every UI component is reactive.
On Fri, 15 Apr 2016, 13:02 Paweł Polański, [email protected] wrote:
Thank you guys for the answer to the questions so quickly!
Happy to hear that RxJava 2 will provide shorter stack traces.
As for the tracing where events came from, I understand the problem. Even
faced it. In my previous company, we made a custom Observable which had
an AOP-like ways of recording the paths of the events in streams and
visualised it in a web application. Looked pretty nice, but was just a
prototype and of course, the performance plummeted :)And the window question a general one. Maybe more directed to
@artem-zinnatullin https://github.com/artem-zinnatullin and his mission
to teach proper Android. There are so many operators that are not that much
used. Library of real life examples might encourage and teach in which
cases those 'advanced' operators can be used.
I remember and old .Net's RX video that showed window example based on
opening and closing times of a grocery store. They gathered some data about
the store based on the collected sessions. Don't remember the link to that.
But it was a nice visualisation.
I think that people with functional background have little problems with
the operators but, java and especially Android crowd usually have little
exposure to FRP.—
You are receiving this because you were mentioned.Reply to this email directly or view it on GitHub
#25 (comment)
from thecontext-podcast.
Got it, ok, will try. Currently working on a project where whole
interaction with UI made via RxJava, every UI component is reactive.
👍
from thecontext-podcast.
@artem-zinnatullin are you working on MVI like Cycle.js. I'm trying to do the same thing. My idea comes from this blog of @sockeqwe: http://hannesdorfmann.com/android/model-view-intent
from thecontext-podcast.
Not exactly, we have MVVM (without data binding)
On Fri, 15 Apr 2016, 15:30 Thanh Le, [email protected] wrote:
@artem-zinnatullin https://github.com/artem-zinnatullin are you working
on MVI like Cycle.js. I'm trying to do the same thing. My idea comes from
this blog of @sockeqwe https://github.com/sockeqwe:
http://hannesdorfmann.com/android/model-view-intent—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
#25 (comment)
from thecontext-podcast.
Interesting, I don't like data binding too. My work is on progress but I still have some difficulties when trying to make it fully functional.
from thecontext-podcast.
I'd like to know - if I'm a beginner coming to RxJava for Android development, how should I decide which version to learn - 1 or 2? They are similar, but I'd rather focus on the one that will be most useful in the near future.
Thank you for this episode!
from thecontext-podcast.
@IgorGanapolsky definitely pick v2!
from thecontext-podcast.
Related Issues (20)
- Episode 22: Women in Tech
- Episode 23: Rise of the Machines
- Episode 24: Ok Multiplatform with Jesse Wilson and Egor Andreevich
- Publish on Spotify? HOT 9
- Transfer the repository to the dedicated organization HOT 5
- Episode 25: How It’s Made — Freeletics HOT 6
- Episode 26: How It’s Made — Juno
- Episode 27: Reusable Components with Sebastian Kaspari from Mozilla Firefox
- Episode 28: Fun with Canvas with Rebecca Franks HOT 3
- Interested in participating in a "How it's made" interview - Babylon Health HOT 4
- Episode 29: How It’s Made — Babylon Health with Sakis Kaliakoudas
- New feature request: publish to Google Play HOT 12
- Discussion Episode 16: Tools HOT 10
- Rename Markdown files so they're sorted by numbers HOT 3
- Update <itunes:owner> to mention Hannes and Artur.
- Discussion Episode 17: Switching Gears to C# and .NET
- Discussion Episode 18, Part 1: Android Everywhere
- Discussion Episode 19: Model-View-Intent HOT 1
- Discussion Episode 20: public final Agile HOT 7
- Discussion Episode 21: Rx Must Die HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from thecontext-podcast.