Articles
Articles
Practical notes on backend architecture, AI engineering, Ruby, Spring Boot, deployment, and the small decisions that make software easier to run.
Building SummarAIzeIT
A periodical technical build log about building a Rails AI product: data models, source ingestion, YouTube transcripts, fallback design, rate limits, scheduling, newsletters, and operations.
Designing source ingestion without one giant service object
How SummarAIzeIT handles pages, RSS feeds, YouTube videos, and YouTube channels through small strategy objects.
The data model behind SummarAIzeIT
How Projects, Sources, Snapshots, Posts, Newsletters, FetchRuns, and cached YouTube summaries shape the product.
Building SummarAIzeIT: from information overload to a daily AI digest
The product problem behind SummarAIzeIT and the first architecture boundaries that kept it from becoming a scrape-and-summarize script.
Deploying personal and hobby apps to DigitalOcean with GitHub Actions
A simple and inexpensive CI/CD setup for deploying a Rails app to DigitalOcean using GitHub Actions and Docker.
Scheduling time slots with capacity limits in Ruby
In scheduling systems, it’s common to manage time slots that have both capacity limits (how many events can fit into a single slot) and exclusions (times that are already reserved or unavailable).
Dynamically adding support for identity providers in Spring Boot applications
In my previous article I’ve explained how it is possible to work with multiple authentication providers and managers in Spring Boot in order to resolve the information and interact with different identity providers. W...
Working with multiple authentication providers and managers in Spring Boot
In modern web applications, particularly within microservice architectures, it’s common to have external services and identity providers interacting with your application or service. Did you know that you can adjust y...