Hi, I'm Vesa, a solution architect from Finland.

For many years I've worked across Finnish finance and insurance, on internet banking, system integrations, and various enterprise systems. My current focus is legacy modernization, performance, and integrating LLMs into existing systems.

Writing

Projects

JDBC profiler

Records JDBC calls and produces a report of the most expensive queries, including query text, execution time, and call stack. Useful for identifying bottlenecks in Java applications.

Why: Make performance work easier. Identify and analyze performance bottlenecks in Java applications.
Release: Maven Central
Sample report: View report
Java

Cobol to Java modernizer

Converts legacy Cobol programs into modern Java. A grammar-driven parser and multi-stage deterministic AST pipeline produce runtime-correct Java. LLM stages then modernize and optimize the output.

Why: Explore transpiler construction, grammar-driven parsing, and bridging legacy business logic to a modern runtime.
Java

arch-audit

An architecture auditing tool that speeds up getting oriented in an unknown codebase. It combines static analysis, dependency scanning, code metrics, and structure extraction into an interactive terminal-based findings browser.

Why: Programmatic software analysis.
Python

Omastoppi.fi

Web/mobile application for quickly viewing departure times for nearby public transport stops. Data fetched realtime from the HSL GraphQL API.

Why: Learn React/Next.js, and create an application which can be used quickly when on the go on the HSL region.
React/Next.js

Econstats.eu

Application which charts the major macroeconomic indicators with an EU focus. Data is fetched every day from the BLS, FRED, and ECB APIs.

Why: Learn more about AWS services. Create a macroeconomic "dashboard" for the EU area.
Python AWS

Neural networks and automatic differentation in Java

Neural networks with automatic differentiation and backpropagation in Java from scratch.

Why: Learn about machine learning, gradient descent, neural networks.
Java

WFC generator

In game development WFC (Wave Function Collapse) is used for generating output based on a set of tiles and rules. This output can then be used for different purposes, like level or texture generation. Here I'm creating textures. This is a simple Java implementation of Wave Function Collapse algorithm where the rules are defined in code.

Why: Complex result from simple rules.
Github: https://github.com/vesas/simple-wfc
Java

Spacefly

2D game with procedural level generation and dynamic area of sight calculation.

Java

Javarays

Vectorized path tracer in Java.

Why: Explore performance ideas. Try out the (new) Java Vectorization API.
Java