2023

Simple and Unopinionated Java API

This post summarises how to build a simple and unopinionated Java API with Javalin. It demonstrates how to test it, analyse code and dependncies, package it, externalise, and run it.

Back to Top ↑

2021

New Features in Java 9 and Later Versions

This post summarises the new features in Java after version 9. It covers the most prominent features from a developer’s perspective. It either omits or gives a high level overview of less commonly used features.

Back to Top ↑

2020

How To Start A Debug Container in Kubernetes

This post demonstrates how to start a temporary debug container in a K8S cluster and open up a terminal sessions into it. This will allow us to test various network issues without leaving any permanent pods behind.

Back to Top ↑

2019

Back to Top ↑

2018

Python API With Flask and Flask RESTPlus

This article will describe how to get started with the python ecosystem, so we can write APIs and test them. We’ll leave out application specific aspects like authentication and database access and will focus on the basics. As an example, we’ll build a simple REST-ful API…

DIY Type Safe AOP in TypeScript

In this article, we will demonstrate how to implement a simple type safe utility function for audit logging in TypeScript.

Back to Top ↑

2017

Big Data Analysis with Scala and Spark - MOOC Summary

Apache Spark has emerged as the premium tool for big data analysis and Scala is the preferred language for writing Spark applications. The “Big Data Analysis with Scala and Spark” course on Coursera is a great, intuitive, and accessible introduction to Spark. This post is a summary of its content …

Common Types for Redux Actions and Reducers

In my past React/Redux projects which use Flow or Typescript, I ended up writing similar type definitions for the Redux actions and reducers. I decided to extract these as generic type definitions, which can be reused in the future …

React Setup on Bluemix in 10 Minutes

React is one of the most mature and widely used JavaScript libraries. However, the ecosystem of tools around it can be overwhelming. It often takes hours or even days to configure properly a usable development environment. In this post, we’ll show how to set up a sample React web app, and productionise it on Bluemix it in less than 10 minutes …

Gradle Quickstart

Introduces Gradle, its main building blocks, and how to work with them …

Cloud Foundry [Part 1] - Orgs, Spaces, Buildpacks, and Services

Cloud Foundry is an open source Platform as a Service (PaaS) technology giverned by the Cloud Foundry Foundation. Multiple PaaS providers offer cloud services based on Cloud Foundry. This allows for “portbale” applications which are based on open standards and can be easily migrated across clouds. In this post, we will overview the main concepts and building blocks in Cloud Foundry and will provide a cheatsheet of common Cloud Foundry commands …

Back to Top ↑

2016

Summary of the Parallel Programming with Scala MOOC

EPFL has released a new course on Parallel Programming, which is a part of the Functional Programming in Scala Specialisation. This post summarises the course and can be used as a quick ref-card on the topic …

Shell Cheatsheet [Part 1] - Common Bash Scripting, Tmux

This post is a cheat sheet of commonly used shell commands and tools. It is meant to serve as a quick reference guide that you can consult when developing scripts or when working extensively with the Bash shell …

Back to Top ↑

2015

Summary of the Oracle JDK8 MOOC

Oracle has recently released a 3-week JDK 8 Massive Open and Online Course called “Lambdas and Streams”, which discusses the new JDK8 functional features in much more details. It’s a great course and if you’re interested in Java and new JDK8 it can help you get started. This article summarises the course and my previous post and can be used as a quick ref-card …

Overview of Modern Concurrency and Parallelism Concepts

Most software engineers know about operating system (OS) level processes and threads. They are taught in all university OS courses. However, newer concepts promising higher throughput, less overhead, latency, and development efforts have emerged. The goals of this article are to summarise, exemplify and compare terms like green threads, fibres, goroutine, actors etc …

Basic Networks: Cheatsheet [Part 1]

The purpose of this cheat-sheet is to briefly overview the main networking principles without going into too much technical details…

.NET for Java Devs in a nutshell

.Net is a software development platform, which allows code written in different languages to interoperate. C# and the .Net model have some resemblances with some java-based technologies. This article aims to briefly explain some of its core concepts by comparing and contrasting the two “worlds” …

Back to Top ↑

2014

