Week 1 (July 2026)
This page contains my work log for July 1–7, 2026.
Tasks
- Create LLM Inference Blog Post.
- GitHub — Repository Migration — Dataproc Bootstrap — DA-1343
- Airflow — Modify the outbound SQL query — DATA-14
- Superset — Add a user with public role — DATA-10
- Dbt — Create Fact tables for Drivers — DATA-12
- Change Data Capture (CDC) service — Rightsizing its resources — DATA-18
- Airflow — Revive the DAG to populate data into the breakage data mart table — DATA-17
- Airflow — Create a DAG to populate data into the inbound-store Google Sheet — DATA-16
- GitHub — Repository Migration — Spark BigQuery — DA-1345
- Zig — Exercise — ziglings/exercises
- Debezium Examples — Cache Invalidation — debezium-examples#423
- Apache Doris — Quick Start
- GitHub — Repository Migration — Neurocell & Neurocell Spring — DA-1347
- Debezium — Move
TOPIC_PREFIXfield toCONNECTORgroup — debezium#7421
Wednesday, July 1, 2026
LLM Inference: Create a Blog Post
I intended to create a blog post for the LLM Inference that I have built. You can see at: https://ilyasahsan.xyz/chat-server
The blog post still has a long way to go before it's finished. Find the draft below:
I usually share the blog post on LinkedIn so that everyone can find out about the live demo, blog, and this website.
GitHub: Repository Migration — Dataproc Bootstrap
The Dataproc Bootstrap repository and it's CI/CD pipeline has been migrated from GitLab to GitHub. Find the details below:
- GitLab: https://gitlab.com/allofresh/data/dataproc-bootstrap
- GitHub: https://github.com/allofresh/dataproc-bootstrap
I have done this migration by cloning the repository to GitHub, and enabling the CI/CD pipeline by re-creating workflows in GitHub Actions.
Airflow: Modify the outbound SQL query
The operational experience team asked me to modify the SQL query for the outbound process so that their Gsheet has correct data. To address this, I modified the file related to the Airflow DAG. Find the details below:
- pull request: airflow-beta-dags#42
After the pull request was merged, I cleared the DAG task for today. As a result, they had correct data by this afternoon.
Superset: Add a user with public role
A new employee needed access to Superset so that she could monitor the performance of their product. I addressed this request by creating a new user in the Superset users page.
The Superset service has Google sign-in enabled, so she can log in with her employee Google account. Since this service is public-facing, we also added GCP Identity-Aware Proxy (IAP) as an extra security layer, restricting access to our employee email domain only.
As a result, she was able to log in using her employee Google account.
Dbt: Create Fact tables for Drivers
The data scientist team asked me to create additional fact tables for drivers. They provided the SQL queries, and my responsibility was to apply them in the dbt project. The changes are available in the pull request below:
- pull request: dbt-allofresh#42
As a result, the additional fact tables for drivers are now available in BigQuery.
Thursday, July 2, 2026
LLM Inference: Create a Blog Post
I continued writing the blog post on LLM inference. I finished several chapters and fixed their grammar.
Draft: https://ilyasahsan.xyz/blog/2026-06-self-hosted-llm-inference
As a result, I only need to write the section on populating data into the vector database, plus the conclusion.
CDC Service: Rightsizing its resources
The infrastructure team asked me to rightsize the CDC service's resources. They were concerned about the memory request and limit, since utilization showed they should be lower. So I needed to fix this to avoid wasting resources.
To address this, I updated the Kubernetes repository to reduce the resources. Details below:
resources:
requests:
cpu: "50m"
memory: "250Mi" # before: 1000Mi
limits:
cpu: "2000m"
memory: "500Mi" # before: 6000Mi
Merge request: kubernetes#8864
As a result, the CDC service is now using less memory than before.
Airflow: Revive the breakage DAG
The Opex team asked the data team to revive the DAG that populates data into the breakage data mart table. To address this, I not only re-enabled the DAG but also updated the related Python script, since the Google Sheet contents had changed.
Pull request: airflow#45
As a result, the breakage DAG is now enabled in Airflow and successfully populates data into the destination table.
Airflow: Create the inbound-store DAG
The Opex team asked me to create an Airflow DAG to populate data into their Google Sheet. To address this, I asked them for the SQL query, then created a DAG along with a SQL file containing that query.
Pull request: airflow#43
As a result, the new Airflow DAG was created, and their Google Sheet is now being populated.
Friday, July 3, 2026
GitHub: Repository Migration — Spark BigQuery
The Spark BigQuery repository and it's CI/CD pipeline has been migrated from GitLab to GitHub. Find the details below:
- GitLab: https://gitlab.com/allofresh/data/spark-bigquery
- GitHub: https://github.com/allofresh/spark-bigquery
I have done this migration by cloning the repository to GitHub, and enabling the CI/CD pipeline by re-creating workflows in GitHub Actions.
LLM Inference: Create a Blog Post
I finished the blog post for self-hosted llm inference. Also, I've posted it on LinkedIn for a better impression.
-
blog post: https://ilyasahsan.xyz/blog/2026-06-self-hosted-llm-inference
-
live demo: https://ilyasahsan.xyz/chat-server
I wonder how to share this to the right audience so that I can get more feedback.
However, I'm very happy because I learned a thing that makes me keep relevant in the Data Engineering world.
Saturday, July 4, 2026
I am spending most of my day at AEON Mall such as brings my son to the playground, accompanied my wife to meet her friends, and meet a friend after a long time. As a result, It was a long day, and I am very tired. However, one thing that made me happy was that I bought a high-quality grill pan at a low price.
Zig: Exercise
I learned a new language named Zig, which I knew it first from Mitchell Hashimoto blog. And, I interested with the creator of Zig (Andrew Kelley), especially when he was interviewed by JetBrains. Therefore, I learned about it from the exercise repository created by Chris Boesch.
Here are the result:
Exercise #1. Hello world
const std = @import("std");
pub fn main() void {
std.debug.print("Hello world!\n", .{});
}
Exercise #1. Std
const std = @import("std");
pub fn main() void {
std.debug.print("Standard Library.\n", .{});
}
Exercise #1. Assignment
const std = @import("std");
pub fn main() void {
var n: u8 = 50;
n = n + 5;
const pi: u32 = 314159;
const negative_eleven: i8 = -11;
std.debug.print("{} {} {}\n", .{ n, pi, negative_eleven });
}
Monday, July 6, 2026
Debezium Examples: Cache Invalidation
I am an assignee of the issue #1809 for the Debezium Example repository. The task is that I need to standardize the java version and adopt Debezium BOM for dependencies management for all modules. Therefore, I created the below pull request as a part to address the issue.
- pull request: https://github.com/debezium/debezium-examples/pull/423
The CI/CD pipeline has passed, and it's still waiting for review from the Debezium team.
lesson learned
The Debezium BOM use JUnit 6, but it's only pins the two umbrella artifacts (junit-jupiter and junit-platform-launcher).
However, this modules need to run the test with junit-jupiter-api/-engine/-params, junit-platform-engine/-commons.
There are two ways to fix this issue:
- Pin the
Quarkus BOMin thecache-invalidationmodule. - Pin the
JUnit 6 BOMthe the parent module.
To address this, I pinned the Quarkus BOM in the cache-invalidation module so that, it can run the test with the JUnit 5.
By importing quarkus-bom directly in this module, its JUnit 5 versions take priority over the parent's settings.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-bom</artifactId>
<version>${version.quarkus}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
As a result, the CI Pipeline for this module passed.
Tuesday, July 7, 2026
Apache Doris: Quick Start
I found out that a lot of issues where we need to support parsing Doris SQL in the Apache ShardingSphere. To address this, I need to enable Doris in my laptop for validate the SQL Query.
I enabled Doris with the following command:
$ wget https://doris.apache.org/files/start-doris.sh
$ chmod 755 start-doris.sh
$ bash start-doris.sh -v 4.1.2
Connect to the cluster with the MySQL client. Details below:
$ mysql -uroot -P9030 -h127.0.0.1 -e 'SELECT `host`, `join`, `alive` FROM frontends()'
#+-------------+------+-------+
#| host | join | alive |
#+-------------+------+-------+
#| 172.20.80.2 | true | true |
#+-------------+------+-------+
As a result, Doris has enabled in my laptop, and I can start resolving the parser issues.
GitHub: Repository Migration — Neurocells
I migrated the following repositories from GitLab to GitHub along with the CI/CD pipeline. Details below:
| Name | GitLab | GitHub |
|---|---|---|
| Neurocell | https://gitlab.com/allofresh/data/neurocell | https://github.com/allofresh/neurocell |
| Neurocell Spring | https://gitlab.com/allofresh/data/neurocell-spring | https://github.com/allofresh/neurocell-spring |
note: wrap the table so that it's easier to read in the mobile browser.
Debezium: Move TOPIC_PREFIX field to CONNECTOR group
The upstream pull request has been merged. Therefore, I can continue my pull request that has been postponed for a long time.
pull request: https://github.com/debezium/debezium/pull/7421