<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>MDT - Personal site</title><link>https://detafti.ir/en/</link><description>Recent content on MDT - Personal site</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://detafti.ir/en/index.xml" rel="self" type="application/rss+xml"/><item><title>BMI calculator</title><link>https://detafti.ir/en/health/bmi/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://detafti.ir/en/health/bmi/</guid><description>&lt;p>Adult BMI is weight in kilograms divided by height in metres squared. It is a population screen, not a diagnosis. It does not know muscle, bone, pregnancy, or where fat sits.&lt;/p></description></item><item><title>Sleep pattern check</title><link>https://detafti.ir/en/health/sleep-check/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://detafti.ir/en/health/sleep-check/</guid><description>&lt;p>Think about the last two weeks, not a single bad night. This is a snapshot of pattern, not a sleep-disorder diagnosis.&lt;/p></description></item><item><title>Stress load check</title><link>https://detafti.ir/en/health/stress-check/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://detafti.ir/en/health/stress-check/</guid><description>&lt;p>Answer for the last two weeks. High scores mean the load is heavy right now. They do not name a condition.&lt;/p></description></item><item><title>Energy and recovery check</title><link>https://detafti.ir/en/health/energy-check/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://detafti.ir/en/health/energy-check/</guid><description>&lt;p>Use this when days feel flat or you cannot tell if you are tired or emptied. It is a self-check, not a clinical scale.&lt;/p></description></item><item><title>Liveness is not health</title><link>https://detafti.ir/en/notes/k8s-liveness-vs-readiness/</link><pubDate>Fri, 11 Sep 2026 17:20:00 +0330</pubDate><guid>https://detafti.ir/en/notes/k8s-liveness-vs-readiness/</guid><description>&lt;p>The worst Kubernetes outage I keep seeing is not a node dying. It is a slow database, a liveness probe that talks to that database, and a cluster that then kills every pod that was still doing useful work.&lt;/p>
&lt;p>Liveness does not mean “the app is healthy.” It means “this process is so stuck that Kubernetes should shoot it.” If you point that gun at a dependency, you will shoot the fleet.&lt;/p></description></item><item><title>Spring @Transactional does not mean what you think</title><link>https://detafti.ir/en/notes/spring-transactional-in-production/</link><pubDate>Fri, 11 Sep 2026 17:10:00 +0330</pubDate><guid>https://detafti.ir/en/notes/spring-transactional-in-production/</guid><description>&lt;p>In review I still see &lt;code>@Transactional&lt;/code> used as a blessing: put it on a method, and the database will behave. It will not. Spring starts a transaction when a &lt;strong>proxy&lt;/strong> intercepts an incoming call. If the call never hits the proxy, you have no transaction, no rollback, and a very confusing production bug.&lt;/p>
&lt;h2 id="what-i-believed--what-i-do-now">What I believed → what I do now&lt;/h2>
&lt;p>I used to sprinkle &lt;code>@Transactional&lt;/code> on every service method “to be safe.” I now put it on the one method that is the use-case boundary, I write a test that proves rollback, and I treat same-class private calls as a smell.&lt;/p></description></item><item><title>Java, Spring, Kubernetes</title><link>https://detafti.ir/en/notes/java-spring-kubernetes/</link><pubDate>Fri, 11 Sep 2026 17:00:00 +0330</pubDate><guid>https://detafti.ir/en/notes/java-spring-kubernetes/</guid><description>&lt;p>A map of how I actually run backend software: Java on the JVM, Spring as the application layer, Kubernetes as the place it lives. Start here, then open the note that matches the problem in front of you.&lt;/p>
&lt;p>This is not a tutorial index. It is the order I would walk a teammate through after an incident.&lt;/p>
&lt;h2 id="if-you-are-new-here">If you are new here&lt;/h2>
&lt;ol>
&lt;li>&lt;a href="https://detafti.ir/en/notes/spring-transactional-in-production/">Spring &lt;code>@Transactional&lt;/code> does not mean what you think&lt;/a> — where transactions actually start, and why a method calling another method on &lt;code>this&lt;/code> silently does nothing.&lt;/li>
&lt;li>&lt;a href="https://detafti.ir/en/notes/k8s-liveness-vs-readiness/">Liveness is not health&lt;/a> — the Kubernetes outage that looks like a crash loop but started as a slow dependency.&lt;/li>
&lt;li>&lt;a href="https://detafti.ir/en/notes/reliability-lessons-from-sqlite/">Reliability lessons from SQLite&lt;/a> — why a tool that solves more problems than it creates stays in production.&lt;/li>
&lt;/ol>
&lt;p>The &lt;a href="https://detafti.ir/en/courses/java/">Java course&lt;/a> is the longer path if you want to write this stack with me, not only read about it.&lt;/p></description></item><item><title>Reliability Lessons From SQLite</title><link>https://detafti.ir/en/notes/reliability-lessons-from-sqlite/</link><pubDate>Fri, 28 Aug 2026 10:56:00 +0330</pubDate><guid>https://detafti.ir/en/notes/reliability-lessons-from-sqlite/</guid><description>&lt;p>Talk from &lt;a href="https://www.youtube.com/watch?v=V_qzqY1bb7I">SSW 2026&lt;/a>.&lt;/p>
&lt;h2 id="takeaways">Takeaways&lt;/h2>
&lt;ul>
&lt;li>SQLite is used so much because it solves more problems than it creates.&lt;/li>
&lt;/ul>
&lt;h2 id="notes">Notes&lt;/h2>
&lt;ul>
&lt;li>DO-178B
Software considerations in Airbone Systems and Equipment Certification&lt;/li>
&lt;/ul>
&lt;p>it leads to create Fossil: Better Project Management
MC/DC&lt;/p></description></item><item><title>Example: video note</title><link>https://detafti.ir/en/notes/example-video/</link><pubDate>Fri, 28 Aug 2026 10:00:00 +0330</pubDate><guid>https://detafti.ir/en/notes/example-video/</guid><description>&lt;p>This is a starter video note. Copy it, or delete it once you add your own.&lt;/p>
&lt;p>Use &lt;code>note_type = &amp;quot;video&amp;quot;&lt;/code> and put the YouTube URL in &lt;code>source&lt;/code> so the video embeds at the top. Headings like &lt;code>12:40&lt;/code> make timestamped notes easy to scan.&lt;/p>
&lt;h2 id="takeaways">Takeaways&lt;/h2>
&lt;ul>
&lt;li>The browser event loop is a queue: JavaScript runs one thing at a time, then picks the next callback.&lt;/li>
&lt;li>Rendering and I/O are not the same queue as your JS callbacks.&lt;/li>
&lt;li>&lt;code>setTimeout(fn, 0)&lt;/code> does not run immediately; it waits until the current stack is clear.&lt;/li>
&lt;/ul>
&lt;h2 id="notes">Notes&lt;/h2>
&lt;h3 id="0115--call-stack">01:15 — Call stack&lt;/h3>
&lt;p>JS is single-threaded. Each function call is pushed onto the stack and popped when it returns.&lt;/p></description></item><item><title>AI agents</title><link>https://detafti.ir/en/courses/ai-agents/</link><pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate><guid>https://detafti.ir/en/courses/ai-agents/</guid><description>&lt;p>How to design agents that use tools, remember just enough context, and do useful work against real systems — not a chatbot demo that falls apart on the second step.&lt;/p>
&lt;p>I will call you after you register so we can check background (some programming helps a lot) and pick a schedule.&lt;/p>
&lt;h2 id="who-it-is-for">Who it is for&lt;/h2>
&lt;p>You have written some code (Python or Java is enough). You have used ChatGPT or similar and want to go past “type a prompt.” You do not need a machine-learning PhD.&lt;/p></description></item><item><title>Java: beginner to advanced</title><link>https://detafti.ir/en/courses/java/</link><pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate><guid>https://detafti.ir/en/courses/java/</guid><description>&lt;p>A practical Java path for people who want to write backend software, not only pass a syntax quiz. There are two tracks. You can start at the beginning, jump to the advanced track if you already write Java, or do both.&lt;/p>
&lt;p>I will call you after you register. We pick a track, a schedule, and whether the group is a fit.&lt;/p>
&lt;h2 id="who-it-is-for">Who it is for&lt;/h2>
&lt;p>&lt;strong>Beginner track&lt;/strong> — you can use a computer comfortably, and you want a first real programming language. No Java required.&lt;/p></description></item><item><title>Example: book note</title><link>https://detafti.ir/en/notes/example-book/</link><pubDate>Thu, 27 Aug 2026 10:00:00 +0330</pubDate><guid>https://detafti.ir/en/notes/example-book/</guid><description>&lt;p>This is a starter book note. Copy it, or delete it once you add your own.&lt;/p>
&lt;p>Use &lt;code>note_type = &amp;quot;book&amp;quot;&lt;/code>, &lt;code>creator&lt;/code> for the author, and one heading per chapter. Set &lt;code>status&lt;/code> to &lt;code>in-progress&lt;/code> while you are still reading.&lt;/p>
&lt;h2 id="takeaways">Takeaways&lt;/h2>
&lt;ul>
&lt;li>Reliability, scalability, and maintainability are the three reasons we bother with data systems.&lt;/li>
&lt;li>There is no single storage engine that is best for every access pattern.&lt;/li>
&lt;li>Replication and partitioning are separate problems; most systems need both.&lt;/li>
&lt;/ul>
&lt;h2 id="chapter-1--reliable-scalable-and-maintainable-applications">Chapter 1 — Reliable, Scalable, and Maintainable Applications&lt;/h2>
&lt;p>Reliability means the system keeps working when things go wrong, not only in the happy path.&lt;/p></description></item><item><title>Latest Gold Price Snapshot</title><link>https://detafti.ir/en/blog/latest-gold-price/</link><pubDate>Fri, 26 Jun 2026 20:30:00 +0330</pubDate><guid>https://detafti.ir/en/blog/latest-gold-price/</guid><description>&lt;h2 id="latest-gold-price-snapshot">Latest Gold Price Snapshot&lt;/h2>
&lt;p>As of June 26, 2026, front-month COMEX gold for June delivery settled at &lt;strong>$4,078.70 per troy ounce&lt;/strong>.&lt;/p>
&lt;p>Gold prices move throughout each trading day, so this post is a simple sample snapshot rather than live pricing. The June 26 move left gold higher on the day but lower for the week, reflecting a volatile stretch for precious metals.&lt;/p>
&lt;p>Source: &lt;a href="https://www.wsj.com/finance/commodities-futures/gold-declines-prices-could-have-further-to-fall-d07b83da">Dow Jones Market Data via The Wall Street Journal&lt;/a>&lt;/p></description></item><item><title>First Post</title><link>https://detafti.ir/en/blog/first-post/</link><pubDate>Fri, 17 Jan 2025 16:17:40 +0330</pubDate><guid>https://detafti.ir/en/blog/first-post/</guid><description>&lt;!-- raw HTML omitted -->
&lt;h2 id="auto-generated-podcast">Auto generated Podcast!&lt;/h2>

