# scrabble

Published articles for scrabble.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Rewriting RxJava with Kotlin Coroutines?

DevFeed: [Rewriting RxJava with Kotlin Coroutines?](<https://devfeed.tech/articles/rewriting-rxjava-with-kotlin-coroutines-24814.md>)

Original publisher: [Read original article](<https://akarnokd.blogspot.com/2017/09/rewriting-rxjava-with-kotlin-coroutines.html>)

Author: David Karnok (noreply@blogger.com)

Published: 2017-09-09T15:16:00Z

Content type: opinion

Language: en

Sources: [Akarnokd - Advanced RxJava](<https://devfeed.tech/sources/akarnokd-advanced-rxjava.md>)

Topics: [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [kotlin-coroutines](<https://devfeed.tech/topics/kotlin-coroutines.md>), [reactive](<https://devfeed.tech/topics/reactive.md>), [Streams](<https://devfeed.tech/topics/streams.md>)

Tags: [callback](<https://devfeed.tech/tags/callback.md>), [cancellation](<https://devfeed.tech/tags/cancellation.md>), [coroutine](<https://devfeed.tech/tags/coroutine.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-coroutines](<https://devfeed.tech/tags/kotlin-coroutines.md>), [library](<https://devfeed.tech/tags/library.md>), [reactive](<https://devfeed.tech/tags/reactive.md>), [reactive-streams](<https://devfeed.tech/tags/reactive-streams.md>), [rxjava](<https://devfeed.tech/tags/rxjava.md>), [scrabble](<https://devfeed.tech/tags/scrabble.md>)

### AI overview

The article explores whether a declarative-reactive library can be implemented with Kotlin coroutines as an alternative to RxJava. It examines coroutine abstractions, operator design, cancellation, lazy versus eager execution, and the potential trade-offs for library developers and users.

### Source excerpt

Introduction Someone influential stated that RxJava should be rewritten with Kotlin Coroutines. I haven't seen any attempt of it as of now and declaring such a thing to be (not) worth without actually trying is irresponsive. As we saw in the earlier post and the response in the comment section, following up on the imperative-reactive promise leads to some boilerplate and questionable cancellation management, and the idiomatic Kotlin/Coroutine enhancement suggested is to ... factor out the imperative control structures into common routines and have the user specify lambda callback(s); thus it can become declarative-reactive, just like RxJava interpreted from a higher level viewpoint. Kind of defeats one of the premises in my understanding. This doesn't diminish the power of coroutine-based abstraction but certainly implies a relevant question: who is supposed to write these abstract operators? One possible answer is, of course, library writers who not only have experience with abstracting away control structures but perhaps wield deeper knowledge about how the coroutine infrastructure can be utilized in certain complicated situations. If this assumption of mine is true, that somewhat defeats another premise of coroutines: the end user will likely have to stick to writing suspendable functionals and discover operators provided by a library most of the time. So what's mainly left is to see if implementing a declarative-reactive library on top of coroutines gives benefits to the library developer (i.e., ease of writing) over hand crafted state-machines and (reasonable) performance to the user of the library itself. The library implementation Perhaps one of the more attractive properties of RxJava is the deferred lazy execution of a reactive flow (cold). One sets up a template of transformations and issues a subscribe() call to begin execution. In contrast, CompletableFuture and imperative Coroutines can be thought as eager executions - in order to retry them one has to

## The Reactive Scrabble benchmarks

DevFeed: [The Reactive Scrabble benchmarks](<https://devfeed.tech/articles/the-reactive-scrabble-benchmarks-24804.md>)

Original publisher: [Read original article](<https://akarnokd.blogspot.com/2016/12/the-reactive-scrabble-benchmarks.html>)

Author: David Karnok (noreply@blogger.com)

Published: 2016-12-27T19:01:00Z

Content type: article

Language: en

Sources: [Akarnokd - Advanced RxJava](<https://devfeed.tech/sources/akarnokd-advanced-rxjava.md>)

Topics: [Benchmark](<https://devfeed.tech/topics/benchmark.md>), [data-processing](<https://devfeed.tech/topics/data-processing.md>), [Java](<https://devfeed.tech/topics/java.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [benchmarks](<https://devfeed.tech/tags/benchmarks.md>), [data-processing](<https://devfeed.tech/tags/data-processing.md>), [java](<https://devfeed.tech/tags/java.md>), [performance](<https://devfeed.tech/tags/performance.md>), [reactive](<https://devfeed.tech/tags/reactive.md>), [scrabble](<https://devfeed.tech/tags/scrabble.md>), [streams](<https://devfeed.tech/tags/streams.md>)

### AI overview

This article explains the Shakespeare Plays (Reactive) Scrabble benchmark, including its purpose, computation, history, and sequential and parallel implementations. It discusses performance differences between RxJava and Java 8 Streams and describes efforts to improve RxJava 2 performance.

### Source excerpt

Introduction In the past year, I've been posting benchmark results under the mysterious Shakespeare Plays (Reactive) Scrabble name. In this blog post, I'll explain what this benchmark is, where does it come from, how it works, what the intent is and how to apply it to your favorite and not-yet-benchmarked library. History The benchmark was designed and developed by Jose Paumard and results presented in his 2015 Devoxx talk (a bit long but worth watching). The benchmark measures how fast a certain data-processing library can find the most valuable word from a set of words taken from (one of) Shakespeare's work based on the rules and point schema of Scrabble. RxJava at the time was in its 1.0.x version and to my surprise, it performed poorly compared to Java 8 Streams: https://youtu.be/fabN6HNZ2qY?t=8369 The benchmark, utilizing JMH, is completely synchronous; no thread hopping happens yet RxJava performs 10x slower, or more likely, it has 10x more overhead in the associated set of operators. In addition, Jose also added a parallel-stream version which runs the main "loop" in parallel before joining for the final result. More disappointingly, RxJava 2 developer preview the time was terrible as well (relatively, measured on a weak CPU in February). Therefore, instead of blaming the benchmark or the author, I set out on a quest to understand the benchmark's expectations and improve RxJava 2's performance and if possible, port that back to RxJava 1. The original Stream-benchmark Perhaps the most easy way to understand how the computation in the benchmark works, Let's see the original, non-parallel Stream version of it. Since going sequential or parallel requires only a sequential() or parallel() operator on a Stream, they both extend an abstract superclass containing the majority of the code and only get specialized for the operation mode in two additional classes. ShakespearePlaysScrabbleWithStreamBeta.java I added postfix "Beta" - meaning alternate version in this cont

## Letter Frequencies for Scrabble

DevFeed: [Letter Frequencies for Scrabble](<https://devfeed.tech/articles/letter-frequencies-for-scrabble-40586.md>)

Original publisher: [Read original article](<http://norvig.com/scrabble-letter-scores.html>)

Published: 2013-01-27T00:00:00Z

Content type: article

Language: en

Sources: [Peter Norvig](<https://devfeed.tech/sources/peter-norvig.md>)

Topics: [data](<https://devfeed.tech/topics/data.md>), [Google](<https://devfeed.tech/topics/google.md>), [datasets](<https://devfeed.tech/topics/datasets.md>)

Tags: [analysis](<https://devfeed.tech/tags/analysis.md>), [change](<https://devfeed.tech/tags/change.md>), [data](<https://devfeed.tech/tags/data.md>), [game](<https://devfeed.tech/tags/game.md>), [google](<https://devfeed.tech/tags/google.md>), [points](<https://devfeed.tech/tags/points.md>), [scrabble](<https://devfeed.tech/tags/scrabble.md>), [table](<https://devfeed.tech/tags/table.md>), [values](<https://devfeed.tech/tags/values.md>)

### AI overview

An analysis of English letter frequencies across historical periods and their relationship to Scrabble point values, using Google Books Ngram data.

### Source excerpt

An analysis of frequency counts for letters in English, with applications to the game of Scrabble. Also presents a distillation of the Google Books Ngram data, broken out by time periods.