RxJava's Observable class has plenty of methods that can be used to transform the stream of emitted items to the kind of data that you need. Those methods are at the very core of RxJava and form a big part of it's attraction. But there are other methods, that do not change the stream of items in any way - I call those methods side effect methods.
Butter Knife is an Android library that can help you get rid of all those ugly
findViewById calls. Android Data Binding may be a better solution, but at the moment I prefer the tag/annotation approach of Butter Knife.
If you want to automatically generate getters and setters for your Java JavaBean classes, Project Lombok has some annotations that you can use.
I learned about the Android Dexter project today, which simplifies the process of requesting permissions at application runtime.
At a Meetup in Boulder, Colorado last night I learned about the Jupyter Notebook project.
As a brief note to self, these were the two best Jenkins tutorials I found in early 2019:
The first one shows how to run Jenkins with Docker, and the second one shows how to build a Java/Maven/Git project.
This tutorial on how to use Jenkins with Scala and SBT was also helpful:
A friend sent me this link about computer latency.
Kaleidoscope is a Scala pattern-matching library created in a string interpolator style.
It turns out that converting AsciiDoc to HTML without including a bunch of undesired CSS is a problem, and converting AsciiDoc to Markdown is also a problem. The page I linked to shows the best way I’ve found to convert AsciiDoc to Markdown, which can then be converted to CSS-free HTML. In case that page ever disappears, the basic commands are:
Install pandoc and asciidoc:
sudo apt install pandoc asciidoc
Convert asciidoc to docbook:
asciidoc -b docbook foo.adoc
Convert docbook to markdown:
From the URL:
Q: Scala makes a big deal about how what seem to be language features are implemented as library features. Is there a list of types that are treated specially by the language?
A: The following types are crucial to Scala's type system. They have an influence on how type checking itself is performed.
It’s interesting that you can do some research on this by looking at Definitions.scala.
I haven’t read the article I’ve linked to yet, I’m just saving it here for future reading.
The project I linked to demonstrates a complicated SBT build.sbt file for a multi-project build.
If/when you need to know what keys are available in a Scala SBT build.sbt file, you can find them all listed in the Keys object. At the current moment, here’s the Scaladoc for the SBT Keys object.
Note that the first two SBT keys you’ll probably see are
From the URL I linked to, “fish is a fully-equipped command line shell (like bash or zsh) that is smart and user-friendly. fish supports powerful features like syntax highlighting, autosuggestions, and tab completions that just work, with nothing to learn or configure.”
The URL contains a statement of the Red Hat ethos. A couple of good quotes:
Open source is a development model, not a business model. Red Hat is in the enterprise software business and is a leading provider to the Global 500. Enterprise customers need products, not projects and it’s incumbent on vendors to know the difference. Open source projects are hotbeds of innovation and thrive on constant change. These projects are where sometimes constant change happens, where the development is done.
Scala Native relies on LLVM as its primary optimizer as of the latest 0.3.7 release. Overall, we’ve found that LLVM fits this role quite well, after all, it is an industry-standard toolchain for AOT compilation of statically typed programming languages. LLVM produces high-quality native code, and the results are getting better with each release.
In this short blog post I will try, in 10 minutes or less, to present what Monix library is and convince you that it is good to know it.
Formerly known as Monifu, Monix is a library for asynchronous programming in Scala and Scala.js
Taken from shapeless' README:
Shapeless is a type class and dependent type based generic programming library for Scala.
To me, Shapeless is a toolkit to leverage Scala's type system at your own profit. You may use it to have more "precise" types, like statically sized list (lists which size is known at compile time), you may also use HList as a better tuple.
More generally, Shapeless can be used to make the compiler work for you, scrape some boilerplate, and gain a little extra typesafety.
The Visitor Pattern is one of the most mis-understood of the classic design patterns. While it has a reputation as a slightly roundabout technique for doing simple processing on simple trees, it is actually an advanced tool for a specific use case: flexible, streaming, zero-overhead processing of complex data structures. This blog post will dive into what makes the Visitor Pattern special, and why it has a unique place in your toolkit regardless of what language or environment you are programming in.
From the article I linked to: “Generics can often seem confusing. How often have you started to solve a problem with generics, only to realize that they don’t quite work like you thought they did? The good news is that there are some simple, foundational concepts that underpin generic variance. And once you understand those concepts, you won’t have to memorize acronyms or resort to trial-and-error - you’ll simply understand how and why they work.”