Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2nd Edition #2

Draft
wants to merge 142 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
142 commits
Select commit Hold shift + click to select a range
8a08f2e
Add experimental notebook
idg10 May 5, 2023
7243a4f
Decent first draft of ch01
idg10 May 23, 2023
ef67a52
WIP on ch02
idg10 May 23, 2023
026b062
More progress on Ch02
idg10 May 25, 2023
9f6cf6b
Ch01 and ch02 structure now in place
idg10 May 26, 2023
ba2b914
Lifetime Management chapter content moved into other chapters
idg10 Jun 5, 2023
ce3ef9e
Work in progress on Creating Observable Sequences
idg10 Jun 7, 2023
8371a36
First full draft of Creating Observable Sequences
idg10 Jun 8, 2023
32fa630
Add hot/cold section to Key Types
idg10 Jun 12, 2023
ee34c18
Add PART 2 break
idg10 Jun 12, 2023
b90523a
First full draft of Filtering
idg10 Jun 15, 2023
3e429b4
Remove Inspection chapter. Start on Transformation
idg10 Jun 15, 2023
83674a9
Transformation WIP
idg10 Jun 19, 2023
5dec03d
Feature complete draft of Transformation chapter
idg10 Jun 19, 2023
6c9ce41
Aggregation WIP
idg10 Jun 20, 2023
ecc076b
Feature-complete draft of Aggregation chapter
idg10 Jun 21, 2023
884fb83
Structurally complete Partitioning chapter
idg10 Jun 30, 2023
ebf6761
Reworked Concat in Combining Sequences
idg10 Jul 3, 2023
924cd6e
Basic structure of Combining Sequences
idg10 Jul 7, 2023
897f1cc
Re-order part 3 content
idg10 Jul 13, 2023
25224d5
Partial update of scheduling chapter
idg10 Jul 21, 2023
7b96789
More scheduler updates
idg10 Jul 25, 2023
09098c9
Feature-complete Leaving Observable chapter
idg10 Aug 2, 2023
ac46387
Feature complete Timing chapter
idg10 Aug 8, 2023
6fd006b
Feature complete Error Handling chapter
idg10 Aug 8, 2023
29f9158
Fix missing ` which were breaking pandoc
HowardvanRooijen Aug 8, 2023
887b2a7
Fix formatting / typos
HowardvanRooijen Aug 8, 2023
2b77c45
Remove old Hot and Cold chapter
idg10 Aug 10, 2023
1d07cb4
Fix double closing backtick
idg10 Aug 11, 2023
7c562b0
Change to code fence for stack trace
idg10 Aug 11, 2023
c1067c5
Add line breaks to AIS output to placate pandoc
idg10 Aug 11, 2023
13bc564
Minor clarification in disposal description
idg10 Aug 11, 2023
4ed2231
Add Observable.Defer section
idg10 Aug 11, 2023
2ec70b6
Experiment with <figure>
idg10 Aug 11, 2023
7c3d54c
Move Dump example one chapter earlier
idg10 Aug 11, 2023
067e56d
Minor tweaks to Ch15 publishing operators
idg10 Sep 13, 2023
0161de4
Testing chapter WIP
idg10 Sep 13, 2023
fd4052a
Ch14 more error handling updates
idg10 Sep 14, 2023
ae75c01
Draft of testing chapter
idg10 Sep 14, 2023
663be80
Renumber testing chaper
idg10 Sep 14, 2023
44f4005
Move remaining content out of combiningsequences and into other chapters
idg10 Sep 14, 2023
4ab1b35
Update appendix A, put all remaining Disposable content in appendix B
idg10 Sep 14, 2023
3508e78
Remove more spurious tab characters
idg10 Sep 14, 2023
7f621cc
Remove Dispelling Myths chapter
idg10 Sep 14, 2023
e032599
Fix appendix a title
idg10 Sep 14, 2023
3feae25
First full Appendix D draft
idg10 Sep 27, 2023
9ba5d0f
Fix missing file extension on Appendix D
idg10 Sep 27, 2023
ef7de07
Replace unicode with maths expressions
idg10 Sep 27, 2023
f06b0cb
Remove spurious unicode thin spaces
idg10 Sep 27, 2023
a198907
Fix another silly LaTeX mistake
idg10 Sep 27, 2023
85d0874
Fix appendix B title
idg10 Sep 28, 2023
e6cb8f4
Remove spurious backticks from Ch16
idg10 Sep 28, 2023
b846184
Update Appendix C
idg10 Sep 28, 2023
b38bde9
Initial containerised book PDF build
idg10 Sep 29, 2023
db2988e
Ch00 update after read through
idg10 Oct 24, 2023
d90262a
Ch01 update after read through
idg10 Oct 24, 2023
2213553
Ch02 updates after read through
idg10 Oct 24, 2023
c21653a
Ch03 partial read through
idg10 Oct 24, 2023
b94119a
Ch03 partial read through
idg10 Oct 30, 2023
d229637
Ch03 completed read-through
idg10 Oct 30, 2023
a42efd8
Update Part2 after read through
idg10 Oct 31, 2023
4635729
Remove spuriously added build outputs
idg10 Oct 31, 2023
a51bfd5
Ch05 update after read through
idg10 Oct 31, 2023
5ef0a6c
Ch06 update after partial read through
idg10 Nov 1, 2023
cb085c7
Ch06 updates after read through
idg10 Nov 2, 2023
897b21b
Handle various TODOs
idg10 Nov 2, 2023
e19bac1
Deal with some TODOs, hide others.
idg10 Nov 2, 2023
ea44590
Fix chapter ref
idg10 Nov 2, 2023
6fd7646
Update build script after chapter reorder
idg10 Nov 2, 2023
45d0739
Fix appendix D title
idg10 Nov 2, 2023
a50fe87
Ch07 partial read through
idg10 Nov 2, 2023
17bc09a
Ch07 partial updated for read through
idg10 Nov 6, 2023
10999da
Ch07 updated after read through
idg10 Nov 6, 2023
3caa2ad
Update Ch08 after read through
idg10 Nov 7, 2023
d9ef83d
Ch09 partial read through
idg10 Nov 8, 2023
726be65
Ch09 updates after read through
idg10 Nov 8, 2023
ce58d0c
Ch10 update after read through
idg10 Nov 8, 2023
c9981e0
Ch11 partial read through
idg10 Nov 9, 2023
4b0853b
Ch11 update after read through
idg10 Nov 9, 2023
77467d5
Ch12 update after read through
idg10 Nov 9, 2023
f3447f0
Ch13 update after read through
idg10 Nov 10, 2023
caf1df5
Ch14 completed read through
idg10 Nov 13, 2023
372bf08
Ch15 update after read through
idg10 Nov 14, 2023
fefb707
Ch16 updates after read through
idg10 Nov 14, 2023
4b7a2d4
Appendix A update after read through
idg10 Nov 14, 2023
93699c2
Appendix B update after read through
idg10 Nov 14, 2023
9f228fa
Appendix C update after read through
idg10 Nov 15, 2023
0e29f96
Remove bits of foreword that were messing up the formatting
idg10 Nov 16, 2023
2abc001
Add missing space in heading
idg10 Nov 16, 2023
2fb73f0
Appendix D partial read
idg10 Nov 17, 2023
6da179d
Appendix D updates after read through
idg10 Nov 17, 2023
4d451e4
Ch01 HvR feedback (except for backpressure)
idg10 Nov 29, 2023
eb14845
Add short back pressure section
idg10 Nov 30, 2023
008cc5e
Ch02 - processed more feedback
idg10 Nov 30, 2023
9ecfad3
Use fewer em dashes
idg10 Nov 30, 2023
a07644c
Ch03 updates after feedback
idg10 Dec 1, 2023
99ca095
Normalize use of generic type names in headings
idg10 Dec 1, 2023
7fc741c
Add missing code fence type
idg10 Dec 1, 2023
c4c1319
Ch05 update after review comments
idg10 Dec 5, 2023
f294a7b
Ch05 process more review feedback
idg10 Dec 5, 2023
f65060d
Ch06 updates after review feedback
idg10 Dec 5, 2023
8b18e7a
Ch07 update after review
idg10 Dec 5, 2023
56861d5
Ch08 update after review feedback
idg10 Dec 6, 2023
936338a
Ch11 fix Obserable typo
idg10 Dec 6, 2023
1500de2
Replace spurious &lt; with <
idg10 Dec 6, 2023
711c624
Fix 'lamba' typo
idg10 Dec 6, 2023
cc7c913
Ch00 - update or remove broken links in acknowledgements
idg10 Dec 6, 2023
6b5812b
Ch00 add reference to https://reaqtive.net/ for Rx history
idg10 Dec 6, 2023
9be34df
Ch00 fix more typos, add more links
idg10 Dec 6, 2023
7d2901a
Ch01 and Ch02 - more feedback based updates
idg10 Dec 6, 2023
7670ff5
Add thanks to open source contributors to Rx.
idg10 Dec 6, 2023
b8c279a
Add link to reactive x slack
idg10 Dec 6, 2023
86a23f8
Ch01 mention Reaqtor in paragraph on transactional queues
idg10 Dec 6, 2023
e416a06
Ch01 use the word Telemetry to keep Howard happy
idg10 Dec 6, 2023
0f77004
Ch16 fix some typos
idg10 Dec 6, 2023
d063ab3
App D - fix "howeever" typo
idg10 Dec 6, 2023
0a0b3d8
Change "favor" to UK spelling
idg10 Dec 6, 2023
19a14ca
Add thanks to .NET Foundation and Richard Lander
idg10 Dec 6, 2023
24d92f6
Remove spurious '.' in bullet list
idg10 Dec 6, 2023
2bcaf83
Ch03 responding to mwa's feedback
idg10 Dec 6, 2023
442dfd5
Ch03 fix another typo
idg10 Dec 6, 2023
5abacf6
Change "ownership" to "stewards"
idg10 Dec 6, 2023
e852897
Add sequence diagram to Ch03
idg10 Dec 13, 2023
8eb026a
Ch03 Add short section on long-term state in operators
idg10 Dec 13, 2023
2a4d81b
Appendix A - fix awkward wording
idg10 Dec 13, 2023
907b9f0
Use markdown in Appendix B.
idg10 Dec 13, 2023
7e30713
Replace a tab with spaces
idg10 Dec 13, 2023
bde5476
Appendix D: fix some typos
idg10 Dec 13, 2023
9128d94
Ch12 - fix markdown snafu
idg10 Dec 13, 2023
65223bf
Ch09 add some missing diagram descriptions.
idg10 Dec 13, 2023
eaca880
Ch12 remove backticks in links because the toolchain is apparently co…
idg10 Dec 14, 2023
471da5f
Ch12 trying Felix's suggestion for links to see if it renders OK on G…
idg10 Dec 14, 2023
9c58a3c
Ch12 put links back how they were since neither GitHub nor VS Code li…
idg10 Dec 14, 2023
4f4ec2c
AppB: Remove spurious use of HTML escaping
idg10 Dec 14, 2023
d30a624
Ch09 add remaining diagram descriptions and fix more typos
idg10 Dec 14, 2023
8a63658
Ch11 updates after review feedback
idg10 Dec 14, 2023
7815053
Ch13 updates after feedback
idg10 Dec 14, 2023
aba1724
Ch15 updates after feedback
idg10 Dec 14, 2023
ca9a0ac
Ch16 fix typo
idg10 Dec 14, 2023
62dab17
Ch02 Split example across multiple lines to help ebook rendering
idg10 Dec 14, 2023
0fc7b20
Try to clarify use of `@this` again
idg10 Dec 14, 2023
37f206a
Ch15 remove word degenerate because apparently it's not as widely und…
idg10 Dec 14, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
213 changes: 95 additions & 118 deletions content/01_WhyRx.md

Large diffs are not rendered by default.

690 changes: 426 additions & 264 deletions content/02_KeyTypes.md

Large diffs are not rendered by default.

1,162 changes: 1,162 additions & 0 deletions content/03_CreatingObservableSequences.md

Large diffs are not rendered by default.

312 changes: 0 additions & 312 deletions content/03_LifetimeManagement.md

This file was deleted.

740 changes: 0 additions & 740 deletions content/04_CreatingObservableSequences.md

This file was deleted.

80 changes: 80 additions & 0 deletions content/04_Part2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
---
title: PART 2
---

# PART 2 - From Events to Insights

We live in the information age. Data is being created, stored and distributed at a phenomenal rate. Consuming this data can be overwhelming, like trying to drink directly from a fire hose. We need the ability to identify the important data, meaning we need ways to determine what is and is not relevant. We need to take groups of data and process them collectively to discover patterns or other information that might not be apparent from any individual raw input. Users, customers and managers need you do this with more data than ever before, while still delivering higher performance and tighter deadlines.

Rx provides some powerful mechanisms for extracting meaningful insights from raw data streams. This is one of the main reasons for representing information as `IObservable<T>` streams in the first place. The preceding chapter showed how to create an observable sequence, so now we will look at how to exploit the power this has unlocked using the the various Rx methods that can process and transform an observable sequence.

Rx supports most of the standard LINQ operators. It also defines numerous additional operators. These fall broadly into categories, and each of the following chapters tackles one category:

* [Filtering](./05_Filtering.md)
* [Transformation]()
* [Aggregation]
* [Partitioning]
* [Combination]
* [Error Handling]
* [Timing]


Notes:
* testing/discrimination/scrutinisation/picking
* where, ignoreelements (segue by pointing out that Where might filter out everything but will still forward end/error)
* OfType
* Skip/Take[While/Until]
* distinct
* First(OrDefault), Last(OrDefault), Single(OrDefault)
* DefaultIfEmpty
* ElementAt

* transformation
* Select
* SelectMany
* Cast
* Materialize/Dematerialize
* aggregation
* to Boolean
* Any
* All
* Contains
* SequenceEqual
* To numeric
* Count
* Sum, Average
* Min(By), Max(By)
* Custom
* Aggregate
* Scan
* partitioning
* GroupBy
* Buffer
* Window
* combination
* Concat
* Repeat
* Zip
* CombineLatest
* StartWith (prepend)
* Append?
* merge
* join
* Amb
* Switch
* TakeUntil (the flavour that accepts an IObservable<T> as its cut-off)
* And/Then/When
* Error Handling
* Catch
* Finally
* Using
* Retry
* OnErrorResumeNext
* Timing
* TimeStamp TimeInterval
* TakeUntil (time-based)
* Delay
* Sample
* Throttle
* Timeout
* (Buffer/Window again?)
549 changes: 262 additions & 287 deletions content/05_Filtering.md

Large diffs are not rendered by default.

Loading