A curated list of talks, blogs, courses, and books I’ve found genuinely insightful and want to share. Blogs and Talks Mitigating Geopolitical Risks with Local-First Software and atproto Talk Compiling Workflows into Databases: the Architecture That Shouldn’t Work (But Does) Talk Conditional Writes Without a Compare-and-Swap Store in SeaweedFS Blog Software in the era of AI Talk…
The Problem and Old Solutions I previously came up with a simple local-first solution to sync my Obsidian files between my desktop and phone, which I wrote about in this blog . The way it worked was like this: The local storage on my devices (desktop or mobile) was periodically syncing files with the cloud. This cloud storage could be any object storage, or out-of-the-box solutions like Google…
I love working with Obsidian and Logseq. I use Obsidian mostly for note-taking and writing long-lived documents, and I enjoy its features like Canvas and additional plugins such as Excalidraw, which is my favorite. I also use Logseq for task management and writing short-lived logs. One of their great benefits is that your files are stored locally, unlike Notion, which is actually why I switched…
IIn the last few months, I’ve been working through a free, open-source course called LLM Zoomcamp , which teaches how to build Retrieval-Augmented Generation (RAG) systems and follow best practices. While there were additional materials about agentic RAGs and function calling (agents) — which were quite fun — the main direction of the course was toward building and understanding simple RAGs : how…
At my workplace, I was given a task: use short-lived kubeconfig for accessing Kubernetes. This was already implemented in other services in different ways, and I was asked to simply choose one of them and copy-paste it into the service I was working on. That was my plan — but when I read the code, lots of questions came to my mind about the decisions developers had made for implementing the…
I recently read the 3rd chapter of the Designing Data-Intensive Applications book, and this blog aims to share my take on the internals of database indexes and how they have been designed. If you haven’t read this book—especially the 3rd chapter—I fully encourage you to check it out, as it is an amazing read. However, you can also go through this blog, where I’ve prepared some diagrams to…
These are projects I’ve built in my free time to explore new technologies, solve interesting problems, and push my skills beyond my full-time work. 3ync A Local-First S3-Compatible Object Storage Synchronizer A tool that keeps S3-compatible object storage replicas synchronized using a local-first architecture. Implements efficient object synchronization, conflict handling, and metadata tracking…
WORK EXPERIENCE Senior Software Engineer Hamravesh Cloud Aug 2024 - Present Tehran - Iran . Full-time Developed integration tests in Go for SeaweedFS S3 APIs based on AWS S3 compatibility documentation, identified and fixed invariant behavior issues. Integrated a FastAPI object storage backend with SeaweedFS, enabling cost-effective HDD-based storage while maintaining performance and durability.…
In a world full of AI hype—from chatbots that write code to flashy demo applications—I always felt that most tools were geared toward niche use cases like building QA bots or RAG agents. What really got me excited, however, was discovering a game-changing application for production-scale, non-AI companies: using LLMs to revolutionize ETL processes. Traditionally, both the data source and the…
I recently read this article about a lightweight durable execution solution called DBOS. Meanwhile, I was working heavily with Temporal, a well-known open-source tool for durable executions. Technically, both serve the same purpose, but with major differences: Temporal is heavyweight. To run it, you need a Temporal cluster, a database connected to the cluster, one or more Temporal workers, the…
In my previous job, I conducted multiple technical interviews, and one of the key questions we asked candidates was: “If you have a database and a query takes longer than required to run, what would you do?” After discussing their response, we would follow up with: “Now, what if the load on your database increases? What would you do now?” This question helped assess whether…
I recently read this text on social media, and here are my thoughts. I both agree and disagree with it. But first, let’s align on the terminology. Based on the definitions in this text, a “real” software engineer is someone who builds tools and understands how they work. On the other hand, someone who reads the documentation of tools and connects them together is called a…
For the last three months, I’ve been diving deep into Kubernetes as part of my new job, and I decided to write this blog to share my journey in learning Kubernetes. If you work in a DevOps role or your company operates on Kubernetes, understanding it inside and out is essential. However, as a software engineer, I also encourage every other software engineer to learn Kubernetes. Here’s why: The…
I was recently introduced to dagger.io by my tech lead. Dagger is a CI tool created by Solomon Hykes, who is also the founder of Docker. I listened to his interview on the kubernetes podcast and several aspects about the motivation behind Dagger caught my attention. The most interesting aspect of Dagger is its objective to provide a separation of concerns. These days, the CI code and configuration…