<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on Vahid Rafiei</title><link>https://vahid-r.com/posts/</link><description>Recent content in Posts on Vahid Rafiei</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Wed, 24 Jun 2026 13:32:05 +0100</lastBuildDate><atom:link href="https://vahid-r.com/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Scanning Helm Charts at Scale with helmsniff</title><link>https://vahid-r.com/posts/helmsniff-tutorial/</link><pubDate>Wed, 24 Jun 2026 13:32:05 +0100</pubDate><guid>https://vahid-r.com/posts/helmsniff-tutorial/</guid><description>A practical guide for developers and security researchers.
Why I Built This Kubernetes is everywhere now. Most teams do not write raw Kubernetes YAML by hand. They use Helm charts. A Helm chart is a template. You give it some values, and Helm turns the template into real Kubernetes manifests.
This is great for productivity. But it is risky for security.
A single chart can create a Deployment, a Service, a Secret, a ConfigMap, and more.</description></item><item><title>Java Deserialization Attacks As I See Them</title><link>https://vahid-r.com/posts/java-deserialization-attack/</link><pubDate>Wed, 27 May 2026 11:31:59 +0100</pubDate><guid>https://vahid-r.com/posts/java-deserialization-attack/</guid><description>What is Serialization? Serialization means turning an object from memory into a flat format. The flat format can be bytes, JSON, or XML. After you serialize an object, you can send it over the network, save it to disk, or store it in a database.
Deserialization is the opposite. It takes the flat format and builds the object back into memory.
People use serialization for many things, not only for the network:</description></item><item><title>Flag library in Golang</title><link>https://vahid-r.com/posts/flag-library-in-golang/</link><pubDate>Wed, 17 Dec 2025 17:17:07 +0100</pubDate><guid>https://vahid-r.com/posts/flag-library-in-golang/</guid><description>In Go, the flag package is the standard way to handle command-line arguments. It allows you to define options like -port=8080 or -verbose that users can pass when running your program.
The Three-Step Workflow To use flags correctly, you must follow this specific order:
Define: Tell Go what flags to look for (names, types, and defaults). Parse: Call flag.Parse(). This is the most important step; without it, your variables will never receive the values from the command line.</description></item><item><title>Securing Kubernetes: Avoiding Hard-Coded Passwords in Manifests and Helm Charts</title><link>https://vahid-r.com/posts/kubernetes-passwords/</link><pubDate>Thu, 29 Feb 2024 11:48:57 +0100</pubDate><guid>https://vahid-r.com/posts/kubernetes-passwords/</guid><description>Background Kubernetes has become the de facto container orchestration platform, empowering organizations to deploy, scale, and manage containerized applications seamlessly. However, with great power comes great responsibility, especially when it comes to security. One common pitfall in Kubernetes manifests and Helm charts is the presence of hard-coded passwords, which can expose your applications to serious security risks.
The Problem The Problem is that hard-coded passwords in manifests and Helm charts are a potential security vulnerability.</description></item><item><title>How I tasted a disciplined life</title><link>https://vahid-r.com/posts/discipline/</link><pubDate>Wed, 28 Feb 2024 22:55:05 +0100</pubDate><guid>https://vahid-r.com/posts/discipline/</guid><description>On “5 Nov 2012”, I took a revolutionary step in my life. I set myself up to become a disciplined man. Back then and until very recently, “Immanuel Kant” was and still is my role model in life. A‌‌ disciplined lifestyle was completely new to me, and contrary to me since my childhood. Whenever I needed to be disciplined, I was on a run from doing the hard work.</description></item></channel></rss>