Published onApril 14, 2026Sending GRIT Room Events with LiveKit SendDataA record of using LiveKit SendData in the GRIT real-time video study platform to send emoji reactions and Pomodoro timer state inside a room.Spring-BootLiveKitWebRTCRealtime
Published onApril 9, 2026Understanding Exception Handling in Spring Security FiltersA record of tracing why JWT authentication filter errors in GRIT were returned as Tomcat 500 errors instead of the common API error response, and how I handled exceptions based on where they occurred.FeaturedSpring-SecurityJWTSpring-BootBackend
Published onFebruary 19, 2026GRIT Monitoring Setup: Prometheus + Loki + Grafana + Spring ActuatorA record of preparing basic monitoring for GRIT by collecting and checking metrics and logs with Spring Actuator, Prometheus, Loki, and Grafana.Spring-BootPrometheusLokiGrafanaMonitoring
Published onOctober 14, 2025Propagating Chat Messages in a Multi-Instance Environment: Redis Pub/SubA record of using Redis Pub/Sub in UniSchedule to solve a problem where chat messages were not delivered to some users in a multi-instance environment.FeaturedSpring-BootRedisPub/SubAWSArchitecture