<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Yonatan Karp-Rudin</title><link>https://yonatankarp.github.io/</link><description>Recent content on Yonatan Karp-Rudin</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sun, 15 Mar 2026 00:00:00 +0100</lastBuildDate><atom:link href="https://yonatankarp.github.io/index.xml" rel="self" type="application/rss+xml"/><item><title>ff4j (contributor)</title><link>https://yonatankarp.github.io/projects/ff4j/</link><pubDate>Sun, 15 Mar 2026 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/projects/ff4j/</guid><description>&lt;p&gt;Authored the javax-to-jakarta namespace migration. Merged but never released by maintainers &amp;ndash; the motivation for building ff4k.&lt;/p&gt;</description></item><item><title>TaleKeeper</title><link>https://yonatankarp.github.io/projects/talekeeper/</link><pubDate>Sun, 01 Mar 2026 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/projects/talekeeper/</guid><description>&lt;p&gt;AI-powered TTRPG session recorder with live transcription, speaker diarization, and session summaries. Python/FastAPI backend + Svelte 5 frontend. Fully self-hosted.&lt;/p&gt;</description></item><item><title>sse-mcp-server</title><link>https://yonatankarp.github.io/projects/sse-mcp-server/</link><pubDate>Thu, 01 Jan 2026 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/projects/sse-mcp-server/</guid><description>&lt;p&gt;Kotlin-based SSE MCP server for tool execution in AI agents (Flowise).&lt;/p&gt;</description></item><item><title>ff4k</title><link>https://yonatankarp.github.io/projects/ff4k/</link><pubDate>Mon, 01 Dec 2025 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/projects/ff4k/</guid><description>&lt;p&gt;Kotlin Multiplatform feature flags library with DSL configuration, multiple storage backends (JDBC, R2DBC, SQLite), and coroutine-safe context propagation. Built from scratch as a modern alternative to ff4j.&lt;/p&gt;</description></item><item><title>Staff Software Engineer - Payments</title><link>https://yonatankarp.github.io/experience/billie-staff-payments/</link><pubDate>Wed, 01 Oct 2025 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/experience/billie-staff-payments/</guid><description>&lt;p&gt;Established the Compliance Service as a new domain covering transaction monitoring, screening, and sanction checks &amp;ndash; authored the tech spec, interface definitions, and led the ComplyAdvantage integration. Built a cronjob monitoring tool in Backstage aggregating data across multiple systems. Authored operational runbooks for Kafka DLT alerts, settlement reports, and compliance state handling. Member of the architecture team. Drove Spring Boot 3 to 4 migration including upstream contributions to openapi-generator for Jackson 3 support.&lt;/p&gt;</description></item><item><title>Blake Irvin</title><link>https://yonatankarp.github.io/testimonial/blake-irvin/</link><pubDate>Mon, 29 Sep 2025 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/testimonial/blake-irvin/</guid><description>&lt;p&gt;I&amp;rsquo;d love to work with Yonatan again. He&amp;rsquo;s incredibly smart, cares deeply about quality but balances this with delivery speed, and (maybe most importantly) a great human to be teammates with.&lt;/p&gt;</description></item><item><title>Staff Software Engineer - Risk</title><link>https://yonatankarp.github.io/experience/billie-staff-risk/</link><pubDate>Tue, 01 Apr 2025 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/experience/billie-staff-risk/</guid><description>&lt;p&gt;Co-designed and built the Risk Orchestrator service using hexagonal architecture. Led the Ravelin integration for improved fraud detection, including release planning and cross-team coordination. Authored the Buyer Risk Assessment target architecture. Wrote specs for tokenization, direct debit risk, and recurrent identification. Drove API-first with OpenAPI across all risk services. Led &amp;ldquo;EDA 2.0&amp;rdquo; to improve event-driven architecture practices.&lt;/p&gt;</description></item><item><title>XKCD: From Tile to Picture - Seeing the Full Image</title><link>https://yonatankarp.github.io/blog/xkcd-from-tile-to-picture/</link><pubDate>Wed, 26 Jun 2024 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/blog/xkcd-from-tile-to-picture/</guid><description>&lt;p&gt;Table of Contents&lt;/p&gt;
&lt;p&gt;&lt;a href=""&gt;Toggle
&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/xkcd-from-tile-to-picture/#Introduction"&gt;Introduction&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/xkcd-from-tile-to-picture/#Step_1_Trying_the_Easy_Way"&gt;Step 1: Trying the Easy Way&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/xkcd-from-tile-to-picture/#Step_2_Downloading_the_Image"&gt;Step 2: Downloading the Image&lt;/a&gt;&lt;a href="https://yonatankarp.github.io/blog/xkcd-from-tile-to-picture/#Finding_the_Image_Size"&gt;Finding the Image Size&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/xkcd-from-tile-to-picture/#Downloading_the_Tiles"&gt;Downloading the Tiles&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/xkcd-from-tile-to-picture/#Building_the_Image_from_the_Tiles"&gt;Building the Image from the Tiles&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/xkcd-from-tile-to-picture/#Slicing_the_Cake"&gt;Slicing the Cake&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/xkcd-from-tile-to-picture/#The_Bug"&gt;The Bug&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/xkcd-from-tile-to-picture/#Step_3_Share_the_Results"&gt;Step 3: Share the Results&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/xkcd-from-tile-to-picture/#Conclusion"&gt;Conclusion&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/xkcd-from-tile-to-picture/#Credits"&gt;Credits&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;If there&amp;rsquo;s one thing I can say about myself, it&amp;rsquo;s that I love challenges related to software programming. They don&amp;rsquo;t need to be meaningful or even useful, but I enjoy the challenge. That&amp;rsquo;s why when I saw this message on my LinkedIn, I had to take on the challenge!&lt;/p&gt;</description></item><item><title>How to Fix Misconfigurations in RedisTemplate</title><link>https://yonatankarp.github.io/blog/fix-misconfigurations-redistemplate/</link><pubDate>Wed, 05 Jun 2024 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/blog/fix-misconfigurations-redistemplate/</guid><description>&lt;p&gt;Table of Contents&lt;/p&gt;
&lt;p&gt;&lt;a href=""&gt;Toggle
&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://yonatankarp.github.io/blog/fix-misconfigurations-redistemplate/#Introduction"&gt;Introduction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yonatankarp.github.io/blog/fix-misconfigurations-redistemplate/#Initial_Configuration"&gt;Initial Configuration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yonatankarp.github.io/blog/fix-misconfigurations-redistemplate/#Creating_the_RedisTemplate_Bean"&gt;Creating the RedisTemplate Bean&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yonatankarp.github.io/blog/fix-misconfigurations-redistemplate/#Writing_Tests"&gt;Writing Tests&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yonatankarp.github.io/blog/fix-misconfigurations-redistemplate/#Identifying_The_Issue"&gt;Identifying The Issue&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yonatankarp.github.io/blog/fix-misconfigurations-redistemplate/#Fixing_the_Issue"&gt;Fixing the Issue&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yonatankarp.github.io/blog/fix-misconfigurations-redistemplate/#Where_to_Find_the_Code"&gt;Where to Find the Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yonatankarp.github.io/blog/fix-misconfigurations-redistemplate/#Conclusion"&gt;Conclusion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yonatankarp.github.io/blog/fix-misconfigurations-redistemplate/#Credits"&gt;Credits&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Our story begins with a colleague and me trying to debug an issue with our project for a few hours. We needed to fetch a value from Redis storage, but whenever the service ran, the fetched value was &lt;code&gt;null&lt;/code&gt;. Despite our efforts, we couldn&amp;rsquo;t find a solution on the internet, and to make matters worse, our code was actually covered by tests that had all passed!&lt;/p&gt;</description></item><item><title>poor-life-choices</title><link>https://yonatankarp.github.io/projects/poor-life-choices/</link><pubDate>Mon, 01 Jan 2024 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/projects/poor-life-choices/</guid><description>&lt;p&gt;Mead sharing app for friends. JavaScript/React, live on Vercel.&lt;/p&gt;</description></item><item><title>Senior Software Engineer - Risk</title><link>https://yonatankarp.github.io/experience/billie-senior-risk/</link><pubDate>Wed, 01 Nov 2023 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/experience/billie-senior-risk/</guid><description>&lt;p&gt;Built real-time fraud detection features with Apache Flink (velocity features per email/device). Led the graph database POC (Neo4j) for fraud detection, later extended with IBAN integration. Enabled the risk scoring model and introduced provider fraud labelling for refinancing. Applied engineering best practices to Python CI/CD pipelines. Managed Kafka infrastructure via Terraform (topic creation, permissions, DLT retention). Attended Flink Forward 2024 and brought learnings back to the team.&lt;/p&gt;</description></item><item><title>Observability in Action: How to Use OpenTelemetry</title><link>https://yonatankarp.github.io/blog/observability-in-action-opentelemetry/</link><pubDate>Tue, 17 Oct 2023 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/blog/observability-in-action-opentelemetry/</guid><description>&lt;p&gt;Table of Contents&lt;/p&gt;
&lt;p&gt;&lt;a href=""&gt;Toggle
&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/observability-in-action-opentelemetry/#Introduction"&gt;Introduction&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/observability-in-action-opentelemetry/#Introduction_to_Service_Instrumentation"&gt;Introduction to Service Instrumentation&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/observability-in-action-opentelemetry/#Part_1_%e2%80%93_Building_the_Client_Library"&gt;Part 1 – Building the Client Library&lt;/a&gt;&lt;a href="https://yonatankarp.github.io/blog/observability-in-action-opentelemetry/#Adding_Dependencies"&gt;Adding Dependencies&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/observability-in-action-opentelemetry/#Domain_Modeling"&gt;Domain Modeling&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/observability-in-action-opentelemetry/#Constructing_the_HTTP_Client"&gt;Constructing the HTTP Client&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/observability-in-action-opentelemetry/#Connecting_everything_together"&gt;Connecting everything together&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/observability-in-action-opentelemetry/#Part_2_%e2%80%93_Building_the_Service"&gt;Part 2 – Building the Service&lt;/a&gt;&lt;a href="https://yonatankarp.github.io/blog/observability-in-action-opentelemetry/#Adding_Dependencies-2"&gt;Adding Dependencies&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/observability-in-action-opentelemetry/#Loading_the_Facts"&gt;Loading the Facts&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/observability-in-action-opentelemetry/#Storing_and_Reading_Facts"&gt;Storing and Reading Facts&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/observability-in-action-opentelemetry/#Dockerizing_the_Project"&gt;Dockerizing the Project&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/observability-in-action-opentelemetry/#Setting_up_docker-compose"&gt;Setting up docker-compose&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/observability-in-action-opentelemetry/#Running_the_Service"&gt;Running the Service&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/observability-in-action-opentelemetry/#Part_3_%e2%80%93_Setting_Up_Instrumentation_with_OpenTelemetry"&gt;Part 3 – Setting Up Instrumentation with OpenTelemetry&lt;/a&gt;&lt;a href="https://yonatankarp.github.io/blog/observability-in-action-opentelemetry/#HoneyCombio"&gt;HoneyComb.io&lt;/a&gt;&lt;a href="https://yonatankarp.github.io/blog/observability-in-action-opentelemetry/#Introduction-2"&gt;Introduction&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/observability-in-action-opentelemetry/#Setting_up"&gt;Setting up&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/observability-in-action-opentelemetry/#Setting_Up_OpenTelemetry"&gt;Setting Up OpenTelemetry&lt;/a&gt;&lt;a href="https://yonatankarp.github.io/blog/observability-in-action-opentelemetry/#Prerequisites"&gt;Prerequisites&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/observability-in-action-opentelemetry/#Integrating_the_OpenTelemetry_SDK_and_Agent"&gt;Integrating the OpenTelemetry SDK and Agent&lt;/a&gt;&lt;a href="https://yonatankarp.github.io/blog/observability-in-action-opentelemetry/#Dependency_Integration"&gt;Dependency Integration&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/observability-in-action-opentelemetry/#Constructing_the_Gradle_Task_for_the_OpenTelemetry_Agent"&gt;Constructing the Gradle Task for the OpenTelemetry Agent&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Konsist (contributor)</title><link>https://yonatankarp.github.io/projects/konsist/</link><pubDate>Sun, 01 Oct 2023 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/projects/konsist/</guid><description>&lt;p&gt;CI pipeline improvements, snippet verification, and null handling fixes for the Kotlin static code analyzer. 3 merged PRs.&lt;/p&gt;</description></item><item><title>openapi-generator (contributor)</title><link>https://yonatankarp.github.io/projects/openapi-generator/</link><pubDate>Tue, 01 Aug 2023 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/projects/openapi-generator/</guid><description>&lt;p&gt;Added Spring Boot 4 and Jackson 3 support for the Kotlin Spring generator. 10 PRs including fixes for Retrofit templates, Jackson converters, and hashmap model generation.&lt;/p&gt;</description></item><item><title>xkcd-click-and-drag</title><link>https://yonatankarp.github.io/projects/xkcd-click-and-drag/</link><pubDate>Thu, 01 Jun 2023 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/projects/xkcd-click-and-drag/</guid><description>&lt;p&gt;Full image reconstruction of the famous XKCD comic #1110 using Kotlin.&lt;/p&gt;</description></item><item><title>[Interview Questions] Concurrency vs. Parallelism: Decoding the Simultaneous Illusion</title><link>https://yonatankarp.github.io/blog/interview-questions-concurrency-parallelism/</link><pubDate>Sat, 11 Mar 2023 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/blog/interview-questions-concurrency-parallelism/</guid><description>&lt;blockquote&gt;
&lt;p&gt;TL;DR - What are the differences between concurrent and parallel programming?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;One of my most successful posts so far is a detailed explanation of my favorite interview question (see &lt;a href="https://yonatankarp.com/how-does-hashmap-work-in-java"&gt;How does HashMap work in Java?&lt;/a&gt; for more details). As a result, I&amp;rsquo;ve decided to create a series of posts breaking down more questions. All the questions that will be answered during this series have been used in my current employer&amp;rsquo;s hiring process.&lt;/p&gt;</description></item><item><title>Real-Life Problem Solving: Lessons from My Engineering Principles</title><link>https://yonatankarp.github.io/blog/real-life-problem-solving-engineering-principles/</link><pubDate>Sun, 05 Mar 2023 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/blog/real-life-problem-solving-engineering-principles/</guid><description>&lt;p&gt;My employer announced a few months ago that any employee who works for three years or more is entitled to a sabbatical. This sabbatical is a fully paid one-month vacation of your choice. Since my wife and I had accumulated a significant number of vacation days, we decided to embark on a two-month trip to Asia—a destination we had long desired to visit. In this post, I will describe step by step how I applied methods from my day-to-day work as a software engineer to solve real-life problems.&lt;/p&gt;</description></item><item><title>exekutor</title><link>https://yonatankarp.github.io/projects/exekutor/</link><pubDate>Sun, 01 Jan 2023 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/projects/exekutor/</guid><description>&lt;p&gt;Plugin architecture demo in Kotlin. Demonstrates extensible application design patterns.&lt;/p&gt;</description></item><item><title>How To Build Your Domain Gateway With OpenApi</title><link>https://yonatankarp.github.io/blog/build-domain-gateway-openapi/</link><pubDate>Wed, 14 Dec 2022 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/blog/build-domain-gateway-openapi/</guid><description>&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; This article explains what a domain gateway is, how to build one, and why you would want it.&lt;/p&gt;
&lt;p&gt;Table of Contents&lt;/p&gt;
&lt;p&gt;&lt;a href=""&gt;Toggle
&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/build-domain-gateway-openapi/#What_is_a_Domain_Gateway"&gt;What is a Domain Gateway?&lt;/a&gt;&lt;a href="https://yonatankarp.github.io/blog/build-domain-gateway-openapi/#Domain_Gateway_Dos"&gt;Domain Gateway Do&amp;rsquo;s&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/build-domain-gateway-openapi/#Domain_Gateway_Donts"&gt;Domain Gateway Don&amp;rsquo;ts&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/build-domain-gateway-openapi/#Ok_Im_Convinced%e2%80%a6"&gt;Ok, I&amp;rsquo;m Convinced…&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/build-domain-gateway-openapi/#How_Do_I_Build_a_Domain_Gateway"&gt;How Do I Build a Domain Gateway?&lt;/a&gt;&lt;a href="https://yonatankarp.github.io/blog/build-domain-gateway-openapi/#Tech_Stack"&gt;Tech Stack&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/build-domain-gateway-openapi/#Domain_Gateway_Structure"&gt;Domain Gateway Structure&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/build-domain-gateway-openapi/#API_Specs"&gt;API Specs&lt;/a&gt;&lt;a href="https://yonatankarp.github.io/blog/build-domain-gateway-openapi/#Hello_Service"&gt;Hello Service&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/build-domain-gateway-openapi/#Goodbye_Service"&gt;Goodbye Service&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/build-domain-gateway-openapi/#Domain_Gateway_Service"&gt;Domain Gateway Service&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/build-domain-gateway-openapi/#Generating_Multiple_Specs"&gt;Generating Multiple Specs&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/build-domain-gateway-openapi/#Add_Generated_Code_To_Project"&gt;Add Generated Code To Project&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/build-domain-gateway-openapi/#Using_The_Generated_Code"&gt;Using The Generated Code&lt;/a&gt;&lt;a href="https://yonatankarp.github.io/blog/build-domain-gateway-openapi/#Clients_Definition"&gt;Clients Definition&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yonatankarp.github.io/blog/build-domain-gateway-openapi/#Domain_Gateway_Definition"&gt;Domain Gateway Definition&lt;/a&gt;&lt;/p&gt;</description></item><item><title>How to Use OpenApi to Build a Robust RESTful API</title><link>https://yonatankarp.github.io/blog/openapi-robust-restful-api/</link><pubDate>Sun, 04 Dec 2022 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/blog/openapi-robust-restful-api/</guid><description>&lt;div class="editors-note"&gt;
&lt;p&gt;&lt;strong&gt;Editor&amp;rsquo;s Note:&lt;/strong&gt; This post was originally written by me and published on SumUp&amp;rsquo;s blog. However, a lot has changed since then. I am no longer working for SumUp, OpenAPI has released two major versions, Spring Boot has had a major release, and even Gradle has had multiple major releases. Not only that, but my writing skills have improved dramatically since then, and over time, I have found some small mistakes in the original article. Since the original article is one of my most successful, I decided to rewrite it and publish an updated version.&lt;/p&gt;</description></item><item><title>Create a Custom Spring Boot App Banner</title><link>https://yonatankarp.github.io/blog/custom-spring-boot-banner/</link><pubDate>Fri, 02 Dec 2022 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/blog/custom-spring-boot-banner/</guid><description>&lt;p&gt;Today, I&amp;rsquo;d like to share a fun feature of Spring with you. It&amp;rsquo;s not new or crucial, but it&amp;rsquo;s definitely enjoyable!&lt;/p&gt;
&lt;p&gt;Normally, when you launch your Spring Boot app, you see a standard banner in the logs like this:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://yonatankarp.github.io/images/blog/medium-1*qhCPGhoCfVHDiV_8C2w-IQ.png" alt="Spring Boot Banner"&gt;&lt;/p&gt;
&lt;p&gt;But have you ever thought about replacing that Spring banner with your own custom banner? If you have, then this article is for you!&lt;/p&gt;
&lt;p&gt;To begin, let&amp;rsquo;s visit &lt;a href="https://patorjk.com/"&gt;https://patorjk.com/&lt;/a&gt;, a website that helps us create custom text. You can enter the desired text for your log and choose from a variety of fonts. For example:&lt;/p&gt;</description></item><item><title>How does HashMap work in Java?</title><link>https://yonatankarp.github.io/blog/how-hashmap-works-java/</link><pubDate>Fri, 02 Dec 2022 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/blog/how-hashmap-works-java/</guid><description>&lt;p&gt;As an interviewer, I often ask the question about how HashMap works in Java. It helps me assess a candidate&amp;rsquo;s understanding of data structures, JVM internals, and their problem-solving approach. I&amp;rsquo;ve encountered many candidates, including juniors, mid-levels, and seniors, who couldn&amp;rsquo;t answer this question correctly. So, I decided to share the answer with everyone.&lt;/p&gt;
&lt;p&gt;In this article, I will explain the HashMap question step by step.&lt;/p&gt;
&lt;h3 id="what-is-the-contract-between-the-equals-and-hashcode-functions-in-java"&gt;What is the contract between the equals() and hashCode() functions in Java?&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://yonatankarp.github.io/images/blog/medium-1*o-EXRh62Vv1wF6hGc8enkg.jpeg" alt=""&gt;&lt;/p&gt;</description></item><item><title>How to Break Your HashMap in Less Than a Minute</title><link>https://yonatankarp.github.io/blog/break-hashmap-less-than-a-minute/</link><pubDate>Fri, 02 Dec 2022 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/blog/break-hashmap-less-than-a-minute/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; Never use mutable objects as keys in your HashMap!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;After I wrote my article &lt;a href="https://yonatankarp.com/how-does-hashmap-work-in-java"&gt;&lt;strong&gt;How does HashMap work in Java?&lt;/strong&gt;&lt;/a&gt;, a few people suggested more topics related to HashMap. As a result, I decided to create a short series of articles about it.&lt;/p&gt;
&lt;p&gt;In today&amp;rsquo;s article, we will discuss JVM HashMaps and how they can be easily broken if not used carefully. It&amp;rsquo;s important to note that while we&amp;rsquo;ll be focusing on the JVM world, the same principles apply to most modern programming languages.&lt;/p&gt;</description></item><item><title>Beat The Machine</title><link>https://yonatankarp.github.io/projects/beat-the-machine/</link><pubDate>Sat, 01 Oct 2022 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/projects/beat-the-machine/</guid><description>&lt;p&gt;AI-powered guessing game where players identify prompts used to generate images. Built as a university project, later rewritten with DDD.&lt;/p&gt;</description></item><item><title>kotlin-design-patterns</title><link>https://yonatankarp.github.io/projects/kotlin-design-patterns/</link><pubDate>Sat, 01 Oct 2022 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/projects/kotlin-design-patterns/</guid><description>&lt;p&gt;Software design patterns implemented in idiomatic Kotlin. Actively maintained with MkDocs documentation site.&lt;/p&gt;</description></item><item><title>java-design-patterns (contributor)</title><link>https://yonatankarp.github.io/projects/java-design-patterns/</link><pubDate>Thu, 01 Sep 2022 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/projects/java-design-patterns/</guid><description>&lt;p&gt;Refactored the Prototype pattern implementation.&lt;/p&gt;</description></item><item><title>How to inject multiple implementations in the Spring Framework</title><link>https://yonatankarp.github.io/blog/inject-multiple-implementations-spring/</link><pubDate>Fri, 11 Feb 2022 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/blog/inject-multiple-implementations-spring/</guid><description>&lt;p&gt;Recently, I had a discussion with one of my colleagues during a code review. We talked about a hidden gem in Spring (as well as other frameworks like Micronaut) that could simplify our code.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s consider a task: developing a good morning greeting system that supports both English and Hebrew languages. The system should greet us in each of these languages.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ll begin with the native implementation by introducing our greeters:&lt;/p&gt;</description></item><item><title>4 Reasons Why Amazon Keyspaces is Problematic!</title><link>https://yonatankarp.github.io/blog/amazon-keyspaces-problematic/</link><pubDate>Thu, 30 Dec 2021 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/blog/amazon-keyspaces-problematic/</guid><description>&lt;p&gt;Around a year ago, my team and I were tasked with building a high-performance system capable of handling a large volume of requests. After careful consideration, we chose Cassandra as our database.&lt;/p&gt;
&lt;p&gt;When it came to productizing our system, we explored three main options:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://cassandra.apache.org/_/index.html"&gt;&lt;strong&gt;Self-hosted Cassandra&lt;/strong&gt;&lt;/a&gt;: We ruled this out due to the need for hardware maintenance.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.datastax.com/"&gt;&lt;strong&gt;DataStax&lt;/strong&gt;&lt;/a&gt;: Dubbed the &amp;ldquo;Confluence-Kafka&amp;rdquo; of Cassandra, it offers a fully cloud-based implementation managed by the DataStax team.&lt;/p&gt;</description></item><item><title>Build your own Twitter Bot with Kotlin</title><link>https://yonatankarp.github.io/blog/build-twitter-bot-kotlin/</link><pubDate>Wed, 15 Dec 2021 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/blog/build-twitter-bot-kotlin/</guid><description>&lt;p&gt;I read an excellent article by &lt;a href="https://medium.com/u/f864d52751a7"&gt;Martin Erlic&lt;/a&gt; called &amp;ldquo;&lt;a href="https://medium.com/@SeloSlav/how-to-make-a-scary-russian-twitter-bot-with-java-b7b62768a3ac"&gt;How To Make a Scary Russian Twitter Bot With Java&lt;/a&gt;&amp;rdquo; and I wanted to update it using Kotlin.&lt;/p&gt;
&lt;p&gt;Unlike the original article, I will use Kotlin, a newer and more modern JVM-based language, and Gradle as the build system.&lt;/p&gt;
&lt;p&gt;To build the bot, follow these simple steps:&lt;/p&gt;
&lt;h3 id="step-1--create-a-twitter-application"&gt;Step 1 — Create a Twitter Application&lt;/h3&gt;
&lt;p&gt;The first step is to create a &lt;a href="https://apps.twitter.com/"&gt;Twitter Application&lt;/a&gt; using the user account you want to perform the API requests with. By creating the Twitter application, you will obtain the API key and API secret, which we&amp;rsquo;ll later use to authenticate our bot with Twitter.&lt;/p&gt;</description></item><item><title>Backend Software Developer</title><link>https://yonatankarp.github.io/experience/sumup/</link><pubDate>Sat, 01 Jun 2019 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/experience/sumup/</guid><description>&lt;p&gt;Built a unified money library used across backend and Android. Created an authorization and permissions management library. Designed a sales management platform with clean domain separation. Migrated 6 years of historical data with minimal production impact using a separate deployment strategy. Reduced new service setup from 1 week to 1-2 hours with a repository template. Implemented service-level objective monitoring. On-call for critical payment systems.&lt;/p&gt;</description></item><item><title>Oren Hadry</title><link>https://yonatankarp.github.io/testimonial/oren-hadry/</link><pubDate>Tue, 16 Oct 2018 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/testimonial/oren-hadry/</guid><description>&lt;p&gt;I was privileged to have Yonatan on my team for almost 3 years. Yonatan is a dedicated, intelligent, and hard-working team player who played a key role in our team and was the go-to person for almost any problem. I have seen few people who could match his skills at solving technical problems, coding and design.&lt;/p&gt;</description></item><item><title>Shimon Schocken</title><link>https://yonatankarp.github.io/testimonial/shimon-schocken/</link><pubDate>Mon, 15 Oct 2018 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/testimonial/shimon-schocken/</guid><description>&lt;p&gt;Yonatan is a highly talented and disciplined software developer, with an excellent background in both computer science and programming. He is a people-person, with remarkable empathy and ability to recognize when and where students and developers need help and further guidelines. He is also a very pleasant and good-spirited colleague.&lt;/p&gt;</description></item><item><title>Backend Software Developer</title><link>https://yonatankarp.github.io/experience/nice/</link><pubDate>Fri, 01 Dec 2017 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/experience/nice/</guid><description>&lt;p&gt;Java and Python application development on distributed systems. Refactored a product&amp;rsquo;s cache system improving performance and reliability. Built an automated release notes generator integrating Python 3 and Jira.&lt;/p&gt;</description></item><item><title>Emma's Inferno</title><link>https://yonatankarp.github.io/projects/emmas-inferno/</link><pubDate>Fri, 01 Jan 2016 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/projects/emmas-inferno/</guid><description>&lt;p&gt;Atmospheric puzzle-platformer exploring themes of morality. University capstone project.&lt;/p&gt;</description></item><item><title>Larry the Last Zombie</title><link>https://yonatankarp.github.io/projects/larry-the-last-zombie/</link><pubDate>Sun, 01 Nov 2015 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/projects/larry-the-last-zombie/</guid><description>&lt;p&gt;Tower defense game. Team project at Reichman University.&lt;/p&gt;</description></item><item><title>Jacob's Choice</title><link>https://yonatankarp.github.io/projects/jacobs-choice/</link><pubDate>Thu, 01 Oct 2015 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/projects/jacobs-choice/</guid><description>&lt;p&gt;Horror adventure game. Won 3rd place at GameIS Awards 2015.&lt;/p&gt;</description></item><item><title>C++/C# Junior Developer</title><link>https://yonatankarp.github.io/experience/inuitive/</link><pubDate>Fri, 01 Aug 2014 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/experience/inuitive/</guid><description>&lt;p&gt;Developed algorithms on next-generation vision processing chips in C++. Created calibration processes for production lines (C++, C#, Python, Matlab). Established production lines in South Korea and China &amp;ndash; logistics, equipment setup, and training.&lt;/p&gt;</description></item><item><title>Reichman University</title><link>https://yonatankarp.github.io/education/reichman/</link><pubDate>Sat, 01 Sep 2012 00:00:00 +0100</pubDate><guid>https://yonatankarp.github.io/education/reichman/</guid><description/></item><item><title>Footer</title><link>https://yonatankarp.github.io/footer/footer/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://yonatankarp.github.io/footer/footer/</guid><description>&lt;section id="contact" class="section section--contact pt-0"&gt;
 &lt;div class="container"&gt;
 &lt;div class="contact w-100"&gt;
 &lt;h2&gt;Get in touch&lt;/h2&gt;

 &lt;div class="row pt-2"&gt;
 &lt;div class="col-12 col-lg-7"&gt;
 &lt;form action="" method="" class="contact__form"&gt;
 &lt;div class="row"&gt;
 &lt;div class="col-12 col-sm-6"&gt;
 &lt;input type="text" name="full_name" class="form-control" placeholder="John Doe"&gt;
 &lt;/div&gt;
 &lt;div class="col-12 col-sm-6"&gt;
 &lt;input type="email" name="email" class="form-control" placeholder="john.doe@example.com"&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="row pt-4"&gt;
 &lt;div class="col-12"&gt;
 &lt;input type="tel" name="phone" class="form-control" &gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="row pt-4"&gt;
 &lt;div class="col-12"&gt;
 &lt;textarea name="message" class="form-control" rows="2" placeholder="Hey, I'd love to connect!"&gt;&lt;/textarea&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="row pt-4"&gt;
 &lt;div class="col-12"&gt;
 &lt;button type="submit" class="btn btn-primary"&gt;Send message&lt;/button&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;/form&gt;
 &lt;/div&gt;
 &lt;div class="col-12 col-lg-5 contact__info"&gt;
 

 
 &lt;h3&gt;Email&lt;/h3&gt;
 &lt;span&gt;&lt;a href='mailto:yonvata@gmail.com'&gt;yonvata@gmail.com&lt;/a&gt;&lt;/span&gt;
 
 
 
 &lt;h3&gt;Location&lt;/h3&gt;
 &lt;span&gt;Berlin, Germany&lt;/span&gt;
 
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;/div&gt;
&lt;/section&gt;</description></item><item><title>Home</title><link>https://yonatankarp.github.io/home/home/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://yonatankarp.github.io/home/home/</guid><description>&lt;section id="showcase" class="rad-showcase rad-showcase--index rad-animation-group rad-fade-down"&gt;
 &lt;div&gt;
 

 &lt;div class="showcase-section row flex-column-reverse flex-md-row rad-fade-down rad-waiting rad-animate"&gt;
 &lt;div class="col-12 col-sm-12 col-md-6 col-lg-6 col-xl-6"&gt;
 &lt;h1 class="display-1"&gt;
 Yonatan Karp-Rudin
 &lt;/h1&gt;
 &lt;h2 class="display-5"&gt;
 &lt;span&gt;Staff Software Engineer&lt;/span&gt;
 &lt;/h2&gt;
 &lt;div class="lead"&gt;
 Staff Software Engineer based in Berlin, building payment and compliance systems at Billie. 12 years across embedded systems, distributed backends, and fintech platforms.
 &lt;/div&gt;
 
 &lt;/div&gt;
 &lt;div class="col-12 col-sm-12 col-md-6 col-lg-6 col-xl-6 profile-image"&gt;
 










 
 



 
 


 &lt;picture class=""&gt;
 
 

 &lt;source srcset="https://yonatankarp.github.io/images/showcase/showcase_hu_ae8e5ea82e51a6e6.webp 1x, https://yonatankarp.github.io/images/showcase/showcase_hu_1331b758f568a9f0.webp 2x" type="image/webp" /&gt;
 &lt;source srcset="https://yonatankarp.github.io/images/showcase/showcase_hu_cdcfbed3ffb37df8.png 1x, https://yonatankarp.github.io/images/showcase/showcase_hu_b6a5de1032e704e2.png 2x" type="image/png"&gt;

 &lt;img
 width="200"
 height="200"
 class="lozad img-responsive "
 data-src="https://yonatankarp.github.io/images/showcase/showcase_hu_cdcfbed3ffb37df8.png"
 alt=''
 src="data:image/gif;base64,R0lGODlhBwACAIAAAP///wAAACH5BAEAAAEALAAAAAAHAAIAAAIDjI9YADs="
 loading="lazy"
 decoding="async"
 /&gt;
 &lt;/picture&gt;




 &lt;/div&gt;
 &lt;div class="col-12 inner-content"&gt;
 