&lt;img src="https://detafti.ir/images/scrum.jpg" alt="Scrum book Picture" class="profile-picture">


&lt;p>Welcome to my first blog post! In this post, I&amp;rsquo;ve shared the podcast generated by NotebookLM exploring the book &amp;ldquo;The Professional Scrum Team&amp;rdquo;.&lt;/p>
&lt;p>If you’re curious to hear what it sounds like, you can listen to the podcast below. You can also &lt;a href="https://detafti.ir/audio/Scrum.mp3">Download it here&lt;/a>.&lt;/p>

&lt;div id="music-player">
 &lt;audio id="audio" src="https://detafti.ir/audio/Scrum.mp3">&lt;/audio>
 &lt;div class="controls">
 &lt;button id="play-pause">Play&lt;/button>
 &lt;input type="range" id="seek-bar" value="0">
 &lt;span id="current-time">0:00&lt;/span> / &lt;span id="duration">0:00&lt;/span>
 &lt;button id="mute">Mute&lt;/button>
 &lt;input type="range" id="volume-bar" min="0" max="1" step="0.1" value="1">
 &lt;/div>
&lt;/div>

&lt;style>
 #music-player {
 max-width: 400px;
 margin: 20px auto;
 padding: 10px;
 border: 1px solid #ccc;
 border-radius: 10px;
 background-color: #f9f9f9;
 text-align: center;
 }

 .controls {
 display: flex;
 flex-direction: column;
 gap: 10px;
 }

 #seek-bar, #volume-bar {
 width: 100%;
 }

 button {
 padding: 5px 10px;
 border: none;
 border-radius: 5px;
 background-color: #007bff;
 color: white;
 cursor: pointer;
 }

 button:hover {
 background-color: #0056b3;
 }
