Modularizing an existing codebase

During the course of this article we will migrate an existing Java 8 application to a fully modularized Java 9 application that leverages the capabilities of the Java Platform Module System (JPMS). This article is the first installment of a series of articles that showcases a migration path towards a loosely coupled and modularized application architecture.

more ...

Property-Based Testing in Java 8

In the last article we learned how to generate objects with Java 8 in a functional way and implemented a small API based around the Gen monad. Although already powerful on its own, generators really shine when we use them in combination with property-based testing. A property-based test verifies a statement about the output of your code based on some given input. The same statement - or property - is verified for many different possible inputs to find one that falsifies the property. This article builds upon the implementation of Gen and discusses a simple API that enables us to write property-based tests.

more ...

Functional Generators in Java 8

I recently had the chance to toy around with property-based testing. Property-based tests verify statements about the output of your code based on some input, where the same statement is verified for many different possible (admissible and inadmissible) inputs. Such tests rely heavily upon randomly generated objects and values. Even if you do not fully commit to property-based testing, having abstractions for generating random objects and values from your domain can simplify testing a lot. This article shows how to build a simple generator-based approach that plays well along with property-based testing and can simplify your test cases tremendously.

more ...


Developing Python scripts for Raspberry Pi using IntelliJ IDEA

I switched from various Eclipse flavours (vanilla, CDT) to IntelliJ IDEA Ultimate Edition almost a year ago and never looked back. The IDE is not only suitable for Java development, but for Python projects as well and I would like to use it when developing Python scripts that ought to run on my Raspberry Pi. Programming directly on the Raspberry Pi using an IDE can be quite cumbersome, since modern IDEs run abysmally due to the CPU and memory limitations of the Pi and unless your a vi guru, you won't have fun with that editor either. I needed a way to write my Python scripts on my development machine, while programming against the Python SDK on the Pi (with all its installed libraries like RPi.GPIO and pygame) remotely. Easy deployment to the Pi would be a benefit, but not necessarily a must-have, since I could live with a simple scp-based solution that copies over project files recursively. Turns out that IDEA is able to fulfill both requirements to full extent, easing Python development for the Pi tremendously. This short article will guide you through the configuration of a remote Python interpreter and the setup of an module-based deployment to your Pi.

more ...