REST with Embedded Jetty and Jersey in a Single Jar - Step by Step

Setting up a simple RESTful Java based development environment to play with can be surprisingly difficult. In this tutorial, I will show how to set up a RESTful server (Jetty+Jersey) to start from a standard Java main method. Furthermore, using Maven we’ll package the entire application in a single executable jar file, which can be started from any machine with a Java environment. Finally, we’ll see how to import it into Eclipse, so we can develop and debug there …

C# pitfalls for Java Devs - Overriding [Part 1]

Last week I finally had the time to learn a bit of C#, after a number of years of mostly Java coding. Professional C# developers have described it to me as a “better Java” or “Java with syntactic sugar”, and have claimed that Java programmers should not have problems picking it up. It is true that both languages have a lot in common - i.e. the C-like syntax and single inheritance. However, there are some quite fundamental philosophical differences, which can be mind-boggling for a Java programmer …

CloudSim and CloudSimEx [Part 3] – Delayed VM and Cloudlet actions

Many few CloudSim users have asked how to submit/destroy a VM or a cloudlet with a delay. Unfortunately, this is far from trivial, as it involves launching and handling custom events and ensuring the internal state of the broker is consistent - e.g. all cloudlets of a terminated VM are killed. That’s why CloudSimEx introduced a new broker DatacenterBrokerEX, which among other new features also supports dynamic provisioning and scheduling of VMs and cloudlets …

Starting VM with Custom Image, Security Group and Key-Pair via JClouds

Recently I needed to programatically start EC2 instances from a private AMI (VM Image) as a part of a new provisioning algorithm I was working on. I also wanted to specify my predefined security group and key-pair, so that the new VM is usable right away. Lastly, I wanted to implement it as EC2-independent as possible, so that I can include multiple clouds later on. After struggling a bit with both Apache LibCloud and Apache JClouds I could finally implement this in JClouds …

CloudSim and CloudSimEx [Part 1]

CloudSim is one of the most popular Cloud infrastructure simulators and is used throughout academia and industry. Being one of its maintainers I often get emails with requests for new features. Thus, I’ve started the CloudSimEx project, which brings some of these extensions together. CloudSimEx is a set of CloudSim extensions making simulation development easier and enabling the modelling of new types of applications, not supported by CloudSim …

Advanced Automated CloudStone Setup in Ubuntu VMs [Part 2]

This post covers how to achieve a more advanced CloudStone deployment with a dedicated load balancer in front of the web server, so that new web servers can be added dynamically. To accommodate multiple web servers we configure a central repository for the media filestore, which is shared across all of them …

Automated CloudStone Setup in Ubuntu VMs

One of the major obstacles in Cloud computing research is the lack of representative “cloudy” applications and workloads. The CloudSuite 2.0 suite of benchmarking applications tries to address just that. It comprises 8 benchmarks, which represent a large spectrum of typical applications run in cloud environments. Among them is CloudStone, which is a social media 3-tier web application benchmark. However, its installation is not straightforward. This article introduces several scripts that automate CloudStone’s installation on 64bit Ubuntu 14.04 virtual machines …

Java 8 in a Nutshell

Oracle has officially released JDK 8, featuring long-awaited language features like lambdas and a new Date-Time API. This post gives a brief overview of the new functional programming features in Java …

NuPIC Setup in Ubuntu

NuPIC (Numenta Platform for Intelligent Computing) is a biologically inspired library for machine learning in the loose sense of the term. It is an implementation of the HTM (Hierarchical Temporal Memory) model which mimics the structure and organisation of the neocortex. In this post I’ll overview a setup procedure for Ubuntu (tested with version 14.04) …

Back to Top ↑

2013

Monads in 15 minutes

This tutorial explains the intuition behind Monads and demonstrates them with a few simple and short python examples. Its goal is to explain Monads simply in less than 15 minutes and thus it refrains from making insightful philosophical and theoretical reflections …

Octave GUI in Ubuntu 13.x - First Impressions

GNU Octave is a powerful open source alternative to Matlab. The latest version 3.7 of Octave introduces a new GUI front-end with an integrated debugger. Octave 3.7 has not been officially released, but you can download the code, build and test it locally …

Back to Top ↑