&lt;/style>

&lt;script>
 const audio = document.getElementById('audio');
 const playPauseButton = document.getElementById('play-pause');
 const seekBar = document.getElementById('seek-bar');
 const currentTime = document.getElementById('current-time');
 const duration = document.getElementById('duration');
 const muteButton = document.getElementById('mute');
 const volumeBar = document.getElementById('volume-bar');

 // Play/Pause functionality
 playPauseButton.addEventListener('click', () => {
 if (audio.paused) {
 audio.play();
 playPauseButton.textContent = 'Pause';
 } else {
 audio.pause();
 playPauseButton.textContent = 'Play';
 }
 });

 // Update seek bar as the audio plays
 audio.addEventListener('timeupdate', () => {
 seekBar.value = audio.currentTime;
 currentTime.textContent = formatTime(audio.currentTime);
 });

 // Update duration when the audio metadata is loaded
 audio.addEventListener('loadedmetadata', () => {
 seekBar.max = audio.duration;
 duration.textContent = formatTime(audio.duration);
 });

 // Seek functionality
 seekBar.addEventListener('input', () => {
 audio.currentTime = seekBar.value;
 });

 // Mute functionality
 muteButton.addEventListener('click', () => {
 audio.muted = !audio.muted;
 muteButton.textContent = audio.muted ? 'Unmute' : 'Mute';
 });

 // Volume control
 volumeBar.addEventListener('input', () => {
 audio.volume = volumeBar.value;
 });

 // Format time (e.g., 125 -> 2:05)
 function formatTime(seconds) {
 const minutes = Math.floor(seconds / 60);
 const secs = Math.floor(seconds % 60);
 return `${minutes}:${secs &lt; 10 ? '0' : ''}${secs}`;
 }
&lt;/script></description></item><item><title>About me</title><link>https://detafti.ir/en/resume/</link><pubDate>Fri, 17 Jan 2025 16:17:19 +0330</pubDate><guid>https://detafti.ir/en/resume/</guid><description/></item><item><title>Log in</title><link>https://detafti.ir/en/login/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://detafti.ir/en/login/</guid><description>&lt;p>Sign in with your phone number. We text you a one-time code — no password to remember.&lt;/p></description></item><item><title>Prices</title><link>https://detafti.ir/en/gold/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://detafti.ir/en/gold/</guid><description>&lt;p>US dollars per troy ounce. Gold and silver are snapshots from &lt;a href="https://goldprice.org/">goldprice.org&lt;/a>, captured about once an hour — not a live tick, and not investment advice. The chart shows percent change so both metals fit in one view.&lt;/p></description></item></channel></rss>