External Debugging Tools 1: dtrace and strace

Often when debugging, we need to step outside of the comforting embrace of the IDE to reproduce or track an issue. In this series, I’d like to go over some tools you might find useful for these cases. I’ll try to limit myself to tools that are 100% debugging tools and not those that are useful for development testing. E.g., …

Read More »

Foojay Slack: join.slack.com/t/foojay/signup

Join the Foojay.io community on Slack, here: join.slack.com/t/foojay/signup On Slack, the Foojay.io community discusses articles, insights, tips, tricks, events, and more, all related to users of the OpenJDK, such as Java and Kotlin developers. The post Foojay Slack: join.slack.com/t/foojay/signup appeared first on foojay.

Read More »

What is a Java Uber-JAR and Why Is It Useful?

An uber-JAR, also known as a fat JAR or JAR with dependencies, is a JAR file that contains not only a Java program but embeds its dependencies as well, and might also contain the web application that needs to be executed. In this article, we’ll describe the different variants of the artifact and the advantages and drawbacks it has. What …

Read More »

Getting Started with Deep Learning in Java Using Deep Netts (Part 2)

Deep Netts is a deep learning development toolkit that enables Java developers to easily add modern AI to their apps. It provides a deep learning IDE and a Java-native deep learning library for embedding AI models into Java apps. In part 1, we looked at the Deep Netts Community Edition, which is capable of solving basic machine learning problems, and …

Read More »

A Flavour of TornadoVM on Apple M1 Pro

This article aims to describe the main steps required to install and run TornadoVM on Apple M1 Pro. Steps Install Prerequisites Run TornadoVM Installer Execute Unit Tests Performance Evaluation: Running Matrix-Multiplication on Apple M1 GPU 1. Install Prerequisites To install TornadoVM, it is necessary to have some packages installed. For instance, you will have to install Maven and wget in …

Read More »

Write Your Own Service Discovery Client for Apache APISIX

API Gateways in general, and Apache APISIX in particular, provide a single entry point into one’s information system. This architecture allows for managing load balancing and failover over similar nodes. For example, here’s how you can create a route balanced over two nodes in Apache APISIX: curl http://localhost:9080/apisix/admin/routes/1 -H ‘X-API-KEY: edd1c9f034335f136f87ad84b625c8f1’ -X PUT -i -d ‘{ “uri”: “/*”, “upstream”: { …

Read More »

Understand the Root Cause of Regressions with Git Bisect

In this series, I cover a lot of magical tools and git bisect is probably the best example of such magic. The hardest part in debugging is knowing the general area of the bug… and bisect literally shines a light on the specific commit that caused it! Before we begin, let’s make one thing clear: bisect is a tool for …

Read More »

NoSQL Use Cases: When to Use a Non-Relational Database

For decades, many companies have relied on relational databases to store, protect, and access their data. SQL databases, in particular, worked well for a long time and still do for many use cases. But, today, there is a wide range of situations where SQL databases can no longer satisfy the needs of modern enterprises, especially those that have made the …

Read More »

Stateless, Secretless Multi-cluster Monitoring in Azure Kubernetes Service with Thanos, Prometheus and Azure Managed Grafana

Introduction Observability is paramount to every distributed system and it’s becoming increasingly complicated in a cloud native world where we might deploy multiple ephemeral clusters and we want to keep their metrics beyond their lifecycle span. This article aims at cloud native engineers that face the challenge of observing multiple Azure Kubernetes Clusters (AKS) and need a flexible, stateless solution, …

Read More »