Year: 2025
-
Architecture for my Generative AI Application

In this article, I explore using AI image generation models accessed via platforms like Hugging Face but faces challenges with high GPU costs and inefficient resource management. The solution involves a web application and a backend service that auto-scales GPU usage via asynchronous messaging, ensuring resources are only used when necessary.
-
Advantages and Disadvantages of Alembic

In this article, I compare Alembic to other database migration tools like Flyway and Liquibase. Alembic excels in handling parallel migrations and enforcing rollback actions but lacks checksum validation, posing risks for schema consistency. While not perfect, it offers advantages, particularly for team development, using SQLAlchemy for ORM migrations.
-
Mastering Docker Compose for Local Development and Testing

This article emphasizes the importance of creating a local development environment that closely resembles production using Docker Compose. It covers setting up microservices, databases, and caching systems, while discussing necessary configurations for effective unit testing. The ultimate goal is to minimize discrepancies and enhance software development efficiency.
-
Multi-Environment Configuration in Spring Boot

In this article, I talk about the importance of proper configuration in Spring Boot applications across multiple environments. By using Maven profiles, environment variables, and CI/CD pipelines, developers can maintain clean and flexible configurations. The goal is to ensure a seamless application experience whether running locally or in production, without the risk of misconfigurations.
-
React Performance Tips and Tools

In this article, I discuss the importance of optimizing React app performance, placing the responsibility on developers rather than blaming users. I highlights common issues, such as unnecessary re-renders, inefficient state management, and large bundle sizes. Solutions include memoization, flattening component trees, state centralization, code splitting, and using appropriate tools for diagnosis and improvement.
-
I’ve Created a RAG in Two Days

In the AI era, web developers must integrate AI into projects to stay relevant. I’ve built a Retrieval-Augmented Generation (RAG) system in two days, combining a knowledge database with an LLM. Key components included data chunking and retrieval. The project showcased AI’s ability to provide specific responses, using creative datasets for testing.
-
Forms in React, with or without React Forms

Forms in web development are essential for user interaction, yet often frustrating. This content compares traditional HTML forms with React Form Components, discussing their pros and cons. Basic forms are simplistic but limited in validation, while React libraries enhance user experience with advanced features. Choose based on form complexity and validation needs.
-
Stop & Start GCP SQL Instances at Nights

One of the great things about Google Cloud SQL instances is that they let me shut them down at night. The data sticks around (hopefully), but I can’t access it, which is exactly what I want. Since my backend servers are already tucked in for the night (explained in another article), keeping the database running…
-
SQLAlchemy and JSON values

Storing JSON in a relational database? Sounds like a contradiction, but sometimes, it’s the best solution. SQLAlchemy makes it easy to use a JSON column in Postgres—until you try to update a single value inside it. Turns out, SQLAlchemy doesn’t track those changes by default, leading to silent failures. The fix? Marking the column as…
-
GCP Cloud Functions with SQL Access

I’ve created a Google Cloud Function for a weekly task to streamline backend dependencies but faced complications with database connectivity. GCP requires a proxy, which undermines the initial goal of simplicity. Ultimately, I’ve moving all back into an existing backend to save extra fees from having a proxy up and running.
