personal-growth
SBI feedback: the "great job, but…" the teammate cannot replay
Generic praise plus a “but” leaves no observable act. Write one SBI (situation, behavior, impact) and ask the teammate to restate the request.
System online
// Knowledge.index — 知識庫
Technical articles, executable examples, and decisions without hype. Written for people who ship software.
published articles
EN · OPEN ACCESS
// Latest.entries — 最新記事
personal-growth
Generic praise plus a “but” leaves no observable act. Write one SBI (situation, behavior, impact) and ask the teammate to restate the request.
career
Cycle feedback says \"be more senior\" with no example. Leave the 1:1 with three observable criteria, a team example, and a 90-day check.
personal-growth
The agent wrote the diff and standup asks what changed. Close the diff and narrate intent, area, risk, and verification in 60 seconds without reopening git.
java
JDK 25: HashMap.get(10.00) is null after put(10.0). equals is false, compareTo is 0. TreeMap hits. long cents or setScale(2) recover the key.
java
JDK 25: live-list offset/subList duplicates 2 and skips 4 after an insert at index 0. Keyset from the last id keeps [3,4]. An immutable snapshot still works.
java
JDK 25 and Failsafe 3.6.0: mvn test exits 0 with no failsafe-reports. If the module has *IT.java, the agent gate is mvn verify, not mvn test.
java
Spring Boot 4.1.1, JDK 25: matchIfMissing=false plus an absent key starts the app green with no bean. ApplicationContextRunner proves it; two stable fixes.
java
On Spring Boot 4.1.1 with JDK 25, timeout: 10 on a Duration binds as 10 ms and the app starts. Compare 10s, PT10S, @DurationUnit and what fails to bind.
java
Moving average of 3 payments with Gatherers.windowSliding on JDK 25, no preview, vs collect+subList. JUnit 6.1.3 tests show where they differ.
aws
An identity Allow for s3:GetObject does not win if the bucket policy has Deny on the same ARN. Three local JSON files and the User Guide, no account.
java
JaCoCo 0.8.15 / JDK 25: jacoco:check LINE 0.80 passes at 85.7% while the invalid-charge if never runs. BRANCH 0.80 fails at 0.50 on the same .exec.
java
Boot 4.1.1/Jackson 3.1.5: an extra JSON field is dropped and the API returns 200. fail-on-unknown-properties becomes 400; a leftover old name is also unknown.
java
RestClient 7.0.9 retrieve() on 422 throws UnprocessableContent. The JSON stays on the exception; exchange() and onStatus read it without Testcontainers.
java
The agent goes green by loosening the assert or adding @Disabled. A local gate reads the src/test diff and Surefire skipped, and passes only the real fix.
java
Without @Valid on the nested field, inner @NotBlank does not run at bind and Boot 4.1.1 starts. With @Valid, SpringApplication.run fails.
java
With Jupiter parallel on, two tests sharing a static Path fail. Reproduce the race and fix it with @ResourceLock, SAME_THREAD or @TempDir.
aws
A missing key under IpAddress is a mismatch, so the Allow grants nothing. With IfExists the condition is true. Three IAM policies show where Allow stays open.
java
Automatic rollback in a Spring Boot 4.1 test let a duplicate SKU pass that the commit rejects with 409. Where rollback isolates and when to clean up explicitly.
ai-agents
Two agents on the same line conflicted and one decision was dropped; disjoint files merged clean at nearly 2× tokens. Where fan-out pays off.
java
JEP 491 freed synchronized from pinning; native calls still pin the carrier. JDK 21 vs 25 measured, JFR checks, and when the ReentrantLock rule still holds.
java
A System.nanoTime loop measures warmup, dead code and the clock. Build a JMH project on Java 25 and read Score and Error before claiming a win.
aws
Parliament 1.6.4 catches iam:PassRole + lambda:CreateFunction/InvokeFunction offline and fails CI before deploy, no AWS account needed.
java
LinkedBlockingQueue with no capacity accepts everything until the GC hits a wall. ArrayBlockingQueue, AbortPolicy, and CallerRunsPolicy tested on a real JVM.
java
The agent writes 'tests ok' in chat, but CI breaks because Maven never ran. A local gate only accepts a recent Surefire TEST-*.xml with failures=0 and errors=0.
java
A Maven ArchUnit rule catches a domain class depending on a persistence adapter that slipped through code review, using Java 25 and JUnit 6, no Spring.
java
JEP 513 in Java 25 lets you validate and normalize subclass arguments before super() — no static helper. Real compile, the exact javac error, JUnit 5 tests.
java
Configure Resilience4j Bulkhead per dependency on Boot 4.1 and prove with an in-process WireMock test that a slow payment gateway never starves inventory calls.
aws
cfn-guard 3.2.1 runs locally, no AWS credentials: org-wide IAM and S3 rules that fail the build before deploy, with real exit codes and a CI gate.
java
In-memory rate limiting with Resilience4j on Spring Boot 4.1: RateLimiterConfig, a deterministic concurrency test, and a 429 with a real Retry-After.
aws
How to use cdk synth and aws-cdk-lib/assertions to lock down a CDK stack's properties in CI, before any real deploy hits AWS.
java
How jqwik 1.10.1 generates random inputs, catches an overflow a fixed example misses, and shrinks the failure to its minimal case, on plain Java 25.
java
After the service split: coordinate order, payment, and inventory without 2PC, pick choreography or orchestration, and prove compensation actually ran.
ai-agents
Reordering tools, a stray timestamp, or misplaced project memory silently breaks the cache. Measure it, lock it in CI, and alert before the invoice.
java
Boolean flags accept impossible combinations. Swap them for a sealed interface with records and an exhaustive switch: javac blocks invalid states at build time.
ai-agents
Isolate coding-agent tool calls at the filesystem and network layer with bubblewrap: a reproducible escape test, kernel evidence, and a pre-PR checklist.
java
Java 25 finalizes Scoped Values: reproduce a ThreadLocal pool leak, use the real API (no bind), and wire StructuredTaskScope while it is still preview.
java
Configure PIT with Maven, investigate surviving mutants, and build a gradual CI gate with Java 25 and JUnit 6.
ai-agents
Track latency, errors, and payload size per tool call in events.jsonl, query it with DuckDB, and enforce a separate CI error gate.
aws
Calculate when a VPC Interface Endpoint beats NAT Gateway traffic costs, then configure SQS, S3, and DynamoDB with CDK and restrictive policies.
ai-agents
Version prompts and tools, record their hashes in usage.json, and compare coding agent revisions against stable golden fixtures in CI.
java
Configure and verify HTTP and worker drain in Spring Boot 4.1.1 with SIGTERM, SmartLifecycle, and Kubernetes without cutting in-flight work.
aws
Replace human access keys with temporary cross-account sessions using IAM Identity Center, Permission Sets, and AWS CLI v2.
ai-agents
Build task-specific context for coding agents with byte and token budgets, auditable discards, and fail-closed handling for required files.
aws
Compare cost, operations, and IAM in ECS Fargate and EKS Auto Mode to decide where to run a Spring Boot application on AWS.
ai-agents
Reject tools/call on the MCP server before side effects, with versioned policy, auditing, and crash-safe idempotency. Spec 2026-07-28 + Python SDK 2.1.1.
aws
Replace static GitHub Actions keys with OIDC, a restricted IAM role, a permissions boundary, and verifiable failure tests.
ai-agents
Set a monthly cap, stop long tasks, and bring tokens and cost per PR into CI without exposing prompts or waiting for the bill.
aws
Configure CloudFront caching, invalidation, and OAC with private S3, predictable headers, and verifiable post-deployment commands.
java
See why an environment variable, YAML, or CLI value won in Spring Boot 4.1, and find the value's origin with a minimal application.
java
Use AssertJ with ProblemDetail and MockMvcTester to pinpoint mismatched fields in Spring Boot 4.1 tests without adding redundant dependencies.
java
Implement Idempotency-Key and outbox in one JDBC transaction with Spring Boot 4.1, Postgres, and a real Testcontainers test.
career
Trade framework chasing for verifiable seniority in systems, people, and communication, with a 30-minute diagnosis.
java
Organize per-request fan-out with StructuredTaskScope in Java 25, including cancellation, timeouts, tests, and a comparison with CompletableFuture.
ai-agents
Configure AGENTS.md, CODEOWNERS, CI, and auditing before allowing a coding agent to open pull requests in your repository.
java
Package Spring Boot 4.1.1 with Java 25 on UBI 9, pin the image, configure probes, and validate deployment under the restricted-v3 SCC.
java
Configure Spring Boot Actuator endpoints, health checks, readiness, security, and metrics without exposing sensitive production data.
architecture
Use domain rules, transactions, and data ownership to define boundaries before extracting services from a Spring monolith.
java
Create consumer-provider contracts with Pact, verify them in Spring Boot, and block incompatible deployments through Pact Broker.
java
Learn when parallel and runOn help in Reactor, why subscribeOn does not split items, and how to measure CPU, queues, and latency in Spring Boot.
personal-growth
Learn to tell visual fatigue from familiarity and try a short routine for reviewing your own code with more attention.
java
See when virtual threads help Spring MVC APIs with blocking I/O, with a benchmark, pinning diagnostics, and the path from Java 21 to 25.