Java Libs in Scala - A bit more Functional

Every Java library can be used in Scala, which is, for me, one of the good parts of the JVM world. But Java libs are mostly object-oriented and not functional, therefore full of side effects and somtimes “ugly” to use in Scala. But there are some approaches how to make Java libs (or their interfaces) more functional, so they can almost be used like a Scala lib. Java 8 Type Conversion Many Java types like Map or List, but also functional types (Java 8) like Optional<T> have Scala pendents. [Read More]

Overcoming Checked Exceptions in Java Lambdas

In Java 8, the long awaited Lambda came to live, making it easy(-er) to do FP in Java. One problem I came across is, that most Java code throws checked exceptions which leads to IMHO ugly try/catch blocks in lambdas: Function<A, B> fun = (a: A) -> { try { // some function call that trows checked exception$ return callFn(a); } catch (Exception e) { // return failure result } }; The Good, the Bad and the Ugly A really simple, but also not really nice option is to wrap thrown exceptions into an unchecked one: [Read More]

Play Framework Actor Pooling with Guice (Java)

Working with the Play! Framework means working with Akka, intentionally or not. But working with Akka Actors can be tricky, especially when it comes to dependency injection. Play! 2.4 uses Google’s Guice for DI and of course it has the ability to also bind Actors so an ActorRef can be injected anywhere. Single Actor DI Biding and injecting one single Actor is simple and well documented . Just bind it in a Module: [Read More]

Understanding Stemmers (Natural Language Processing)

I am interested in NLP and have already some experience with Apache Solr. It’s time to dig a little in-deep regarding stemmers. First of all, I was looking for a general definition of what a stemmer is, and I found this one, which IMHO is quite good: stemmer — an algorithm for removing inflectional and derivational endings in order to reduce word forms to a common stem So what a stemmer does is nothing more, than converting words to their word stem. [Read More]