While you were away

#AboutLastWeek: Find out what the industry giants think about their nominations

JAX Editorial Team
Ripped paper with word weekly report image via Shutterstock

Each Monday we take a step back and analyze what has happened in the previous week. The voting for JAX Innovation Awards started last week so we asked all the nominees to describe their projects and point out their most signification achievements. If you want to know what Kotlin, Lagom, Spring Boot, Prometheus, Deeplearning4j, Apache Log4j 2 and RxJava are all about, you’re in luck. But that’s not all — machine learning, Angular 2 and Akka are also on the menu.

You helped us choose the nominees for this year’s JAX Innovation Awards, now it’s time to vote for them. You have less than a month to make sure your favorite nominees earn their spot on the podium.

We want to make sure you are well-informed about your options, so we asked nominees to present their projects and point out their most significant achievements. Read here the first part of a special series showcasing our final nominees.

Let’s take a quick look at the entire list of nominees.

Infographic JIA

Head over to the JAX Innovation Awards website now to register your vote! Take a close look at all the nominees and choose the ones you think should win the titles of “Most innovative contribution to the Java ecosystem” and “Most innovative solution to software delivery & DevOps.” Make sure to vote in both categories.

This is the most popular programming language for machine learning

Adam Geitgey, Director of Software Engineering at Groupon, believes that anyone who knows how to program can use machine learning tools to solve problems and urges machine learning enthusiasts not to be afraid. He claims that in a few years, people will no longer think of machine learning as “magic”. In fact, “it will be a very common tool that nearly all programmers use to solve problems – just like how most programmers today know about databases and networking.”

If you want to develop brand new machine learning algorithms or read the latest research papers, then you’ll need to get pretty deep into linear algebra and statistics. But you don’t need a deep mathematical background to be able to apply machine learning.

Geitgey also claims that Python is the most popular programming language for machine learning. “You just need to install a few python libraries: scikit-learn, NumPy and pandas. These tools are free and designed to work well together. And if you have a large classification problem that runs too slowly on a single CPU using scikit-learn, you can use the xgboost library to run it on multiple cpus.”

However, he does not have a precise example for those who want to dive into deep learning.

For deep learning, there isn’t one clear winner yet. Everyone is using their own favorite tool and you will have to install several different toolkits to be able to replicate the work of other researchers. TensorFlow is probably the most well-known, but there are several other popular frameworks like Theano and Torch.

TensorFlow, Theano and Torch are low-level frameworks. There are also higher-level frameworks like Keras and tflearn that build on top of the lower-level frameworks but provide simpler programming interfaces. These are great choices for implementing your own deep learning solutions.

Implementing cross-cutting concerns in Angular 2 with TypeScript

Many software projects involve cross-cutting concerns like logging, caching or security. Designing for these concerns is time well spent as these aspects tend to lead to duplicated or strongly coupled code. Accidental complexity and code that is hard to extend or maintain can occur when the proper design for these aspects is being neglected.

In this article, the author uses logging of all HTTP requests as an example requirement for cross cutting concerns. To simplify the implementation he just uses the console object to log the output. When simplified, this is similar to requirements often found in real-world Angular 2 projects.

Read more about different design and implementation options and the impact on the application. Keep in mind that a proper implementation should not violate DRY (Don’t Repeat Yourself) and SRP (Single Responsibility Principle). There is no canonical or golden hammer way to achieve these goals, though. As we will see, each option has different properties regarding testability, ease of change and maintainability.

Akka anti-patterns: Flat actor hierarchies

One of the fundamental ideas built into Akka is the one of failure handling through parental supervision. In other words, this means agencing actors in such a way that parent actors that depend upon the correct execution of a child to perform their work are also responsible for deciding what to do when one child actor crashes.

Aiming at building hierarchies forces you to think of actors in terms of responsibilities and dependencies: what other actor does this actor need in order to do this work? Is it the only one that directly depends on it, or is the dependency stronger as with other actors? Which actor has enough knowledge to reply to “clients” of this other actor?

Don’t miss Manuel Bernhardt’s Akka anti-patterns series.

comments powered by Disqus