RSSAmplifier

Blog

Shayan Shafiee Moghadam

Recent content on Shayan Shafiee Moghadam

shayansm2.github.ioRSS feed ↗14 posts

Latest posts

Reading List

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…

Building 3ync: A Local-First, S3-Compatible Sync Engine

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…

A Simple Local-First Syncing Solution for Personal Notes

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…

My Thoughts on LLMs and Building AI Products

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…

Short-lived password: a self interview

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…

Database Index Internals

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…

Side Projects

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…

Resume

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.…

LLM Transformers as ETL Transformers

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…

Temporal VS DBOS

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…

Database Scaling: A Self-Interview

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…

Blue-Collar Tech Worker

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…

My Personal Journey into Learning Kubernetes

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…

Dagger CI

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…