&lt;div class="container"&gt;
 &lt;div class="row platform-links shortcode"&gt;
 &lt;div class="col-12"&gt;
 
 
 &lt;a
 href="https://github.com/yonatankarp"
 target="_blank"
 rel="noopener noreferrer"
 aria-label="square-github"
 &gt;&lt;i class="icon-square-github"&gt;&lt;/i&gt;
 &lt;/a&gt;

 
 
 &lt;a
 href="https://www.linkedin.com/in/yonatankarp/"
 target="_blank"
 rel="noopener noreferrer"
 aria-label="linkedin"
 &gt;&lt;i class="icon-linkedin"&gt;&lt;/i&gt;
 &lt;/a&gt;

 
 
 &lt;a
 href="https://twitter.com/yonvata"
 target="_blank"
 rel="noopener noreferrer"
 aria-label="x-twitter"
 &gt;&lt;i class="icon-x-twitter"&gt;&lt;/i&gt;
 &lt;/a&gt;

&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;



 &lt;/div&gt;
 

 &lt;/div&gt;


 &lt;div class="row platform-links"&gt;
 &lt;div class="col-12"&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 
&lt;/section&gt;
















&lt;section id="about" class="section rad-animation-group pb-0"&gt;
 &lt;div class="rad-fade-down"&gt;
 &lt;div class="row d-flex flex-column-reverse flex-md-row"&gt;
 &lt;div class="about__profile-picture col-12 col-md-6"&gt;
 










 
 



 
 


 &lt;picture class=""&gt;
 
 

 &lt;source srcset="https://yonatankarp.github.io/images/about/user-picture_hu_4533ed6509764c60.webp 1x, https://yonatankarp.github.io/images/about/user-picture_hu_19f885611eb5acdf.webp 2x" type="image/webp" /&gt;
 &lt;source srcset="https://yonatankarp.github.io/images/about/user-picture_hu_a9ef667d52088856.png 1x, https://yonatankarp.github.io/images/about/user-picture_hu_837d0eaf4efc356f.png 2x" type="image/png"&gt;

 &lt;img
 width="256"
 height="256"
 class="lozad img-responsive image-left-overflow"
 data-src="https://yonatankarp.github.io/images/about/user-picture_hu_a9ef667d52088856.png"
 alt=''
 src="data:image/gif;base64,R0lGODlhBwACAIAAAP///wAAACH5BAEAAAEALAAAAAAHAAIAAAIDjI9YADs="
 loading="lazy"
 decoding="async"
 /&gt;
 &lt;/picture&gt;

 &lt;/div&gt;
 &lt;div class="col-12 col-md-6 my-auto"&gt;
 &lt;h2&gt;About me&lt;/h2&gt;
 &lt;div class="about-me content"&gt;
 Staff Software Engineer based in Berlin, building payment and compliance systems at Billie.&lt;br/&gt;&lt;br/&gt;I have 12 years of experience across the full spectrum -- from embedded systems and chip calibration (C++/C#) to distributed backend platforms (Kotlin/Java/Spring Boot). I've worked in computer vision hardware, enterprise contact centers, fintech payments, and B2B lending.&lt;br/&gt;&lt;br/&gt;At Billie, I own the Compliance Service covering transaction monitoring and screening, sit on the architecture team, and drive initiatives like API-first design across services, CI pipeline improvements, and AI adoption. Before that, I spent 4.5 years at SumUp building platform libraries, migrating legacy data, and establishing service templates.&lt;br/&gt;&lt;br/&gt;I write about Kotlin and backend engineering at &lt;a href='https://kotlinbackend.com'&gt;kotlinbackend.com&lt;/a&gt;, contribute to open source projects like openapi-generator, and maintain &lt;a href='https://github.com/yonatankarp/ff4k'&gt;ff4k&lt;/a&gt; -- a Kotlin Multiplatform feature flags library.
 &lt;/div&gt;
 
 &lt;a href="https://yonatankarp.github.io/skills" target="_blank" class="btn btn-primary mt-3"&gt;
 &lt;i class=""&gt;&lt;/i&gt;
 Check my skills
 &lt;/a&gt;
 
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;/div&gt;
&lt;/section&gt;




&lt;section
 id="education"
 class="section section--border-bottom rad-animation-group"
&gt;
 &lt;div class="container-education"&gt;
 &lt;div class="row rad-fade-down"&gt;
 &lt;div class="col-12"&gt;
 &lt;h2&gt;Education&lt;/h2&gt;
 &lt;div class="row pt-2 pt-md-4"&gt;
 
 &lt;div class="col-12 col-sm-6 mb-4 mb-sm-0"&gt;
 &lt;div class="education"&gt;
 &lt;div class="education__date"&gt;2012-2016&lt;/div&gt;
 &lt;div class="education__title"&gt;Reichman University&lt;/div&gt;
 &lt;div class="education__degree"&gt;B.Sc. Computer Science&lt;/div&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;/div&gt;
&lt;/section&gt;










&lt;section id="experience-list-shortcode" class="section-experience section section--border-bottom rad-animation-group flex-grow-1 "&gt;
 &lt;div class="row flex-column-reverse flex-md-row rad-fade-down"&gt;
 &lt;div class="experience-list col-12 mt-5 mt-sm-0"&gt;
 
 &lt;h2 class="section__title mb-4"&gt;Experience&lt;/h2&gt;
 
 
 

 

 
 &lt;div class="experience row"&gt;
 &lt;div class="experience__header col-12 col-md-3 d-flex align-items-start"&gt;
 
 
 &lt;div class="experience__meta"&gt;
 &lt;div class="experience__date"&gt;Oct 2025 - Present&lt;/div&gt;
 &lt;div class="experience__title"&gt;Staff Software Engineer&lt;/div&gt;
 &lt;div class="experience__company"&gt;Billie. &lt;span class="experience__location"&gt;
 Berlin, Germany&lt;/span&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="experience__description d-print-block col-12 col-md-9 mt-3 mt-md-0"&gt;
 &lt;h1&gt;Staff Software Engineer - Payments&lt;/h1&gt;
 &lt;p&gt;Established the Compliance Service as a new domain covering transaction monitoring, screening, and sanction checks &amp;ndash; authored the tech spec, interface definitions, and led the ComplyAdvantage integration. Built a cronjob monitoring tool in Backstage aggregating data across multiple systems. Authored operational runbooks for Kafka DLT alerts, settlement reports, and compliance state handling. Member of the architecture team. Drove Spring Boot 3 to 4 migration including upstream contributions to openapi-generator for Jackson 3 support.&lt;/p&gt;</description></item><item><title>Printable CV</title><link>https://yonatankarp.github.io/cv/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://yonatankarp.github.io/cv/</guid><description>&lt;h3 id="about-me"&gt;About me&lt;/h3&gt;
&lt;p&gt;Staff Software Engineer based in Berlin, building payment and compliance systems at Billie. 12 years of experience across embedded systems, distributed backends, and fintech platforms. Open source contributor (openapi-generator, ff4k, Konsist). Technical writer at kotlinbackend.com.&lt;/p&gt;
&lt;h3 id="experience"&gt;Experience&lt;/h3&gt;









&lt;section id="experience-list-shortcode" class="section-experience section section--border-bottom rad-animation-group flex-grow-1 "&gt;
 &lt;div class="row flex-column-reverse flex-md-row rad-fade-down"&gt;
 &lt;div class="experience-list col-12 mt-5 mt-sm-0"&gt;
 
 
 

 

 
 &lt;div class="experience row"&gt;
 &lt;div class="experience__header col-12 col-md-3 d-flex align-items-start"&gt;
 
 
 &lt;div class="experience__meta"&gt;
 &lt;div class="experience__date"&gt;Oct 2025 - Present&lt;/div&gt;
 &lt;div class="experience__title"&gt;Staff Software Engineer&lt;/div&gt;
 &lt;div class="experience__company"&gt;Billie. &lt;span class="experience__location"&gt;
 Berlin, Germany&lt;/span&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="experience__description d-print-block col-12 col-md-9 mt-3 mt-md-0"&gt;
 &lt;h1&gt;Staff Software Engineer - Payments&lt;/h1&gt;
 &lt;p&gt;Established the Compliance Service as a new domain covering transaction monitoring, screening, and sanction checks &amp;ndash; authored the tech spec, interface definitions, and led the ComplyAdvantage integration. Built a cronjob monitoring tool in Backstage aggregating data across multiple systems. Authored operational runbooks for Kafka DLT alerts, settlement reports, and compliance state handling. Member of the architecture team. Drove Spring Boot 3 to 4 migration including upstream contributions to openapi-generator for Jackson 3 support.&lt;/p&gt;</description></item><item><title>Search</title><link>https://yonatankarp.github.io/search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://yonatankarp.github.io/search/</guid><description>search</description></item></channel></rss>