Skip to content

Blog

A 3D diorama where small robotic builders assemble BigQuery dry-run, Trino federation, CockroachDB retry loop, and DuckDB embedded analytics stations
Bluetape4k Exposed Part 6: BigQuery, Trino, CockroachDB, and DuckDB Integrations Before running against special-purpose databases, check the contracts that make the integration safe.
3D illustration of an OCR service workbench with image upload, validation, native OCR execution, completed response, and fallback response panels
Operating an OCR Service in Practice: Large Image Preprocessing and Failure Response Contracts Treat an OCR service as a large-image input boundary, native OCR runtime boundary, and failure response contract, not just a text extraction endpoint.
A 3D API Gateway rate-limiter workbench with allowed requests, 429 responses, Redis, and Caffeine cache blocks
Bucket4j Rate Limiting: Choose the Caller Identity Before the Bucket A practical look at Bucket4j rate limiting as caller identity, proxy trust, bucket storage, and response-header contracts.
A 3D workbench illustration where colorful Kotlin Flow lanes pass through debounce, fallback, subject bridge, aggregation, parallel enrichment, and metrics sampling modules
bluetape4k Flow Extensions: Turning Stream Plumbing into Named Operational Contracts Six workshop examples showing how Kotlin Flow extensions make debounce, fallback, callback bridge, aggregation, parallel enrichment, and sampling contracts explicit.
A 3D workbench illustration where small robot workers assemble Spring and Ktor service blocks, coroutine span lanes, a Zipkin trace tree, Prometheus and Grafana dashboards, and a readiness gauge
Coroutine Observability: The Boundaries Micrometer Tracing and Readiness Actually Prove A workshop walkthrough of keeping traces connected across coroutine boundaries and treating readiness as a real operational contract.
A 3D workbench illustration where small robot workers connect an orders database, Kafka conveyor, fallback outbox tray, and relay station
Transactional Outbox Part 2: Kafka-First Fallback to Keep the Hot Transaction Small A Kafka-first outbox variant that writes durable fallback rows only when direct Kafka publish fails.
bluetape4k 3D miniature workbench hero where robot builders assemble a DB transaction, outbox tray, relay robot, API block, idempotency key, and retry cards
Transactional Outbox and Idempotency in Spring and Ktor Examples Use Spring and Ktor examples to see how domain rows, outbox rows, duplicate requests, and retries stay inside explicit failure boundaries.
A workbench illustration where small robots remove duplicate dictionary cards and pass them through a test quality gate
Bluetape4k Text Part 4: Dictionary Updates and Quality Gates A one-line dictionary change can change tokenizer and blockword-filter behavior. This post shows how to clean, test, and document dictionary updates.
A 3D workbench illustration where robotic builders assemble keyword cards, a trie-like automaton, a text scanner, and match output bins
Bluetape4k Text Part 3: Aho-Corasick Search and Workshop Scenarios As keyword dictionaries grow, repeated contains checks become expensive and harder to reason about. Build the automaton once, then scan each input once.
A 3D workbench illustration where robotic builders route multilingual text cards through Korean tokenizer, Japanese tokenizer, and Lingua detector machines
Bluetape4k Text Part 2: Routing Input with Tokenizers and Language Detection Korean, Japanese, and fallback text paths should not be pushed through one generic string function. This post shows where the bluetape4k-text tokenizer and Lingua boundaries fit.
A 3D workbench illustration where robot librarians sort Korean, Japanese, and English text strips into tokenizer, language detection, Aho-Corasick search, and quality gate stations
Bluetape4k Text Part 1: Starting Point and Quality Baseline Text processing becomes a service-boundary problem once user input, multilingual content, dictionaries, and safety checks meet.
3D workbench illustration where robot builders move a Jackson 2 block aside and align Spring Boot 4, Jackson 3, tools.jackson, JsonMapper, and a migration checklist
Migrating Workshop Spring Modules to Jackson 3 on Spring Boot 4 Spring Boot 4 examples should follow the Jackson 3 line. Check dependencies, imports, mapper beans, and exceptions.
3D workbench illustration where robot builders organize H2, PostgreSQL, MySQL, JDBC, and R2DBC benchmark equipment
Rebuilding Batch Benchmarks: Moving from measureTimeMillis to kotlinx-benchmark Numbers are easy to produce. The harder part is deciding whether they are safe to believe.
Robotic builders arranging X-TENANT-ID and route key blocks between Ktor, Exposed, and R2DBC components on a 3D workbench
Exposed R2DBC Workshop: Ktor Multi-Tenant Routing Patterns In Ktor, keep tenant state out of ThreadLocal. Resolve it once, store it on the call, and pass explicit routing values.
Robotic builders inspecting Sync and Virtual Threads graph benchmark lanes on a 3D workbench
Bluetape4k Graph Part 5: Reading the Virtual Threads Benchmark Virtual Threads are not faster graph calls. They are a simpler way to handle many graph calls that wait.
Editorial 3D workbench illustration comparing Go and Kotlin ID generators
Global Unique ID Generator Performance: Go and Kotlin Go ID generator implementation, Phase 1 comparison, Go entropy improvements, Phase 2 comparison, Kotlin ULID/KSUID/Snowflake improvements, and Phase 3 comparison.
Robotic builders reviewing abuse detection, recommendation, knowledge graph, and social network graph boards on a 3D workbench
Bluetape4k Graph Part 4: Workshop Scenarios and Service Integration Runnable examples are the cheapest way to validate a graph design.
Robotic builders moving CSV, NDJSON, GraphML, and OkIO files through a graph import/export conveyor on a 3D workbench
Bluetape4k Graph Part 3: Graph I/O and Benchmarks Graph data must be exportable, importable, and reproducible in tests.
Robotic builders assembling GraphOperations, Schema DSL, transaction, and coroutine execution model blocks on a 3D workbench
Bluetape4k Graph Part 2: Core API and Execution Models The core API reduces repeated service code without pretending every graph storage behaves the same.
A robotic engineer comparing Neo4j, Memgraph, AGE, TinkerGraph, and FalkorDB graph database blocks on a 3D workbench
Bluetape4k Graph Part 1: Database Selection Map After deciding to use a graph database, the next question is which graph storage to start with.
3D workbench illustration of robotic developers wiring a DDD command flow to JaVers audit storage
Bluetape4k JaVers Part 3: DDD and Workshop Audit Example Move from manual audit tables to JaVers snapshots, DDD repositories, and Kafka/Redis projection flow.
3D workbench illustration of robotic engineers sorting JaVers snapshots into Exposed, Redis, and Kafka stations
Bluetape4k JaVers Part 2: Exposed, Redis, and Kafka Persistence Exposed is durable history, Redis is fast snapshot reads, and Kafka is a write-only event stream.
3D workbench illustration of small robotic auditors inspecting JaVers snapshots and diff cards
Bluetape4k JaVers Part 1: Audit and Diff Overview Start with the JaVers commit, snapshot, and diff model before creating another audit table per entity.
A 3D illustration of small robotic builders assembling Spring Boot, Ktor, S3, SQS, DynamoDB, StorageService, LocalStack, and Floci blocks into an AWS example lab
Bluetape4k AWS Part 5: Applying the Real Examples A practical tour of examples/ and bluetape4k-workshop/aws for Spring Boot, Ktor, S3, SQS, and DynamoDB.
A 3D illustration of small robotic operators comparing AWS service blocks on a scale between a green Spring workbench and a blue Kotlin workbench
Bluetape4k AWS Part 4: Comparing with Spring Cloud AWS A comparison of Spring Cloud AWS and bluetape4k-aws by ownership boundary rather than feature count.
Small robotic operators assembling Spring Boot 4 adapters, Ktor 3 adapters, shared AWS contracts, and LocalStack devices on a Kotlin workbench
Bluetape4k AWS Part 3: Spring Boot and Ktor Integration How Spring Boot 4 auto-configuration and Ktor 3 plugins sit on the same AWS helper layer.
Small robotic operators wiring aws-java, aws-kotlin, CRT engine, and S3 TransferManager blocks on a Kotlin workbench
Bluetape4k AWS Part 2: Core Modules and Service Coverage Java SDK v2 approach, Kotlin SDK approach, CRT-backed S3 TransferManager, and the compileOnly dependency model.
Small robotic operators wiring AWS service blocks and local test equipment on a Kotlin workbench
Bluetape4k AWS Part 1: Repository Overview and Mental Model The mental model for AWS SDK wrappers, coroutine helpers, Spring Boot 4, Ktor 3, and LocalStack/Floci tests.
Robotic builders arranging Redis, etcd, SQL, Kubernetes, and observability props on a leader election storage workbench
Bluetape4k Leader Part 5: Backends, Operations, and Benchmarks Choose the leader election backend by the systems you already operate, lease storage, observability, and API fit.
Small robotic builders configuring Spring Boot annotation cards and a Ktor server console while watching a leader election management panel on a 3D workbench
Bluetape4k Leader Part 4: Spring Boot and Ktor Integration Moving direct runIfLeader calls into Spring AOP and Ktor scheduler/management boundaries.
Robotic service nodes comparing multi-leader semaphore slots and strategic candidate scoring on a 3D workbench
Bluetape4k Leader Part 3: Multi-leader and Strategic Election When one leader is too few: group slots and candidate strategies for controlled execution.
Robotic election judges comparing candidate execution models on a Kotlin JVM workbench
Bluetape4k Leader Part 2: Core APIs and Execution Models Four execution models for one job: blocking, CompletableFuture, coroutine, and virtual thread.
Robotic operators coordinating one elected leader across several service nodes on a workbench
Bluetape4k Leader Part 1: Repository Overview and Mental Model How scheduled jobs, migrations, pollers, and cache warmers avoid running on every replica.
Small robotic builders connecting service, cache, metrics, and data pipes on a production example workbench
Bluetape4k Exposed Part 5: Production Examples with Cache and Multi-Tenancy Add performance and production behavior on top of Exposed repositories and transaction boundaries.
Small robotic builders handling data modules, instrumentation panels, and analytics devices on a lab-style workbench
Bluetape4k Exposed Part 4: JSON, Encryption, and Dialects Keep database-specific details out of domain code by isolating them in typed columns and dialect modules.
Small robotic builders connecting R2DBC pipes and PostgreSQL blocks on an Exposed R2DBC workshop bench
Bluetape4k Exposed Part 3: R2DBC, Coroutines, and Virtual Threads R2DBC fits streaming. JDBC with Virtual Threads keeps the familiar driver path. Choose with numbers.
Small robotic builders handling PostgreSQL, SQL DSL, and repository blocks on an Exposed workshop bench
Bluetape4k Exposed Part 2: JDBC Repositories and SQL DSL Do not hide SQL DSL; remove only the repeated repository boundary code.
Small robotic builders assembling Exposed JDBC and R2DBC blocks on a blue blueprint workbench
Bluetape4k Exposed Part 1: Why Exposed? Choosing a production Exposed extension path after R2DBC, Vert.x, Virtual Threads, and Exposed DSL.
Small robotic builders assemble Spring Boot 4 and Ktor 3 application boundaries on top of the shared foundation
Bluetape4k Projects Part 6: Spring Boot 4 and Ktor How Spring Boot 4 and Ktor 3 shape coroutine, data, Redis, observability, and testing boundaries.
Small robotic builders connect utility modules, examples, workshops, and benchmark notes into a service adoption path
Bluetape4k Projects Part 5: utilities and adoption path Choose small utility modules only when needed, then validate the path with examples and benchmark notes.
Small robotic builders connect service code with database, Redis, messaging, and observability modules
Bluetape4k Projects Part 4: data and infrastructure A practical map for DB, Redis, messaging, observability, and resilience boundaries in Kotlin services.
Small robotic builders connect byte streams between I/O, Okio, JSON, Protobuf, HTTP, gRPC, and Tink blocks
Bluetape4k Projects Part 3: the path bytes take I/O boundaries where files, buffers, serializers, HTTP/RPC clients, and encryption meet.
Small robotic builders assembling Core, Coroutines, Logging, and Tests blocks on a Kotlin JVM foundation
Bluetape4k Projects Part 2: Core, Coroutines, Logging, Tests The core, coroutine, logging, and testing foundation shared by service requests and test fixtures.
Small robotic builders assembling Kotlin JVM backend module blocks around a shared foundation platform
Bluetape4k Projects Part 1: The Shared Kotlin/JVM Foundation Why core, coroutines, I/O, data, infra, Spring Boot, Ktor, testing, and the BOM live together.
Spring Boot cache workshop workbench with robot workers, service blocks, Redis, local cache, and benchmark gauges
Bluetape4k Cache Part 4: Getting a Feel for Cache Strategies with Workshop Examples Comparing Caffeine, Redis, Near Cache, and resilience through working examples.
Exposed repository cache strategy workbench with robot workers and cache pipelines
Bluetape4k Cache Part 3: Building Caching Strategies with Near Cache and Exposed Read-through, write-through, and write-behind sound similar. Their tradeoffs are not.
Near cache workbench with robot workers connecting local and remote cache blocks
Bluetape4k Cache Part 2: Near Cache as a Practical Way to Reduce Redis Round Trips A remote cache is shared, but far away. Near Cache keeps hot reads close to the JVM.
Bluetape4k cache module workbench with robot workers assembling cache blocks
Bluetape4k Cache Part 1: Why the Cache Module Looks This Way Why local caches, JCache, suspend APIs, memoizers, and NearCache live in the same toolbox.
Editorial illustration of one SPI connecting Java 21 and Java 25 runtime implementations
Virtual Threads Part 4: Hiding Java 21 and Java 25 Behind One API Hide Java 21/25 differences inside runtime providers and keep application code on one Virtual Threads API.
Editorial illustration of JDBC work running on virtual threads beside reactive database work
Virtual Threads Part 3: Why JDBC Beat R2DBC More Often Than Expected R2DBC looked like the obvious winner, but the benchmark results disagreed. A practical look at JDBC + Virtual Threads.
Editorial illustration of practical virtual thread rules becoming checklist items
Virtual Threads Part 2: Rules That Matter in Practice Turning on Virtual Threads is not the finish line. Pooling, semaphores, context, and locks decide whether they work well.
Editorial illustration of many lightweight execution paths managed under explicit limits
Virtual Threads Part 1: Cheap Threads, Not Magic Threads Blocking code gets a second life, but only when timeout, cleanup, and resource limits come along with it.
Editorial illustration of bug reports turning into checks and guardrails
Embarrassing Bugs That Made Better Guards A candid write-up of five bluetape4k-projects fixes: null becoming zero, stale tests, cleanup timeouts, swallowed cancellation, and lost interrupt status.
Editorial illustration of HTTP clients running through the same benchmark harness
When Ktor CIO Made HTTP Benchmarks Weird How slow Ktor CIO numbers led to a fairer benchmark, a Vert.x pool fix, and workload-based HTTP client guidance.
Editorial illustration of a CSV writer pipeline sending rows into a buffered byte sink
When the CSV Writer Took Off Its Ankle Weights The Okio CSV writer follow-up: Flow rows, UTF-8 sinks, behavior locks, and a 3.25x large export win.
Editorial illustration of a CSV parser reading byte segments without unnecessary copies
Reducing CSV Parser Allocations with Okio Segments A benchmark-backed account of the CSV parser optimization, from Reader parsing to Okio UnsafeCursor segment scanning.
Editorial illustration of an image processing pipeline moving from JVM pixels to native acceleration
From Pure JVM to libvips: Benchmarking Image Processing in bluetape4k Benchmark results for scrimage vs libvips, Java 21 JNI host limits, Java 25 FFM measurements, and a workshop derivative pipeline example.
Editorial illustration of backend services navigating relationship-heavy data
When Should a Backend Service Adopt a Graph Database? Benchmark-backed notes on GraphDB adoption criteria, PostgreSQL traversal baselines, AGE, Neo4j, Memgraph, and the use cases where graph storage is worth the cost.
Bluetape4k backend ecosystem shown as connected Kotlin/JVM building blocks
Bluetape4k Ecosystem at a Glance A layer-by-layer map of Bluetape4k across Spring Boot 4, Ktor 3, domain capabilities, data, infrastructure, and foundation modules.
Manager AI and worker AI agents maintaining skills, qmd, memory, and verification gates together
Turning AI Collaboration Into Infrastructure How AGENTS.md, bluetape4k skills, qmd, memory, and hooks help Codex and Claude read and verify work against the same standards.
AI-assisted Kotlin library ecosystem development
Growing a Large Kotlin Library Ecosystem with AI in Three Months How Claude Code and Codex helped with automation, documentation, tests, research, examples, cross-repository consistency, and workflow discipline.