<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title><![CDATA[Bhavesh Patil]]></title>
    <description><![CDATA[Thoughtful writing on ideas, technology, design, creativity, and the work that shapes how we build, create, and think.]]></description>
    <link>https://writing.iambhvsh.in</link>
    <atom:link href="https://writing.iambhvsh.in/rss.xml" rel="self" type="application/rss+xml"/>
    <language>en-US</language>
    <lastBuildDate>Thu, 02 Jul 2026 00:00:00 GMT</lastBuildDate>
    <docs>https://www.rssboard.org/rss-specification</docs>
    <ttl>360</ttl>
    <copyright>© 2026 Bhavesh Patil</copyright>
    <managingEditor>iambhvsh@proton.me (Bhavesh Patil)</managingEditor>
    <webMaster>iambhvsh@proton.me (Bhavesh Patil)</webMaster>
    <image>
      <url>https://writing.iambhvsh.in/og.png</url>
      <title><![CDATA[Bhavesh Patil]]></title>
      <link>https://writing.iambhvsh.in</link>
    </image>
    
    <item>
      <title><![CDATA[Day 6: Thinking in Loops]]></title>
      <description><![CDATA[On my sixth day learning Swift, I explored for loops, while loops, continue, break, and completed the classic FizzBuzz challenge. Today wasn't about…]]></description>
      <link>https://writing.iambhvsh.in/day-6-thinking-in-loops</link>
      <guid isPermaLink="true">https://writing.iambhvsh.in/day-6-thinking-in-loops</guid>
      <pubDate>Thu, 02 Jul 2026 00:00:00 GMT</pubDate>
      <author>iambhvsh@proton.me (Bhavesh Patil)</author>
      <dc:creator><![CDATA[Bhavesh Patil]]></dc:creator>
      <category><![CDATA[Swift]]></category>
      <category><![CDATA[Swift Programming]]></category>
      <category><![CDATA[iOS Development]]></category>
      <category><![CDATA[Apple Development]]></category>
      <category><![CDATA[SwiftUI]]></category>
      <content:encoded><![CDATA[<h2 id="table-of-contents"><a href="https://writing.iambhvsh.in/day-6-thinking-in-loops/#table-of-contents">Table of Contents</a></h2>
<ul>
<li><a href="https://writing.iambhvsh.in/day-6-thinking-in-loops/#teaching-swift-to-repeat">Teaching Swift to Repeat</a></li>
<li><a href="https://writing.iambhvsh.in/day-6-thinking-in-loops/#repeating-work-with-for">Repeating Work with <code>for</code></a></li>
<li><a href="https://writing.iambhvsh.in/day-6-thinking-in-loops/#ranges-are-more-than-numbers">Ranges Are More Than Numbers</a></li>
<li><a href="https://writing.iambhvsh.in/day-6-thinking-in-loops/#understanding-iteration">Understanding Iteration</a></li>
<li><a href="https://writing.iambhvsh.in/day-6-thinking-in-loops/#when-you-dont-know-how-many-times">When You Don't Know How Many Times</a></li>
<li><a href="https://writing.iambhvsh.in/day-6-thinking-in-loops/#the-difference-between-continue-and-break">The Difference Between <code>continue</code> and <code>break</code></a></li>
<li><a href="https://writing.iambhvsh.in/day-6-thinking-in-loops/#debugging-my-own-thinking">Debugging My Own Thinking</a></li>
<li><a href="https://writing.iambhvsh.in/day-6-thinking-in-loops/#fizzbuzz">FizzBuzz</a></li>
<li><a href="https://writing.iambhvsh.in/day-6-thinking-in-loops/#patterns-are-starting-to-appear">Patterns Are Starting to Appear</a></li>
<li><a href="https://writing.iambhvsh.in/day-6-thinking-in-loops/#looking-ahead">Looking Ahead</a></li>
<li><a href="https://writing.iambhvsh.in/day-6-thinking-in-loops/#day-6-code">Day 6 Code</a></li>
</ul>
<h2 id="teaching-swift-to-repeat"><a href="https://writing.iambhvsh.in/day-6-thinking-in-loops/#teaching-swift-to-repeat">Teaching Swift to Repeat</a></h2>
<p>One of the first things I noticed while learning programming is that computers are incredibly good at repetitive work.</p>
<p>Humans don't enjoy writing the same code over and over again.</p>
<p>Computers don't mind executing the same instructions thousands or even millions of times.</p>
<p>Today's lesson was about giving Swift a way to repeat work without repeating myself.</p>
<p>That idea sounds simple.</p>
<p>In practice, it changes how programs are written.</p>
<h2 id="repeating-work-with-for"><a href="https://writing.iambhvsh.in/day-6-thinking-in-loops/#repeating-work-with-for">Repeating Work with <code>for</code></a></h2>
<p>The first loop I learned was the <code>for</code> loop.</p>
<p>Instead of writing the same statement several times, Swift can repeat it automatically.</p>
<pre><code class="language-swift">let platforms = ["iOS", "macOS", "tvOS", "iPadOS"]

for platform in platforms {
    print("Swift works on \(platform).")
}
</code></pre>
<p>Every iteration gives me one value from the collection.</p>
<p>By the end of the loop, every platform has been processed.</p>
<p>The syntax is surprisingly readable.</p>
<p>It almost feels like plain English.</p>
<blockquote>
<p>For every platform in platforms...</p>
</blockquote>
<p>That readability is something I've started appreciating more and more as I continue learning Swift.</p>
<h2 id="ranges-are-more-than-numbers"><a href="https://writing.iambhvsh.in/day-6-thinking-in-loops/#ranges-are-more-than-numbers">Ranges Are More Than Numbers</a></h2>
<p>One detail that surprised me today was that ranges are actual types.</p>
<p>I had always written loops like this.</p>
<pre><code class="language-swift">for i in 1...5 {
    print(i)
}
</code></pre>
<p>Later, I learned that the range itself can be stored.</p>
<pre><code class="language-swift">let count = 1...5

for i in count {
    print(i)
}
</code></pre>
<p>For some reason, that never crossed my mind before today.</p>
<p>It's one of those small language features that immediately makes sense once you see it.</p>
<h2 id="understanding-iteration"><a href="https://writing.iambhvsh.in/day-6-thinking-in-loops/#understanding-iteration">Understanding Iteration</a></h2>
<p>Another thing that finally clicked today was the word <strong>iteration</strong>.</p>
<p>At first, I treated loops as something magical.</p>
<p>Now I think about them much more simply.</p>
<p>Every iteration follows the same pattern.</p>
<p>The loop checks whether it should continue.</p>
<p>If it should, Swift executes everything inside the loop body.</p>
<p>Then the process repeats.</p>
<p>That mental model made loops much easier to understand than trying to memorize examples.</p>
<h2 id="when-you-dont-know-how-many-times"><a href="https://writing.iambhvsh.in/day-6-thinking-in-loops/#when-you-dont-know-how-many-times">When You Don't Know How Many Times</a></h2>
<p><code>for</code> loops are great when the number of repetitions is already known.</p>
<p><code>while</code> loops solve a different problem.</p>
<p>They continue until a condition becomes false.</p>
<pre><code class="language-swift">var countdown = 10

while countdown > 0 {
    print(countdown)
    countdown -= 1
}
</code></pre>
<p>This looked straightforward until I started answering checkpoint questions.</p>
<p>That's when I realized something important.</p>
<p>Swift checks the condition <strong>before</strong> each new iteration.</p>
<p>Once the loop begins, it finishes executing everything inside the braces before checking the condition again.</p>
<p>That tiny detail completely changed how I read <code>while</code> loops.</p>
<h2 id="the-difference-between-continue-and-break"><a href="https://writing.iambhvsh.in/day-6-thinking-in-loops/#the-difference-between-continue-and-break">The Difference Between <code>continue</code> and <code>break</code></a></h2>
<p>Today's lesson also introduced two keywords that completely change how a loop behaves.</p>
<p>The first was <code>continue</code>.</p>
<pre><code class="language-swift">if fileName.hasSuffix(".html") == false {
    continue
}
</code></pre>
<p>Instead of stopping the loop, <code>continue</code> skips the current iteration and immediately moves to the next one.</p>
<p>The second keyword was <code>break</code>.</p>
<pre><code class="language-swift">if multiples.count == 10 {
    break
}
</code></pre>
<p>Unlike <code>continue</code>, <code>break</code> exits the loop entirely.</p>
<p>It doesn't skip one iteration.</p>
<p>It ends the loop.</p>
<p>That difference seemed small at first, but after experimenting with both, it became much easier to understand when each one should be used.</p>
<h2 id="debugging-my-own-thinking"><a href="https://writing.iambhvsh.in/day-6-thinking-in-loops/#debugging-my-own-thinking">Debugging My Own Thinking</a></h2>
<p>Today's checkpoint was probably the most challenging one so far.</p>
<p>Not because the syntax was difficult.</p>
<p>The challenge was learning to trace the code one step at a time.</p>
<p>Several questions caught me because I was trying to predict the final answer instead of following each iteration.</p>
<p>Eventually, I stopped guessing.</p>
<p>I started tracing.</p>
<p>Current value.</p>
<p>Condition.</p>
<p>Loop body.</p>
<p>Update.</p>
<p>Repeat.</p>
<p>That simple process helped me understand every question I had previously answered incorrectly.</p>
<p>Looking back, the problem wasn't Swift.</p>
<p>It was how I was reading the code.</p>
<h2 id="fizzbuzz"><a href="https://writing.iambhvsh.in/day-6-thinking-in-loops/#fizzbuzz">FizzBuzz</a></h2>
<p>The checkpoint for today was the classic FizzBuzz challenge.</p>
<p>The goal was simple.</p>
<ul>
<li>Print <strong>Fizz</strong> for multiples of 3.</li>
<li>Print <strong>Buzz</strong> for multiples of 5.</li>
<li>Print <strong>FizzBuzz</strong> for numbers divisible by both.</li>
<li>Otherwise, print the number itself.</li>
</ul>
<pre><code class="language-swift">for i in 1...100 {

    if i.isMultiple(of: 3) &#x26;&#x26; i.isMultiple(of: 5) {
        print("FizzBuzz")
    } else if i.isMultiple(of: 3) {
        print("Fizz")
    } else if i.isMultiple(of: 5) {
        print("Buzz")
    } else {
        print(i)
    }
}
</code></pre>
<p>My first attempt had one small mistake.</p>
<p>I checked whether a number was divisible by 3 before checking whether it was divisible by both 3 and 5.</p>
<p>That meant numbers like <code>15</code> printed <code>"Fizz"</code> instead of <code>"FizzBuzz"</code>.</p>
<p>The fix wasn't changing the logic.</p>
<p>It was changing the order.</p>
<p>Sometimes programming isn't about writing more code.</p>
<p>It's about asking the right question first.</p>
<h2 id="patterns-are-starting-to-appear"><a href="https://writing.iambhvsh.in/day-6-thinking-in-loops/#patterns-are-starting-to-appear">Patterns Are Starting to Appear</a></h2>
<p>One thing I've noticed over the past week is that Swift keeps introducing concepts that build on each other.</p>
<p>Variables store information.</p>
<p>Collections organize it.</p>
<p>Conditions decide what should happen.</p>
<p>Loops repeat that work.</p>
<p>Every new lesson feels connected to the previous one.</p>
<p>Instead of learning isolated features, I'm slowly learning how they work together.</p>
<h2 id="looking-ahead"><a href="https://writing.iambhvsh.in/day-6-thinking-in-loops/#looking-ahead">Looking Ahead</a></h2>
<p>Today's lesson wasn't really about loops.</p>
<p>It was about thinking differently.</p>
<p>Instead of asking how to write the same statement ten times, I'm starting to ask how to describe the pattern once and let Swift handle the repetition.</p>
<p>That feels like a much more valuable skill.</p>
<p>The syntax will eventually become muscle memory.</p>
<p>Learning how to think in loops is the part I'll probably remember.</p>
<h2 id="day-6-code"><a href="https://writing.iambhvsh.in/day-6-thinking-in-loops/#day-6-code">Day 6 Code</a></h2>
<p>The complete code from today's learning session is available here:</p>
<ul>
<li><a href="https://writing.iambhvsh.in/day-6-thinking-in-loops/iteration.swift">iteration.swift</a></li>
</ul>]]></content:encoded>
    </item>
    <item>
      <title><![CDATA[Day 5: Teaching Swift to Make Decisions]]></title>
      <description><![CDATA[On my fifth day learning Swift, I explored conditions, comparison operators, logical operators, switch statements, and the ternary operator. Today was less…]]></description>
      <link>https://writing.iambhvsh.in/day-5-conditions</link>
      <guid isPermaLink="true">https://writing.iambhvsh.in/day-5-conditions</guid>
      <pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate>
      <author>iambhvsh@proton.me (Bhavesh Patil)</author>
      <dc:creator><![CDATA[Bhavesh Patil]]></dc:creator>
      <category><![CDATA[Swift]]></category>
      <category><![CDATA[Swift Programming]]></category>
      <category><![CDATA[iOS Development]]></category>
      <category><![CDATA[Apple Development]]></category>
      <category><![CDATA[SwiftUI]]></category>
      <content:encoded><![CDATA[<h2 id="table-of-contents"><a href="https://writing.iambhvsh.in/day-5-conditions/#table-of-contents">Table of Contents</a></h2>
<ul>
<li><a href="https://writing.iambhvsh.in/day-5-conditions/#from-instructions-to-decisions">From Instructions to Decisions</a></li>
<li><a href="https://writing.iambhvsh.in/day-5-conditions/#every-decision-starts-with-a-question">Every Decision Starts with a Question</a></li>
<li><a href="https://writing.iambhvsh.in/day-5-conditions/#more-than-just-numbers">More Than Just Numbers</a></li>
<li><a href="https://writing.iambhvsh.in/day-5-conditions/#not-every-decision-is-simply-yes-or-no">Not Every Decision Is Simply Yes or No</a></li>
<li><a href="https://writing.iambhvsh.in/day-5-conditions/#combining-questions">Combining Questions</a></li>
<li><a href="https://writing.iambhvsh.in/day-5-conditions/#enums-feel-even-more-useful-now">Enums Feel Even More Useful Now</a></li>
<li><a href="https://writing.iambhvsh.in/day-5-conditions/#the-right-tool-for-multiple-possibilities">The Right Tool for Multiple Possibilities</a></li>
<li><a href="https://writing.iambhvsh.in/day-5-conditions/#a-smaller-way-to-express-the-same-idea">A Smaller Way to Express the Same Idea</a></li>
<li><a href="https://writing.iambhvsh.in/day-5-conditions/#more-than-learning-syntax">More Than Learning Syntax</a></li>
<li><a href="https://writing.iambhvsh.in/day-5-conditions/#looking-ahead">Looking Ahead</a></li>
<li><a href="https://writing.iambhvsh.in/day-5-conditions/#day-5-code">Day 5 Code</a></li>
</ul>
<h2 id="from-instructions-to-decisions"><a href="https://writing.iambhvsh.in/day-5-conditions/#from-instructions-to-decisions">From Instructions to Decisions</a></h2>
<p>The first few days of learning Swift were mostly about understanding the language itself.</p>
<p>Variables store information.</p>
<p>Constants protect values from changing.</p>
<p>Collections organize data.</p>
<p>Enums group related values together.</p>
<p>Every example I wrote followed the same pattern.</p>
<p>The code started at the top, executed one line after another, and eventually reached the end.</p>
<p>There wasn't much room for decision making.</p>
<p>Today's lesson changed that.</p>
<p>For the first time, I wasn't just writing instructions.</p>
<p>I was teaching Swift how to decide what should happen next.</p>
<p>That feels like a much bigger step than simply learning another keyword.</p>
<h2 id="every-decision-starts-with-a-question"><a href="https://writing.iambhvsh.in/day-5-conditions/#every-decision-starts-with-a-question">Every Decision Starts with a Question</a></h2>
<p>Every condition in Swift asks a question.</p>
<p>The answer is always one of two possibilities.</p>
<p><code>true</code>.</p>
<p>Or <code>false</code>.</p>
<p>That sounds almost too simple, but once I started writing conditions myself, I realized almost every program depends on those two values.</p>
<pre><code class="language-swift">let favoriteSinger = "Elizabeth Woolridge Grant"

if favoriteSinger == "Elizabeth Woolridge Grant" {
    print("Yes, that's Lana Del Rey.")
}
</code></pre>
<p>The condition asks a single question.</p>
<p>Does the value stored inside <code>favoriteSinger</code> exactly match <code>"Elizabeth Woolridge Grant"</code>?</p>
<p>If it does, the condition becomes <code>true</code>.</p>
<p>If it doesn't, it becomes <code>false</code>.</p>
<p>Swift then decides whether the code inside the braces should run.</p>
<p>It's surprisingly straightforward once you understand that every condition is simply asking a question.</p>
<h2 id="more-than-just-numbers"><a href="https://writing.iambhvsh.in/day-5-conditions/#more-than-just-numbers">More Than Just Numbers</a></h2>
<p>When I first saw comparison operators, I assumed they were mainly used with numbers.</p>
<p>That turned out to be only part of the story.</p>
<p>Numbers are an obvious place to begin.</p>
<pre><code class="language-swift">let score = 86

if score >= 80 {
    print("Excellent!")
}
</code></pre>
<p>But Swift also lets us compare strings.</p>
<pre><code class="language-swift">let singerOne = "Elizabeth Woolridge Grant"
let singerTwo = "Taylor Swift"

if singerOne &#x3C; singerTwo {
    print("\(singerOne) comes first alphabetically.")
}
</code></pre>
<p>The first time I saw this example, I wondered how a language could decide that one sentence was "less than" another.</p>
<p>The answer is surprisingly logical.</p>
<p>Swift compares one character at a time.</p>
<p>Since <strong>E</strong> comes before <strong>T</strong>, <code>"Elizabeth Woolridge Grant"</code> appears before <code>"Taylor Swift"</code> alphabetically.</p>
<p>It's one of those details that seems small until you realize it's exactly how features like sorting lists actually work.</p>
<h2 id="not-every-decision-is-simply-yes-or-no"><a href="https://writing.iambhvsh.in/day-5-conditions/#not-every-decision-is-simply-yes-or-no">Not Every Decision Is Simply Yes or No</a></h2>
<p>Real applications rarely have only two possible outcomes.</p>
<p>Sometimes there are several possibilities.</p>
<p>That's where <code>else if</code> fits perfectly.</p>
<pre><code class="language-swift">let score = 86

if score &#x3C; 40 {
    print("Failed")
} else if score &#x3C;= 80 {
    print("Passed")
} else {
    print("Excellent!")
}
</code></pre>
<p>One detail finally clicked for me today.</p>
<p>Swift checks these conditions one at a time.</p>
<p>The moment one becomes <code>true</code>, everything below it is ignored.</p>
<p>That explains why the order of conditions matters.</p>
<p>It also explains why the second condition doesn't need to check whether the score is greater than forty.</p>
<p>If Swift reaches that point, it already knows the first condition wasn't true.</p>
<p>Little details like that are starting to make the language feel much more intentional.</p>
<h2 id="combining-questions"><a href="https://writing.iambhvsh.in/day-5-conditions/#combining-questions">Combining Questions</a></h2>
<p>One question isn't always enough.</p>
<p>Sometimes a decision depends on multiple things happening at the same time.</p>
<p>Swift solves that with logical operators.</p>
<p>The first one I learned was <code>&#x26;&#x26;</code>, which means <strong>AND</strong>.</p>
<pre><code class="language-swift">let likesLana = true
let likesBillie = true

if likesLana &#x26;&#x26; likesBillie {
    print("Perfect playlist.")
}
</code></pre>
<p>Both conditions must be true.</p>
<p>If either one becomes false, the entire condition becomes false.</p>
<p>The second operator is <code>||</code>, which means <strong>OR</strong>.</p>
<pre><code class="language-swift">let likesTaylor = false

if likesLana || likesTaylor {
    print("At least one favorite artist is selected.")
}
</code></pre>
<p>Only one condition needs to be true.</p>
<p>These operators immediately made the examples feel more realistic.</p>
<p>Instead of checking one thing at a time, I could express situations that depended on several different pieces of information.</p>
<p>I can already imagine using them for authentication, permissions, filtering content, and validating forms.</p>
<h2 id="enums-feel-even-more-useful-now"><a href="https://writing.iambhvsh.in/day-5-conditions/#enums-feel-even-more-useful-now">Enums Feel Even More Useful Now</a></h2>
<p>Enums returned today, but this time they weren't just another way of organizing values.</p>
<p>They became part of the decision making process.</p>
<pre><code class="language-swift">enum Singer {
    case lanaDelRey
    case billieEilish
    case taylorSwift
    case coldplay
}

let currentFavorite = Singer.lanaDelRey
</code></pre>
<p>Instead of comparing strings repeatedly, I could compare predefined values.</p>
<pre><code class="language-swift">if currentFavorite == .lanaDelRey {
    print("Elizabeth Woolridge Grant will always be my favorite artist.")
}
</code></pre>
<p>The more I use enums, the more I appreciate what they're trying to accomplish.</p>
<p>Instead of relying on text that could easily contain a typo, Swift lets me work with a fixed set of valid values.</p>
<p>It's another example of the language encouraging clarity over convenience.</p>
<h2 id="the-right-tool-for-multiple-possibilities"><a href="https://writing.iambhvsh.in/day-5-conditions/#the-right-tool-for-multiple-possibilities">The Right Tool for Multiple Possibilities</a></h2>
<p>The biggest topic today was the <code>switch</code> statement.</p>
<p>Initially it looked like another way of writing several <code>if</code> statements.</p>
<p>After writing a few examples myself, it became obvious why Swift treats it as a separate feature.</p>
<pre><code class="language-swift">switch currentFavorite {

case .lanaDelRey:
    print("Now Playing: Lana Del Rey")

case .billieEilish:
    print("Now Playing: Billie Eilish")

case .taylorSwift:
    print("Now Playing: Taylor Swift")

case .coldplay:
    print("Now Playing: Coldplay")
}
</code></pre>
<p>Reading a <code>switch</code> feels different.</p>
<p>Instead of repeatedly asking the same question, it presents every possible outcome in one place.</p>
<p>Even better, Swift insists that every possible case is handled.</p>
<p>Because my enum defines every available value, Swift already knows what possibilities exist.</p>
<p>That means I don't need a <code>default</code> case.</p>
<p>If I later add another singer to the enum, Swift immediately reminds me that my <code>switch</code> is incomplete.</p>
<p>I like that.</p>
<p>The compiler isn't just checking syntax.</p>
<p>It's helping prevent mistakes before the program even runs.</p>
<p>Today's lesson also introduced <code>fallthrough</code>.</p>
<p>It's not something I'll reach for often, but it was interesting to learn that Swift allows one case to intentionally continue into the next when that's the behavior you actually want.</p>
<h2 id="a-smaller-way-to-express-the-same-idea"><a href="https://writing.iambhvsh.in/day-5-conditions/#a-smaller-way-to-express-the-same-idea">A Smaller Way to Express the Same Idea</a></h2>
<p>The final topic today was the ternary conditional operator.</p>
<p>I'll admit that it looked confusing at first.</p>
<pre><code class="language-swift">let hour = 16

let greeting = hour &#x3C; 12
    ? "Good morning."
    : "Good afternoon."
</code></pre>
<p>After rewriting it as a regular <code>if</code> statement, everything made sense.</p>
<p>The ternary operator isn't introducing a new idea.</p>
<p>It's simply another way of expressing an existing one.</p>
<p>For small decisions with only two outcomes, it removes a few lines without making the code harder to understand.</p>
<p>That's becoming a recurring theme throughout Swift.</p>
<p>The language often provides a shorter way to write something, but it rarely sacrifices readability to achieve it.</p>
<h2 id="more-than-learning-syntax"><a href="https://writing.iambhvsh.in/day-5-conditions/#more-than-learning-syntax">More Than Learning Syntax</a></h2>
<p>One thing has become increasingly clear over these past five days.</p>
<p>Swift isn't simply teaching me syntax.</p>
<p>It's teaching me how to think about problems.</p>
<p>Today's lesson wasn't really about <code>if</code>, <code>switch</code>, or <code>?</code>.</p>
<p>Those are just tools.</p>
<p>The real lesson was understanding how software makes decisions.</p>
<p>Every application I use every day reacts to information.</p>
<p>Buttons become enabled.</p>
<p>Errors appear.</p>
<p>Permissions are checked.</p>
<p>Content changes depending on who is signed in.</p>
<p>Recommendations are personalized.</p>
<p>All of those experiences begin with conditions that evaluate to either <code>true</code> or <code>false</code>.</p>
<p>Today I finally started learning how those decisions are expressed in code.</p>
<h2 id="looking-ahead"><a href="https://writing.iambhvsh.in/day-5-conditions/#looking-ahead">Looking Ahead</a></h2>
<p>Five days into learning Swift, I'm beginning to notice a pattern.</p>
<p>Each lesson builds naturally on the previous one.</p>
<p>Variables gave me somewhere to store information.</p>
<p>Collections taught me how to organize it.</p>
<p>Enums gave names to related values.</p>
<p>Today those pieces finally started working together.</p>
<p>Instead of writing programs that simply execute from top to bottom, I'm learning how to write programs that respond.</p>
<p>Programs that adapt.</p>
<p>Programs that make decisions.</p>
<p>That feels like an important milestone.</p>
<p>The code I'm writing is still simple, but the ideas behind it are becoming much more powerful.</p>
<p>I'm looking forward to seeing where tomorrow takes me.</p>
<h2 id="day-5-code"><a href="https://writing.iambhvsh.in/day-5-conditions/#day-5-code">Day 5 Code</a></h2>
<p>The complete code from today's learning session is available here:</p>
<ul>
<li><a href="https://writing.iambhvsh.in/day-5-conditions/conditions.swift">conditions.swift</a></li>
</ul>]]></content:encoded>
    </item>
    <item>
      <title><![CDATA[Day 4: Understanding Types in Swift]]></title>
      <description><![CDATA[Today I explored Swift's type annotations, learned when explicit types improve clarity, created empty collections, revisited enums, and completed a…]]></description>
      <link>https://writing.iambhvsh.in/day-4-type-annotations</link>
      <guid isPermaLink="true">https://writing.iambhvsh.in/day-4-type-annotations</guid>
      <pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate>
      <author>iambhvsh@proton.me (Bhavesh Patil)</author>
      <dc:creator><![CDATA[Bhavesh Patil]]></dc:creator>
      <category><![CDATA[Swift]]></category>
      <category><![CDATA[Swift Programming]]></category>
      <category><![CDATA[Swift Tutorial]]></category>
      <category><![CDATA[SwiftUI]]></category>
      <category><![CDATA[iOS Development]]></category>
      <category><![CDATA[Apple Development]]></category>
      <content:encoded><![CDATA[<h2 id="table-of-contents"><a href="https://writing.iambhvsh.in/day-4-type-annotations/#table-of-contents">Table of Contents</a></h2>
<ul>
<li><a href="https://writing.iambhvsh.in/day-4-type-annotations/#back-where-i-left-off">Back Where I Left Off</a></li>
<li><a href="https://writing.iambhvsh.in/day-4-type-annotations/#swift-usually-knows-what-you-mean">Swift Usually Knows What You Mean</a></li>
<li><a href="https://writing.iambhvsh.in/day-4-type-annotations/#being-explicit-has-its-place">Being Explicit Has Its Place</a></li>
<li><a href="https://writing.iambhvsh.in/day-4-type-annotations/#empty-collections-need-direction">Empty Collections Need Direction</a></li>
<li><a href="https://writing.iambhvsh.in/day-4-type-annotations/#collections-still-feel-purpose-built">Collections Still Feel Purpose-Built</a></li>
<li><a href="https://writing.iambhvsh.in/day-4-type-annotations/#revisiting-enums">Revisiting Enums</a></li>
<li><a href="https://writing.iambhvsh.in/day-4-type-annotations/#a-small-checkpoint">A Small Checkpoint</a></li>
<li><a href="https://writing.iambhvsh.in/day-4-type-annotations/#understanding-the-language-not-just-the-syntax">Understanding the Language, Not Just the Syntax</a></li>
<li><a href="https://writing.iambhvsh.in/day-4-type-annotations/#looking-ahead">Looking Ahead</a></li>
<li><a href="https://writing.iambhvsh.in/day-4-type-annotations/#day-4-code">Day 4 Code</a></li>
</ul>
<h2 id="back-where-i-left-off"><a href="https://writing.iambhvsh.in/day-4-type-annotations/#back-where-i-left-off">Back Where I Left Off</a></h2>
<p>I wasn't able to practice Swift every day over the past few days.</p>
<p>Life got busy, and that's okay.</p>
<p>Today I finally sat back down, opened my editor, and continued where I left off.</p>
<p>Rather than introducing a brand-new language feature, today's lesson focused on something that's present in almost every line of Swift code: <strong>types</strong>.</p>
<p>It's one of those topics that seems simple at first, but the more I learned, the more I realized how much thought has gone into Swift's design.</p>
<h2 id="swift-usually-knows-what-you-mean"><a href="https://writing.iambhvsh.in/day-4-type-annotations/#swift-usually-knows-what-you-mean">Swift Usually Knows What You Mean</a></h2>
<p>One of my favorite things about Swift is that it doesn't ask you to repeat yourself.</p>
<p>When I write this:</p>
<pre><code class="language-swift">let fullName = "Elizabeth Woolridge Grant"
</code></pre>
<p>Swift immediately understands that <code>fullName</code> is a <code>String</code>.</p>
<p>The same happens with numbers.</p>
<pre><code class="language-swift">let randomNumber = 566
</code></pre>
<p>Swift knows it's an <code>Int</code>.</p>
<p>There's no extra syntax and no unnecessary declarations.</p>
<p>The compiler simply understands what I'm trying to express.</p>
<p>That makes the language feel lightweight without sacrificing safety.</p>
<h2 id="being-explicit-has-its-place"><a href="https://writing.iambhvsh.in/day-4-type-annotations/#being-explicit-has-its-place">Being Explicit Has Its Place</a></h2>
<p>Of course, Swift can't always know what I intend.</p>
<p>Sometimes I know more than the compiler does.</p>
<p>For example:</p>
<pre><code class="language-swift">let score: Double = 0
</code></pre>
<p>Even though the value is <code>0</code>, I know that a score could eventually become <code>95.5</code> or <code>99.75</code>.</p>
<p>If I didn't specify <code>Double</code>, Swift would create an <code>Int</code> instead.</p>
<p>That small annotation communicates my intent immediately.</p>
<p>Today's lesson taught me that type annotations aren't about writing more code.</p>
<p>They're about making the code say exactly what it means.</p>
<h2 id="empty-collections-need-direction"><a href="https://writing.iambhvsh.in/day-4-type-annotations/#empty-collections-need-direction">Empty Collections Need Direction</a></h2>
<p>Type inference works because Swift can inspect existing values.</p>
<p>An empty collection has nothing to inspect.</p>
<p>Without any values, Swift can't determine what kind of collection I want to create.</p>
<p>That's why this works:</p>
<pre><code class="language-swift">let songs: [String] = []
</code></pre>
<p>And this works too:</p>
<pre><code class="language-swift">let featuredAlbums = [String]()
</code></pre>
<p>Both create an empty array of strings.</p>
<p>The same idea applies to dictionaries.</p>
<pre><code class="language-swift">let ages = [String: Int]()
</code></pre>
<p>Since there are no keys or values yet, Swift relies on the type annotation to understand what the collection will eventually store.</p>
<p>It was a small lesson, but one that made the compiler's behavior much easier to understand.</p>
<h2 id="collections-still-feel-purpose-built"><a href="https://writing.iambhvsh.in/day-4-type-annotations/#collections-still-feel-purpose-built">Collections Still Feel Purpose-Built</a></h2>
<p>To reinforce everything I'd learned over the past few days, I also created a few different collections.</p>
<p>An array of numbers.</p>
<pre><code class="language-swift">let luckyNumbers: [Int] = [1, 2, 3, 4, 5, 6, 7, 8, 9]
</code></pre>
<p>An array of Lana Del Rey albums.</p>
<pre><code class="language-swift">let lanaAlbums: [String] = [
    "Lust for Life",
    "Born to Die",
    "Ultraviolence",
    "Honeymoon",
    "Chemtrails Over the Country Club"
]
</code></pre>
<p>And a set containing some of my favorite Lana Del Rey songs.</p>
<pre><code class="language-swift">let lanaSongs: Set&#x3C;String> = [
    "Born to Die",
    "Video Games",
    "Chemtrails Over the Country Club",
    "Margaret",
    "Say Yes To Heaven"
]
</code></pre>
<p>The more I work with Swift's collections, the more I appreciate that each one exists for a different purpose.</p>
<p>Arrays preserve order.</p>
<p>Sets guarantee uniqueness.</p>
<p>Dictionaries provide fast lookups.</p>
<p>Instead of trying to solve every problem with one collection type, Swift encourages choosing the one that best fits the data.</p>
<h2 id="revisiting-enums"><a href="https://writing.iambhvsh.in/day-4-type-annotations/#revisiting-enums">Revisiting Enums</a></h2>
<p>Today's lesson also brought enums back into the picture.</p>
<pre><code class="language-swift">enum ThemeColor {
    case red
    case orange
    case blue
    case yellow
}
</code></pre>
<p>Creating an enum value feels straightforward.</p>
<pre><code class="language-swift">var currentTheme = ThemeColor.blue
</code></pre>
<p>What I like even more is Swift's shorthand syntax.</p>
<pre><code class="language-swift">currentTheme = .red
</code></pre>
<p>Because the compiler already knows that <code>currentTheme</code> is a <code>ThemeColor</code>, there's no need to repeat the type.</p>
<p>It's a small detail, but it keeps the code clean and easy to read.</p>
<p>That's something I'm starting to notice throughout the language.</p>
<p>Swift often removes repetition without making the code harder to understand.</p>
<h2 id="a-small-checkpoint"><a href="https://writing.iambhvsh.in/day-4-type-annotations/#a-small-checkpoint">A Small Checkpoint</a></h2>
<p>To finish today's lesson, I completed another checkpoint.</p>
<p>The challenge was simple.</p>
<p>Create an array of strings, then write some code that prints the number of items in the array and also the number of unique items in the array.</p>
<pre><code class="language-swift">let singers = [
    "Lana Del Rey",
    "Taylor Swift",
    "Billie Eilish",
    "Lana Del Rey",
    "Joe Keery",
    "Lord Huron",
    "Lord Huron"
]

print("Total singers: \(singers.count)")

let uniqueSingers = Set(singers)

print("Unique singers: \(uniqueSingers.count)")
</code></pre>
<p>I actually got stuck for a moment.</p>
<p>When I read "unique items," my first thought was to create another array.</p>
<p>It didn't click immediately that a <code>Set</code> was exactly what Swift had designed for this kind of problem.</p>
<p>The moment I converted the array into a set, the duplicates disappeared automatically.</p>
<p>It was a small reminder that understanding the available tools is often more valuable than writing more code.</p>
<h2 id="understanding-the-language-not-just-the-syntax"><a href="https://writing.iambhvsh.in/day-4-type-annotations/#understanding-the-language-not-just-the-syntax">Understanding the Language, Not Just the Syntax</a></h2>
<p>Every lesson so far has made one thing increasingly clear.</p>
<p>Learning Swift isn't about memorizing keywords.</p>
<p>It's about understanding why the language behaves the way it does.</p>
<p>Today wasn't filled with flashy features or complicated algorithms.</p>
<p>Instead, it helped me understand how Swift thinks.</p>
<p>When it can infer information.</p>
<p>When it needs guidance.</p>
<p>And when being explicit makes code easier for both the compiler and other developers to understand.</p>
<p>Those aren't the kinds of lessons that produce exciting screenshots.</p>
<p>But they quietly build the foundation for everything that comes next.</p>
<h2 id="looking-ahead"><a href="https://writing.iambhvsh.in/day-4-type-annotations/#looking-ahead">Looking Ahead</a></h2>
<p>Four days into learning Swift, I'm beginning to notice a pattern.</p>
<p>Every feature feels intentional.</p>
<p>Swift tries to reduce unnecessary code without hiding important details.</p>
<p>It gives me sensible defaults while still allowing me to be explicit whenever I need to.</p>
<p>The more I learn, the more I appreciate that balance.</p>
<p>I'm still a long way from building polished apps, but every lesson makes the language feel a little more familiar than it did yesterday.</p>
<h2 id="day-4-code"><a href="https://writing.iambhvsh.in/day-4-type-annotations/#day-4-code">Day 4 Code</a></h2>
<p>The complete code from today's learning session is available here:</p>
<ul>
<li><a href="https://writing.iambhvsh.in/day-4-type-annotations/type-annotations.swift">type-annotations.swift</a></li>
</ul>]]></content:encoded>
    </item>
    <item>
      <title><![CDATA[Day 3: Understanding Collection Types and Enums in Swift]]></title>
      <description><![CDATA[Today I learned Swift's collection types including arrays, dictionaries, sets, and enumerations. I explored how Swift organizes data, why different…]]></description>
      <link>https://writing.iambhvsh.in/day-3-swift-collection-types</link>
      <guid isPermaLink="true">https://writing.iambhvsh.in/day-3-swift-collection-types</guid>
      <pubDate>Fri, 26 Jun 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://writing.iambhvsh.in/_app/immutable/assets/cover.C_5qALaT.jpg" length="44057" type="image/jpeg" />
      <author>iambhvsh@proton.me (Bhavesh Patil)</author>
      <dc:creator><![CDATA[Bhavesh Patil]]></dc:creator>
      <category><![CDATA[Swift]]></category>
      <category><![CDATA[Swift Programming]]></category>
      <category><![CDATA[Swift Tutorial]]></category>
      <category><![CDATA[SwiftUI]]></category>
      <category><![CDATA[iOS Development]]></category>
      <category><![CDATA[Apple Development]]></category>
      <content:encoded><![CDATA[<h2 id="table-of-contents"><a href="https://writing.iambhvsh.in/day-3-swift-collection-types/#table-of-contents">Table of Contents</a></h2>
<ul>
<li><a href="https://writing.iambhvsh.in/day-3-swift-collection-types/#organizing-data-instead-of-just-storing-it">Organizing Data Instead of Just Storing It</a></li>
<li><a href="https://writing.iambhvsh.in/day-3-swift-collection-types/#arrays-ordered-collections">Arrays: Ordered Collections</a></li>
<li><a href="https://writing.iambhvsh.in/day-3-swift-collection-types/#learning-that-arrays-have-types">Learning That Arrays Have Types</a></li>
<li><a href="https://writing.iambhvsh.in/day-3-swift-collection-types/#sorting-and-reversing">Sorting and Reversing</a></li>
<li><a href="https://writing.iambhvsh.in/day-3-swift-collection-types/#dictionaries-looking-up-information">Dictionaries: Looking Up Information</a></li>
<li><a href="https://writing.iambhvsh.in/day-3-swift-collection-types/#sets-unique-values-only">Sets: Unique Values Only</a></li>
<li><a href="https://writing.iambhvsh.in/day-3-swift-collection-types/#enums-fixed-choices">Enums: Fixed Choices</a></li>
<li><a href="https://writing.iambhvsh.in/day-3-swift-collection-types/#debugging-taught-me-as-much-as-coding">Debugging Taught Me As Much As Coding</a></li>
<li><a href="https://writing.iambhvsh.in/day-3-swift-collection-types/#a-bigger-picture-is-starting-to-form">A Bigger Picture Is Starting to Form</a></li>
<li><a href="https://writing.iambhvsh.in/day-3-swift-collection-types/#looking-ahead">Looking Ahead</a></li>
<li><a href="https://writing.iambhvsh.in/day-3-swift-collection-types/#day-3-code">Day 3 Code</a></li>
</ul>
<h2 id="organizing-data-instead-of-just-storing-it"><a href="https://writing.iambhvsh.in/day-3-swift-collection-types/#organizing-data-instead-of-just-storing-it">Organizing Data Instead of Just Storing It</a></h2>
<p>The first two days were focused on learning Swift's basic building blocks.</p>
<p>Variables.</p>
<p>Constants.</p>
<p>Strings.</p>
<p>Booleans.</p>
<p>Today felt different.</p>
<p>Instead of learning new data types, I learned how Swift organizes information.</p>
<p>As programs become larger, storing a single value isn't enough.</p>
<p>Sometimes you need a list of names.</p>
<p>Sometimes you need to look up information using a key.</p>
<p>Sometimes duplicate values don't make sense.</p>
<p>And sometimes a value should only ever be one of a fixed number of choices.</p>
<p>Swift has different collection types for each of those situations.</p>
<p>Understanding when to use each one was easily the biggest lesson of today.</p>
<h2 id="arrays-ordered-collections"><a href="https://writing.iambhvsh.in/day-3-swift-collection-types/#arrays-ordered-collections">Arrays: Ordered Collections</a></h2>
<p>The first collection type I explored was the array.</p>
<p>Arrays store multiple values while preserving the order they were added.</p>
<pre><code class="language-swift">var names = [
    "Steve Jobs",
    "Steve Wozniak",
    "Tim Cook",
    "Elon Musk"
]
</code></pre>
<p>Accessing values is straightforward.</p>
<pre><code class="language-swift">print(names[0])
</code></pre>
<p>Arrays use zero-based indexing, so the first element is always at index <code>0</code>.</p>
<p>Along the way I experimented with a number of built-in array methods.</p>
<p>Adding values:</p>
<pre><code class="language-swift">names.append("Sundar Pichai")
</code></pre>
<p>Counting values:</p>
<pre><code class="language-swift">print(names.count)
</code></pre>
<p>Searching:</p>
<pre><code class="language-swift">print(names.contains("Tim Cook"))
</code></pre>
<p>Removing values:</p>
<pre><code class="language-swift">names.remove(at: 2)
</code></pre>
<p>Clearing everything:</p>
<pre><code class="language-swift">names.removeAll()
</code></pre>
<p>What stood out was how descriptive Swift's API is.</p>
<p>Methods like <code>append()</code>, <code>contains()</code>, and <code>removeAll()</code> explain exactly what they're doing.</p>
<p>There's very little guesswork.</p>
<h2 id="learning-that-arrays-have-types"><a href="https://writing.iambhvsh.in/day-3-swift-collection-types/#learning-that-arrays-have-types">Learning That Arrays Have Types</a></h2>
<p>One interesting thing I learned is that arrays aren't limited to integers.</p>
<p>Swift can infer the type automatically.</p>
<pre><code class="language-swift">var temperatures = [23.4, 26.8, 31.5]
</code></pre>
<p>Or I can declare the type explicitly.</p>
<pre><code class="language-swift">var people: [String] = []
</code></pre>
<p>I also discovered two equivalent ways of creating empty arrays.</p>
<pre><code class="language-swift">var characters = Array&#x3C;String>()
</code></pre>
<p>and</p>
<pre><code class="language-swift">var characters = [String]()
</code></pre>
<p>The second version is simply shorthand.</p>
<p>Both create exactly the same type of array.</p>
<h2 id="sorting-and-reversing"><a href="https://writing.iambhvsh.in/day-3-swift-collection-types/#sorting-and-reversing">Sorting and Reversing</a></h2>
<p>Swift also provides methods for organizing data.</p>
<p>Sorting an array is as simple as:</p>
<pre><code class="language-swift">print(alphabets.sorted())
</code></pre>
<p>One thing that confused me initially was <code>reversed()</code>.</p>
<pre><code class="language-swift">print(alphabets.reversed())
</code></pre>
<p>Instead of printing a reversed array, Swift returned a <code>ReversedCollection</code>.</p>
<p>After learning why, it actually made sense.</p>
<p>Rather than creating an entirely new array immediately, Swift returns a lightweight view over the original collection.</p>
<p>If I really want a new array, I can convert it.</p>
<pre><code class="language-swift">print(Array(alphabets.reversed()))
</code></pre>
<p>Small implementation details like this show that Swift often favors efficiency alongside readability.</p>
<h2 id="dictionaries-looking-up-information"><a href="https://writing.iambhvsh.in/day-3-swift-collection-types/#dictionaries-looking-up-information">Dictionaries: Looking Up Information</a></h2>
<p>The next collection type was dictionaries.</p>
<p>Unlike arrays, dictionaries don't use numeric indexes.</p>
<p>Instead, they store values using keys.</p>
<pre><code class="language-swift">let truth = [
    "Swift is fast": true,
    "Swift is easy": true
]
</code></pre>
<p>Accessing a value looks like this.</p>
<pre><code class="language-swift">print(truth["Swift is fast"])
</code></pre>
<p>I also learned that dictionary lookups return optional values because a key may not exist.</p>
<p>Providing a default value avoids dealing with missing keys.</p>
<pre><code class="language-swift">print(truth["Swift is fast", default: false])
</code></pre>
<p>One mistake I made during today's lesson was trying to store multiple singers inside a single dictionary using identical keys.</p>
<pre><code class="language-swift">[
    "Name": "...",
    "Name": "..."
]
</code></pre>
<p>Swift simply replaces the earlier value because dictionary keys must always be unique.</p>
<p>The correct solution was using an array of dictionaries.</p>
<pre><code class="language-swift">let singers = [
    [
        "Name": "Elizabeth Woolridge Grant",
        "Nickname": "Lana Del Rey"
    ],
    [
        "Name": "Taylor Swift",
        "Nickname": "Taylor"
    ]
]
</code></pre>
<p>That was a good reminder that choosing the right data structure is just as important as writing the code itself.</p>
<h2 id="sets-unique-values-only"><a href="https://writing.iambhvsh.in/day-3-swift-collection-types/#sets-unique-values-only">Sets: Unique Values Only</a></h2>
<p>Sets felt similar to arrays at first.</p>
<p>The biggest difference is that sets automatically remove duplicate values.</p>
<pre><code class="language-swift">var breeds = Set&#x3C;String>()

breeds.insert("Labrador")
breeds.insert("Labrador")
breeds.insert("German Shepherd")
</code></pre>
<p>Even though <code>"Labrador"</code> was inserted twice, it only appears once.</p>
<p>Another important characteristic is that sets don't preserve order.</p>
<p>If ordering matters, arrays are the better choice.</p>
<p>If uniqueness and fast lookups matter, sets are often the better option.</p>
<p>It's another example of Swift providing specialized tools for different situations.</p>
<h2 id="enums-fixed-choices"><a href="https://writing.iambhvsh.in/day-3-swift-collection-types/#enums-fixed-choices">Enums: Fixed Choices</a></h2>
<p>The final topic today was enumerations, usually shortened to enums.</p>
<p>Enums define a fixed set of possible values.</p>
<pre><code class="language-swift">enum Weekday {
    case monday
    case tuesday
    case wednesday
    case thursday
    case friday
    case saturday
    case sunday
}
</code></pre>
<p>Instead of using strings everywhere, Swift lets you work with meaningful values.</p>
<pre><code class="language-swift">var day = Weekday.monday

day = .friday
</code></pre>
<p>I also learned about raw values.</p>
<pre><code class="language-swift">enum Singer: String {
    case taylorSwift = "Taylor Swift"
}
</code></pre>
<p>This allows me to access either the enum case itself.</p>
<pre><code class="language-swift">Singer.taylorSwift
</code></pre>
<p>or its underlying string.</p>
<pre><code class="language-swift">Singer.taylorSwift.rawValue
</code></pre>
<p>Enums already feel like they'll become incredibly useful once I start building real applications.</p>
<h2 id="debugging-taught-me-as-much-as-coding"><a href="https://writing.iambhvsh.in/day-3-swift-collection-types/#debugging-taught-me-as-much-as-coding">Debugging Taught Me As Much As Coding</a></h2>
<p>Today's lesson wasn't only about new features.</p>
<p>It also involved fixing several mistakes.</p>
<p>I accidentally redeclared variables.</p>
<p>I misunderstood how dictionaries store multiple objects.</p>
<p>I discovered why <code>reversed()</code> doesn't immediately return an array.</p>
<p>I even learned that enum cases can't contain spaces and that commas inside enum declarations follow different rules than I initially expected.</p>
<p>Every error ended up teaching me something new about how Swift works.</p>
<h2 id="a-bigger-picture-is-starting-to-form"><a href="https://writing.iambhvsh.in/day-3-swift-collection-types/#a-bigger-picture-is-starting-to-form">A Bigger Picture Is Starting to Form</a></h2>
<p>After three days, Swift feels very intentional.</p>
<p>Arrays solve one problem.</p>
<p>Dictionaries solve another.</p>
<p>Sets solve another.</p>
<p>Enums prevent invalid values entirely.</p>
<p>Rather than trying to make one data structure handle every situation, Swift provides specialized tools for different kinds of data.</p>
<p>That makes code easier to understand and much safer to work with.</p>
<p>I'm beginning to see that learning Swift isn't just about memorizing syntax.</p>
<p>It's about learning which tool fits which problem.</p>
<h2 id="looking-ahead"><a href="https://writing.iambhvsh.in/day-3-swift-collection-types/#looking-ahead">Looking Ahead</a></h2>
<p>Three days in, and I still haven't built a user interface.</p>
<p>No SwiftUI.</p>
<p>No views.</p>
<p>No buttons.</p>
<p>Just the language.</p>
<p>Surprisingly, I'm enjoying that.</p>
<p>Each day builds another layer of understanding, and it already feels much easier to read Swift code than it did when I started.</p>
<p>I'm excited to see how these collection types eventually fit into real apps.</p>
<p>Three days down.</p>
<p>Ninety-seven to go.</p>
<h2 id="day-3-code"><a href="https://writing.iambhvsh.in/day-3-swift-collection-types/#day-3-code">Day 3 Code</a></h2>
<p>The complete code from today's learning session is available here:</p>
<ul>
<li><a href="https://writing.iambhvsh.in/day-3-swift-collection-types/collection-types.swift">collection-types.swift</a></li>
</ul>]]></content:encoded>
    </item>
    <item>
      <title><![CDATA[Day 2: Thinking in Swift]]></title>
      <description><![CDATA[Today I explored Booleans, string interpolation, expressions, and completed my first Swift checkpoint by building a Celsius to Fahrenheit converter.]]></description>
      <link>https://writing.iambhvsh.in/day-2-thinking-in-swift</link>
      <guid isPermaLink="true">https://writing.iambhvsh.in/day-2-thinking-in-swift</guid>
      <pubDate>Thu, 25 Jun 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://writing.iambhvsh.in/_app/immutable/assets/cover.BpC3kFh2.jpg" length="49618" type="image/jpeg" />
      <author>iambhvsh@proton.me (Bhavesh Patil)</author>
      <dc:creator><![CDATA[Bhavesh Patil]]></dc:creator>
      <category><![CDATA[Swift]]></category>
      <category><![CDATA[Swift Language]]></category>
      <category><![CDATA[Apple Development]]></category>
      <category><![CDATA[Swift Basics]]></category>
      <category><![CDATA[iOS Development]]></category>
      <category><![CDATA[Learning in Public]]></category>
      <category><![CDATA[100 Days of SwiftUI]]></category>
      <category><![CDATA[Programming]]></category>
      <content:encoded><![CDATA[<h2 id="table-of-contents"><a href="https://writing.iambhvsh.in/day-2-thinking-in-swift/#table-of-contents">Table of Contents</a></h2>
<ul>
<li><a href="https://writing.iambhvsh.in/day-2-thinking-in-swift/#thinking-beyond-syntax">Thinking Beyond Syntax</a></li>
<li><a href="https://writing.iambhvsh.in/day-2-thinking-in-swift/#exploring-booleans">Exploring Booleans</a></li>
<li><a href="https://writing.iambhvsh.in/day-2-thinking-in-swift/#changing-boolean-values">Changing Boolean Values</a></li>
<li><a href="https://writing.iambhvsh.in/day-2-thinking-in-swift/#joining-strings">Joining Strings</a></li>
<li><a href="https://writing.iambhvsh.in/day-2-thinking-in-swift/#string-interpolation">String Interpolation</a></li>
<li><a href="https://writing.iambhvsh.in/day-2-thinking-in-swift/#expressions-inside-strings">Expressions Inside Strings</a></li>
<li><a href="https://writing.iambhvsh.in/day-2-thinking-in-swift/#my-first-swift-checkpoint">My First Swift Checkpoint</a></li>
<li><a href="https://writing.iambhvsh.in/day-2-thinking-in-swift/#a-pattern-is-emerging">A Pattern Is Emerging</a></li>
<li><a href="https://writing.iambhvsh.in/day-2-thinking-in-swift/#looking-ahead">Looking Ahead</a></li>
<li><a href="https://writing.iambhvsh.in/day-2-thinking-in-swift/#day-2-code">Day 2 Code</a></li>
</ul>
<h2 id="thinking-beyond-syntax"><a href="https://writing.iambhvsh.in/day-2-thinking-in-swift/#thinking-beyond-syntax">Thinking Beyond Syntax</a></h2>
<p>Yesterday was about getting comfortable with Swift's syntax.</p>
<p>Today was about understanding how Swift wants developers to think.</p>
<p>The concepts themselves weren't particularly difficult.</p>
<p>Booleans.</p>
<p>String interpolation.</p>
<p>A simple temperature conversion.</p>
<p>Yet every topic revealed something about the language's philosophy.</p>
<p>Swift consistently encourages writing code that's expressive, intentional, and easy to read. Rather than relying on clever shortcuts, it nudges you toward writing code that explains itself.</p>
<p>That became much more apparent today.</p>
<h2 id="exploring-booleans"><a href="https://writing.iambhvsh.in/day-2-thinking-in-swift/#exploring-booleans">Exploring Booleans</a></h2>
<p>A Boolean is one of the simplest types in programming.</p>
<p>It can only be one of two values.</p>
<pre><code class="language-swift">var isMovieGood = false
</code></pre>
<p>While that seems straightforward, what interested me more was how naturally Swift lets you work with Boolean values.</p>
<p>For example, checking whether a number is divisible by another number:</p>
<pre><code class="language-swift">let number = 120

print(number.isMultiple(of: 3))
</code></pre>
<p>Or checking whether a string ends with a particular word:</p>
<pre><code class="language-swift">let name = "Peter Benjamin Parker"

print(name.hasSuffix("Parker"))
</code></pre>
<p>Both methods return either <code>true</code> or <code>false</code>.</p>
<p>More importantly, they read almost like plain English.</p>
<p>Instead of writing complicated conditions, Swift gives you descriptive methods that immediately communicate what the code is doing.</p>
<h2 id="changing-boolean-values"><a href="https://writing.iambhvsh.in/day-2-thinking-in-swift/#changing-boolean-values">Changing Boolean Values</a></h2>
<p>I also learned two different ways to flip a Boolean.</p>
<p>The first uses the logical NOT operator.</p>
<pre><code class="language-swift">isMovieGood = !isMovieGood
</code></pre>
<p>The second uses Swift's built-in <code>toggle()</code> method.</p>
<pre><code class="language-swift">isMovieGood.toggle()
</code></pre>
<p>Both achieve exactly the same result.</p>
<p>Personally, I find <code>toggle()</code> easier to read because it describes the intention instead of the implementation.</p>
<p>Small details like this make Swift feel very approachable.</p>
<h2 id="joining-strings"><a href="https://writing.iambhvsh.in/day-2-thinking-in-swift/#joining-strings">Joining Strings</a></h2>
<p>The next topic was creating longer strings from smaller pieces.</p>
<p>The first approach uses string concatenation.</p>
<pre><code class="language-swift">print("My name is " + firstName + " " + lastName + " and I'm " + String(age) + " years old!")
</code></pre>
<p>It works perfectly.</p>
<p>But it also involves a lot of manual work.</p>
<p>Spaces have to be inserted manually.</p>
<p>Numbers have to be converted into strings.</p>
<p>As the sentence grows longer, the code becomes harder to read.</p>
<h2 id="string-interpolation"><a href="https://writing.iambhvsh.in/day-2-thinking-in-swift/#string-interpolation">String Interpolation</a></h2>
<p>Swift's preferred solution is string interpolation.</p>
<pre><code class="language-swift">print("My name is \(firstName) \(lastName) and I'm \(age) years old!")
</code></pre>
<p>The output is identical.</p>
<p>The difference is readability.</p>
<p>The code almost looks exactly like the final sentence, while Swift automatically converts values like integers into text.</p>
<p>Coming from JavaScript, it reminded me of template literals, but Swift's syntax feels even cleaner because it's built directly into the language.</p>
<p>I can already tell this will become my default way of creating strings.</p>
<h2 id="expressions-inside-strings"><a href="https://writing.iambhvsh.in/day-2-thinking-in-swift/#expressions-inside-strings">Expressions Inside Strings</a></h2>
<p>One feature I wasn't expecting was that string interpolation isn't limited to variables.</p>
<p>It can also evaluate expressions.</p>
<pre><code class="language-swift">print("5 × 5 = \(5 * 5)")
</code></pre>
<p>Output:</p>
<pre><code class="language-text">5 × 5 = 25
</code></pre>
<p>Anything placed inside <code>\( )</code> is evaluated before becoming part of the final string.</p>
<p>It's a simple feature, but it makes creating dynamic text incredibly flexible.</p>
<h2 id="my-first-swift-checkpoint"><a href="https://writing.iambhvsh.in/day-2-thinking-in-swift/#my-first-swift-checkpoint">My First Swift Checkpoint</a></h2>
<p>The highlight of today's lesson was completing my first checkpoint.</p>
<p>The challenge was simple.</p>
<p>Write a program that converts Celsius to Fahrenheit.</p>
<pre><code class="language-swift">let tempInCelsius = 23.0
let tempInFahrenheit = (tempInCelsius * 9 / 5) + 32

print("""
Temperature in Celsius: \(tempInCelsius)°C
Temperature in Fahrenheit: \(tempInFahrenheit)°F
""")
</code></pre>
<p>At first I used an <code>Int</code>.</p>
<p>It worked for whole numbers, but I quickly realized temperatures aren't always whole numbers.</p>
<p>Changing the values to <code>Double</code> made the program work correctly for decimal temperatures as well.</p>
<p>It was a small adjustment, but a good reminder that choosing the correct data type matters just as much as writing the formula itself.</p>
<h2 id="a-pattern-is-emerging"><a href="https://writing.iambhvsh.in/day-2-thinking-in-swift/#a-pattern-is-emerging">A Pattern Is Emerging</a></h2>
<p>After only two days, I'm starting to notice a recurring pattern.</p>
<p>Swift places a huge emphasis on readability.</p>
<p>Methods like:</p>
<pre><code class="language-swift">number.isMultiple(of: 3)
</code></pre>
<p>and</p>
<pre><code class="language-swift">name.hasSuffix("Parker")
</code></pre>
<p>read almost like normal English.</p>
<p>String interpolation removes unnecessary complexity.</p>
<p>Methods have descriptive names.</p>
<p>The language consistently encourages code that's easy to understand—not only for the compiler, but also for the person reading it.</p>
<p>That's something I'm appreciating more with every lesson.</p>
<h2 id="looking-ahead"><a href="https://writing.iambhvsh.in/day-2-thinking-in-swift/#looking-ahead">Looking Ahead</a></h2>
<p>I'm still nowhere near building apps.</p>
<p>No SwiftUI.</p>
<p>No views.</p>
<p>No buttons.</p>
<p>Just learning the language itself.</p>
<p>It's tempting to jump straight into creating interfaces, but building a solid understanding of Swift first feels like the right decision.</p>
<p>Every concept I learn now will make everything that comes later easier to understand.</p>
<p>Two days down.</p>
<p>Ninety-eight to go.</p>
<h2 id="day-2-code"><a href="https://writing.iambhvsh.in/day-2-thinking-in-swift/#day-2-code">Day 2 Code</a></h2>
<p>The complete code from today's learning session is available here:</p>
<ul>
<li><a href="https://writing.iambhvsh.in/day-2-thinking-in-swift/booleans-and-strings.swift">booleans-and-strings.swift</a></li>
</ul>]]></content:encoded>
    </item>
    <item>
      <title><![CDATA[Day 1: Writing My First Swift Code]]></title>
      <description><![CDATA[Today I wrote my first real Swift code. Variables, constants, strings, interpolation, properties, methods, numbers, and discovering how Swift encourages…]]></description>
      <link>https://writing.iambhvsh.in/day-1-writing-my-first-swift-code</link>
      <guid isPermaLink="true">https://writing.iambhvsh.in/day-1-writing-my-first-swift-code</guid>
      <pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://writing.iambhvsh.in/_app/immutable/assets/cover.BF85KhTG.jpg" length="29365" type="image/jpeg" />
      <author>iambhvsh@proton.me (Bhavesh Patil)</author>
      <dc:creator><![CDATA[Bhavesh Patil]]></dc:creator>
      <category><![CDATA[Swift]]></category>
      <category><![CDATA[SwiftUI]]></category>
      <category><![CDATA[Apple Development]]></category>
      <category><![CDATA[iOS Development]]></category>
      <category><![CDATA[Programming]]></category>
      <category><![CDATA[Learning in Public]]></category>
      <category><![CDATA[100 Days of SwiftUI]]></category>
      <content:encoded><![CDATA[<h2 id="table-of-contents"><a href="https://writing.iambhvsh.in/day-1-writing-my-first-swift-code/#table-of-contents">Table of Contents</a></h2>
<ul>
<li><a href="https://writing.iambhvsh.in/day-1-writing-my-first-swift-code/#the-first-lines-of-swift">The First Lines of Swift</a></li>
<li><a href="https://writing.iambhvsh.in/day-1-writing-my-first-swift-code/#variables-and-constants">Variables and Constants</a></li>
<li><a href="https://writing.iambhvsh.in/day-1-writing-my-first-swift-code/#string-interpolation">String Interpolation</a></li>
<li><a href="https://writing.iambhvsh.in/day-1-writing-my-first-swift-code/#multiline-strings">Multiline Strings</a></li>
<li><a href="https://writing.iambhvsh.in/day-1-writing-my-first-swift-code/#properties-and-methods">Properties and Methods</a></li>
<li><a href="https://writing.iambhvsh.in/day-1-writing-my-first-swift-code/#exploring-strings">Exploring Strings</a></li>
<li><a href="https://writing.iambhvsh.in/day-1-writing-my-first-swift-code/#numbers-and-readability">Numbers and Readability</a></li>
<li><a href="https://writing.iambhvsh.in/day-1-writing-my-first-swift-code/#compound-assignment-operators">Compound Assignment Operators</a></li>
<li><a href="https://writing.iambhvsh.in/day-1-writing-my-first-swift-code/#discovering-types">Discovering Types</a></li>
<li><a href="https://writing.iambhvsh.in/day-1-writing-my-first-swift-code/#arithmetic">Arithmetic</a></li>
<li><a href="https://writing.iambhvsh.in/day-1-writing-my-first-swift-code/#what-stood-out-most">What Stood Out Most</a></li>
<li><a href="https://writing.iambhvsh.in/day-1-writing-my-first-swift-code/#looking-ahead">Looking Ahead</a></li>
<li><a href="https://writing.iambhvsh.in/day-1-writing-my-first-swift-code/#day-1-code">Day 1 Code</a></li>
</ul>
<h2 id="the-first-lines-of-swift"><a href="https://writing.iambhvsh.in/day-1-writing-my-first-swift-code/#the-first-lines-of-swift">The First Lines of Swift</a></h2>
<p>Yesterday was about understanding the roadmap.</p>
<p>Today was about writing code.</p>
<p>Not SwiftUI.</p>
<p>Not iOS applications.</p>
<p>Not user interfaces.</p>
<p>Just Swift.</p>
<p>After spending years building for the web, learning a new programming language feels strangely familiar and completely different at the same time.</p>
<p>Many concepts carry over.</p>
<p>Variables.</p>
<p>Strings.</p>
<p>Numbers.</p>
<p>Functions.</p>
<p>Yet Swift approaches these concepts with a level of clarity that immediately stood out to me.</p>
<p>Rather than trying to do everything, Swift seems focused on helping developers express intent as clearly as possible.</p>
<p>That became obvious within the first few hours.</p>
<h2 id="variables-and-constants"><a href="https://writing.iambhvsh.in/day-1-writing-my-first-swift-code/#variables-and-constants">Variables and Constants</a></h2>
<p>One of the first concepts introduced was the difference between variables and constants.</p>
<pre><code class="language-swift">var age = 18

let firstName = "Peter"
let middleName = "Benjamin"
let lastName = "Parker"
</code></pre>
<p>Values created with <code>var</code> can change.</p>
<p>Values created with <code>let</code> cannot.</p>
<p>At first, this seemed like a small distinction.</p>
<p>The more I worked with it, the more I understood why Swift encourages it so heavily.</p>
<p>The language wants you to think about which values are actually meant to change.</p>
<p>If something should remain constant, Swift encourages you to make that intention explicit.</p>
<p>It's a simple idea, but it makes code easier to reason about.</p>
<h2 id="string-interpolation"><a href="https://writing.iambhvsh.in/day-1-writing-my-first-swift-code/#string-interpolation">String Interpolation</a></h2>
<p>Once I had some values to work with, the next step was combining them.</p>
<pre><code class="language-swift">let fullName = "\(firstName) \(middleName) \(lastName)"
</code></pre>
<p>This creates:</p>
<pre><code class="language-text">Peter Benjamin Parker
</code></pre>
<p>Coming from JavaScript, it felt somewhat similar to template literals.</p>
<p>What I liked immediately was how readable it is.</p>
<p>The code closely resembles the final result.</p>
<p>That theme appears throughout Swift.</p>
<h2 id="multiline-strings"><a href="https://writing.iambhvsh.in/day-1-writing-my-first-swift-code/#multiline-strings">Multiline Strings</a></h2>
<p>The next discovery was multiline strings.</p>
<pre><code class="language-swift">let bio = """
Peter Benjamin Parker is a young photographer and science enthusiast from New York City.

After being bitten by a radioactive spider, he gained extraordinary abilities and became Spider-Man.
"""
</code></pre>
<p>I ended up liking this feature more than I expected.</p>
<p>The formatting inside the code mirrors the formatting of the final output.</p>
<p>No repeated newline characters.</p>
<p>No awkward string concatenation.</p>
<p>Just text.</p>
<p>As someone who writes a lot of content, that feels surprisingly natural.</p>
<h2 id="properties-and-methods"><a href="https://writing.iambhvsh.in/day-1-writing-my-first-swift-code/#properties-and-methods">Properties and Methods</a></h2>
<p>One of the most interesting things I learned today was the difference between properties and methods.</p>
<p>Consider this example:</p>
<pre><code class="language-swift">let name = "Peter Parker"

print(name.count)
</code></pre>
<p>Output:</p>
<pre><code class="language-text">12
</code></pre>
<p>Notice that <code>count</code> doesn't use parentheses.</p>
<p>That's because Swift is simply reading information.</p>
<p>Nothing is being transformed.</p>
<p>Nothing is being calculated beyond retrieving a value that already exists.</p>
<p>Now compare that to:</p>
<pre><code class="language-swift">print(name.uppercased())
</code></pre>
<p>Output:</p>
<pre><code class="language-text">PETER PARKER
</code></pre>
<p>Here we use parentheses.</p>
<p>Why?</p>
<p>Because Swift is doing work.</p>
<p>It takes the original string, creates an uppercase version, and returns the result.</p>
<p>This pattern appears throughout Swift:</p>
<ul>
<li>Properties describe data.</li>
<li>Methods perform work.</li>
</ul>
<p>Once I understood that distinction, many APIs immediately made more sense.</p>
<h2 id="exploring-strings"><a href="https://writing.iambhvsh.in/day-1-writing-my-first-swift-code/#exploring-strings">Exploring Strings</a></h2>
<p>With that understanding, I started experimenting with Swift's string APIs.</p>
<pre><code class="language-swift">fullName.count

fullName.lowercased()
fullName.uppercased()

bio.hasPrefix("Peter")
bio.contains("Spider-Man")
bio.hasSuffix("superheroes.")
</code></pre>
<p>One thing I noticed is how naturally these APIs read.</p>
<p>For example:</p>
<pre><code class="language-swift">bio.hasPrefix("Peter")
</code></pre>
<p>reads almost like a sentence.</p>
<p>The same applies to:</p>
<pre><code class="language-swift">age.isMultiple(of: 3)
</code></pre>
<p>Swift places a lot of emphasis on readability, and it shows.</p>
<h2 id="numbers-and-readability"><a href="https://writing.iambhvsh.in/day-1-writing-my-first-swift-code/#numbers-and-readability">Numbers and Readability</a></h2>
<p>Swift handles whole numbers exactly as you'd expect.</p>
<pre><code class="language-swift">let million = 1000000
let billion = 1000000000
</code></pre>
<p>The problem is that large numbers quickly become difficult to read.</p>
<p>Swift solves this with underscores.</p>
<pre><code class="language-swift">let million = 1_000_000
let billion = 1_000_000_000
</code></pre>
<p>The underscores don't change the value.</p>
<p>Swift completely ignores them.</p>
<p>They're simply there to help humans read the code.</p>
<p>I also found it interesting that Swift doesn't care where the underscores are placed.</p>
<p>For example:</p>
<pre><code class="language-swift">let lakh = 1_00_000
let crore = 1_00_00_000
</code></pre>
<p>These work perfectly as well.</p>
<p>The compiler sees the same number regardless.</p>
<h2 id="compound-assignment-operators"><a href="https://writing.iambhvsh.in/day-1-writing-my-first-swift-code/#compound-assignment-operators">Compound Assignment Operators</a></h2>
<p>Another small but useful concept was compound assignment operators.</p>
<p>Instead of writing:</p>
<pre><code class="language-swift">var age = 19

age = age + 1
</code></pre>
<p>Swift allows us to write:</p>
<pre><code class="language-swift">var age = 19

age += 1
</code></pre>
<p>Both approaches produce the same result.</p>
<p>The second version is simply shorter and easier to read.</p>
<p>Swift supports several compound assignment operators:</p>
<pre><code class="language-swift">var number = 10

number += 5
number -= 3
number *= 2
number /= 4
</code></pre>
<p>These are common throughout Swift code and quickly become second nature.</p>
<h2 id="discovering-types"><a href="https://writing.iambhvsh.in/day-1-writing-my-first-swift-code/#discovering-types">Discovering Types</a></h2>
<p>Another concept that stood out was type inference.</p>
<p>Consider these values:</p>
<pre><code class="language-swift">let a = 1.2
let b = 5
let c = "Hello, Swift!"
</code></pre>
<p>Without explicitly specifying types, Swift automatically understands them as:</p>
<ul>
<li>Double</li>
<li>Int</li>
<li>String</li>
</ul>
<p>You can inspect them directly:</p>
<pre><code class="language-swift">print(type(of: a))
print(type(of: b))
print(type(of: c))
</code></pre>
<p>Output:</p>
<pre><code class="language-text">Double
Int
String
</code></pre>
<p>This was a useful reminder that Swift is strongly typed while still remaining convenient to work with.</p>
<h2 id="arithmetic"><a href="https://writing.iambhvsh.in/day-1-writing-my-first-swift-code/#arithmetic">Arithmetic</a></h2>
<p>I also spent some time experimenting with basic arithmetic.</p>
<pre><code class="language-swift">let a = 1.2
let b = 1.000000000003

print(a + b)
print(a - b)
print(a * b)
print(a / b)
</code></pre>
<p>Nothing groundbreaking here.</p>
<p>But every language has its own way of handling numbers, and spending time experimenting helps build intuition.</p>
<p>Sometimes the simplest exercises teach the most.</p>
<h2 id="what-stood-out-most"><a href="https://writing.iambhvsh.in/day-1-writing-my-first-swift-code/#what-stood-out-most">What Stood Out Most</a></h2>
<p>The biggest lesson from Day 1 wasn't variables.</p>
<p>Or strings.</p>
<p>Or numbers.</p>
<p>It was how intentional Swift feels.</p>
<p>Many APIs read like English.</p>
<p>Many language features seem designed to prevent mistakes before they happen.</p>
<p>The language consistently encourages clarity over cleverness.</p>
<p>After years of writing JavaScript and TypeScript, that difference was immediately noticeable.</p>
<p>Not necessarily better.</p>
<p>Not necessarily worse.</p>
<p>Just different.</p>
<p>And that's exactly why I'm excited to keep learning.</p>
<h2 id="looking-ahead"><a href="https://writing.iambhvsh.in/day-1-writing-my-first-swift-code/#looking-ahead">Looking Ahead</a></h2>
<p>Today was about foundations.</p>
<p>Variables.</p>
<p>Constants.</p>
<p>Strings.</p>
<p>Numbers.</p>
<p>Types.</p>
<p>Nothing particularly complex.</p>
<p>But every application begins with these building blocks.</p>
<p>Tomorrow the journey continues with more of Swift's core language features.</p>
<p>One day down.</p>
<p>Ninety-nine to go.</p>
<h2 id="day-1-code"><a href="https://writing.iambhvsh.in/day-1-writing-my-first-swift-code/#day-1-code">Day 1 Code</a></h2>
<p>The complete code from today's learning session is available here:</p>
<ul>
<li><a href="https://writing.iambhvsh.in/day-1-writing-my-first-swift-code/fundamentals.swift">Fundamentals.swift</a></li>
</ul>]]></content:encoded>
    </item>
    <item>
      <title><![CDATA[Day 0: Beginning My Swift Journey with 100 Days of SwiftUI]]></title>
      <description><![CDATA[After years of web development, I'm learning Swift and SwiftUI for the first time. Follow my journey into Apple development through 100 Days of SwiftUI.]]></description>
      <link>https://writing.iambhvsh.in/day-0-beginning-my-swift-journey</link>
      <guid isPermaLink="true">https://writing.iambhvsh.in/day-0-beginning-my-swift-journey</guid>
      <pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://writing.iambhvsh.in/_app/immutable/assets/cover.BstJXcAY.jpg" length="40829" type="image/jpeg" />
      <author>iambhvsh@proton.me (Bhavesh Patil)</author>
      <dc:creator><![CDATA[Bhavesh Patil]]></dc:creator>
      <category><![CDATA[Swift]]></category>
      <category><![CDATA[SwiftUI]]></category>
      <category><![CDATA[Apple Development]]></category>
      <category><![CDATA[iOS Development]]></category>
      <category><![CDATA[Programming]]></category>
      <category><![CDATA[Learning in Public]]></category>
      <category><![CDATA[100 Days of SwiftUI]]></category>
      <content:encoded><![CDATA[<h2 id="table-of-contents"><a href="https://writing.iambhvsh.in/day-0-beginning-my-swift-journey/#table-of-contents">Table of Contents</a></h2>
<ul>
<li><a href="https://writing.iambhvsh.in/day-0-beginning-my-swift-journey/#the-language-behind-the-inspiration">The Language Behind the Inspiration</a></li>
<li><a href="https://writing.iambhvsh.in/day-0-beginning-my-swift-journey/#why-swift">Why Swift?</a></li>
<li><a href="https://writing.iambhvsh.in/day-0-beginning-my-swift-journey/#starting-without-apple-hardware">Starting Without Apple Hardware</a></li>
<li><a href="https://writing.iambhvsh.in/day-0-beginning-my-swift-journey/#beginning-with-100-days-of-swiftui">Beginning with 100 Days of SwiftUI</a></li>
<li><a href="https://writing.iambhvsh.in/day-0-beginning-my-swift-journey/#day-0-understanding-the-road-ahead">Day 0: Understanding the Road Ahead</a>
<ul>
<li><a href="https://writing.iambhvsh.in/day-0-beginning-my-swift-journey/#core-skills">Core Skills</a></li>
<li><a href="https://writing.iambhvsh.in/day-0-beginning-my-swift-journey/#extension-skills">Extension Skills</a></li>
<li><a href="https://writing.iambhvsh.in/day-0-beginning-my-swift-journey/#common-mistakes-worth-avoiding">Common Mistakes Worth Avoiding</a></li>
</ul>
</li>
<li><a href="https://writing.iambhvsh.in/day-0-beginning-my-swift-journey/#looking-ahead">Looking Ahead</a></li>
</ul>
<h2 id="the-language-behind-the-inspiration"><a href="https://writing.iambhvsh.in/day-0-beginning-my-swift-journey/#the-language-behind-the-inspiration">The Language Behind the Inspiration</a></h2>
<p>My programming journey began in 2022.</p>
<p>Like many developers, I did not discover programming through a classroom or a textbook. A friend introduced me to the world of software development, and what started as curiosity quickly turned into something much bigger.</p>
<p>I began where many modern developers begin: the web.</p>
<p>HTML, CSS, JavaScript, frameworks, APIs, deployments, and countless side projects filled the years that followed. Every new project taught me something. Every mistake revealed another lesson. Every challenge became an opportunity to improve.</p>
<p>The code I wrote in those early days was far from perfect.</p>
<p>Looking back, much of it was inconsistent, poorly structured, and held together more by enthusiasm than experience.</p>
<p>But that never really mattered.</p>
<p>When you're just starting, the goal is not to write perfect code. The goal is to build. To experiment. To learn. To discover what excites you enough to keep going.</p>
<p>Over time, something changed.</p>
<p>I became less interested in simply making software work and more interested in how software feels.</p>
<p>How interfaces communicate.</p>
<p>How consistency builds trust.</p>
<p>How thoughtful design removes friction.</p>
<p>How small details create memorable experiences.</p>
<p>Whether it's a button, a transition, a navigation pattern, or a single line of supporting text, I care about how it looks, how it behaves, and how it contributes to the overall experience.</p>
<p>A significant part of that influence came from Apple.</p>
<p>Not the hardware.</p>
<p>The software.</p>
<p>The consistency across products. The attention to detail. The focus on simplicity. The intentionality behind every interaction. The belief that technology should feel approachable, intuitive, and human.</p>
<p>Those ideas gradually shaped the way I think about software.</p>
<p>Many of the design decisions I make today can be traced back to principles I admired long before I ever considered learning Swift.</p>
<p>In many ways, Swift is not where that inspiration began.</p>
<p>It's where that inspiration eventually led.</p>
<h2 id="why-swift"><a href="https://writing.iambhvsh.in/day-0-beginning-my-swift-journey/#why-swift">Why Swift?</a></h2>
<p>Swift is Apple's modern programming language.</p>
<p>Fast.</p>
<p>Expressive.</p>
<p>Safe.</p>
<p>Designed to power everything from command-line tools and cloud services to applications running across iPhone, iPad, Mac, Apple Watch, and Apple TV.</p>
<p>What attracts me most is not just the language itself.</p>
<p>It's the ecosystem surrounding it.</p>
<p>For years, I've admired the way Apple approaches software design. The consistency across platforms. The shared design language. The seamless integration between devices. The idea that software and hardware should feel like parts of the same experience.</p>
<p>Swift sits at the center of that ecosystem.</p>
<p>Learning Swift means learning how those experiences are built.</p>
<p>Another reason is simple.</p>
<p>I wanted something different.</p>
<p>I've spent years building for the web. While I still enjoy web development, I wanted to challenge myself with a new platform, a new set of tools, and a different way of thinking about software.</p>
<p>Swift felt like the natural next step.</p>
<p>It combines modern language design, strong safety guarantees, excellent tooling, and the ability to build for an entire ecosystem using a shared foundation.</p>
<p>Write once.</p>
<p>Adapt across iPhone, iPad, Mac, Apple Watch, and Apple TV.</p>
<p>That idea is incredibly compelling.</p>
<h2 id="starting-without-apple-hardware"><a href="https://writing.iambhvsh.in/day-0-beginning-my-swift-journey/#starting-without-apple-hardware">Starting Without Apple Hardware</a></h2>
<p>One common misconception is that learning Apple development requires owning Apple hardware from day one.</p>
<p>Eventually, having a Mac becomes important.</p>
<p>But learning does not start with hardware.</p>
<p>Learning starts with curiosity.</p>
<p>I'm currently a third-year student.</p>
<p>I don't own a MacBook.</p>
<p>I don't own an iPhone.</p>
<p>Yet.</p>
<p>What I do have is access to excellent educational resources, documentation, community support, and a genuine interest in learning.</p>
<p>For now, that's enough.</p>
<p>The hardware can come later.</p>
<p>The foundation starts today.</p>
<h2 id="beginning-with-100-days-of-swiftui"><a href="https://writing.iambhvsh.in/day-0-beginning-my-swift-journey/#beginning-with-100-days-of-swiftui">Beginning with 100 Days of SwiftUI</a></h2>
<p>To begin this journey, I've chosen one of the most respected learning resources in the Swift community:</p>
<p><strong>100 Days of SwiftUI</strong> by Paul Hudson.</p>
<p>If you're interested in following along:</p>
<ul>
<li>https://www.hackingwithswift.com/100/swiftui</li>
<li>https://x.com/twostraws</li>
</ul>
<h2 id="day-0-understanding-the-road-ahead"><a href="https://writing.iambhvsh.in/day-0-beginning-my-swift-journey/#day-0-understanding-the-road-ahead">Day 0: Understanding the Road Ahead</a></h2>
<p>Interestingly, Day 0 wasn't about writing code.</p>
<p>There were no variables.</p>
<p>No functions.</p>
<p>No SwiftUI views.</p>
<p>No applications.</p>
<p>Instead, it focused on understanding the roadmap.</p>
<h3 id="core-skills"><a href="https://writing.iambhvsh.in/day-0-beginning-my-swift-journey/#core-skills">Core Skills</a></h3>
<ul>
<li>Swift</li>
<li>SwiftUI</li>
<li>Working with Data</li>
<li>Networking</li>
<li>Version Control</li>
</ul>
<h3 id="extension-skills"><a href="https://writing.iambhvsh.in/day-0-beginning-my-swift-journey/#extension-skills">Extension Skills</a></h3>
<ul>
<li>UIKit</li>
<li>Core Data</li>
<li>Multithreading</li>
<li>Architecture</li>
<li>Testing</li>
</ul>
<h3 id="common-mistakes-worth-avoiding"><a href="https://writing.iambhvsh.in/day-0-beginning-my-swift-journey/#common-mistakes-worth-avoiding">Common Mistakes Worth Avoiding</a></h3>
<ul>
<li>Trying to memorize everything</li>
<li>Shiny Object Syndrome</li>
<li>Lone Wolf Training</li>
<li>Using beta software</li>
<li>Starting with documentation</li>
<li>Getting lost in Objective-C</li>
<li>Taking shots at other languages</li>
</ul>
<h2 id="looking-ahead"><a href="https://writing.iambhvsh.in/day-0-beginning-my-swift-journey/#looking-ahead">Looking Ahead</a></h2>
<p>Today was not about building an app.</p>
<p>It was about understanding the journey.</p>
<p>Tomorrow begins with the fundamentals.</p>
<p>Variables.</p>
<p>Constants.</p>
<p>Data types.</p>
<p>Every developer starts somewhere.</p>
<p>Today was my first step into Swift.</p>
<p>And I'm excited to see where the next one hundred days lead.</p>]]></content:encoded>
    </item>
    <item>
      <title><![CDATA[Why Your AI Builds Look Like Everyone Else's]]></title>
      <description><![CDATA[On taste, judgment, and what actually separates quality software from the rest.]]></description>
      <link>https://writing.iambhvsh.in/why-your-ai-builds-look-like-everyone-elses</link>
      <guid isPermaLink="true">https://writing.iambhvsh.in/why-your-ai-builds-look-like-everyone-elses</guid>
      <pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://writing.iambhvsh.in/_app/immutable/assets/cover.CRZ4HW1u.png" length="36606" type="image/png" />
      <author>iambhvsh@proton.me (Bhavesh Patil)</author>
      <dc:creator><![CDATA[Bhavesh Patil]]></dc:creator>
      <category><![CDATA[vibe-coding]]></category>
      <category><![CDATA[ai]]></category>
      <category><![CDATA[craft]]></category>
      <category><![CDATA[software-quality]]></category>
      <category><![CDATA[product-design]]></category>
      <content:encoded><![CDATA[<h2 id="table-of-contents"><a href="https://writing.iambhvsh.in/why-your-ai-builds-look-like-everyone-elses/#table-of-contents">Table of Contents</a></h2>
<ul>
<li><a href="https://writing.iambhvsh.in/why-your-ai-builds-look-like-everyone-elses/#the-smallest-part">The smallest part</a></li>
<li><a href="https://writing.iambhvsh.in/why-your-ai-builds-look-like-everyone-elses/#what-the-model-reaches-for">What the model reaches for</a></li>
<li><a href="https://writing.iambhvsh.in/why-your-ai-builds-look-like-everyone-elses/#a-prompt-is-a-specification">A prompt is a specification</a></li>
<li><a href="https://writing.iambhvsh.in/why-your-ai-builds-look-like-everyone-elses/#three-days-one-new-language-one-real-product">Three days, one new language, one real product</a></li>
<li><a href="https://writing.iambhvsh.in/why-your-ai-builds-look-like-everyone-elses/#the-loop-that-most-people-run-halfway">The loop that most people run halfway</a></li>
<li><a href="https://writing.iambhvsh.in/why-your-ai-builds-look-like-everyone-elses/#what-consistency-actually-requires">What consistency actually requires</a></li>
<li><a href="https://writing.iambhvsh.in/why-your-ai-builds-look-like-everyone-elses/#the-structure-should-explain-itself">The structure should explain itself</a></li>
<li><a href="https://writing.iambhvsh.in/why-your-ai-builds-look-like-everyone-elses/#context-wears-out">Context wears out</a></li>
<li><a href="https://writing.iambhvsh.in/why-your-ai-builds-look-like-everyone-elses/#the-audit-nobody-runs">The audit nobody runs</a></li>
<li><a href="https://writing.iambhvsh.in/why-your-ai-builds-look-like-everyone-elses/#simplicity-is-not-fewer-features">Simplicity is not fewer features</a></li>
<li><a href="https://writing.iambhvsh.in/why-your-ai-builds-look-like-everyone-elses/#the-part-that-cannot-be-generated">The part that cannot be generated</a></li>
<li><a href="https://writing.iambhvsh.in/why-your-ai-builds-look-like-everyone-elses/#what-the-work-actually-asks-for">What the work actually asks for</a></li>
</ul>
<h2 id="the-smallest-part"><a href="https://writing.iambhvsh.in/why-your-ai-builds-look-like-everyone-elses/#the-smallest-part">The smallest part</a></h2>
<p>Most people think prompting is the hard part.</p>
<p>It is not.</p>
<p>Prompting is the last step in a long chain of decisions that most people never make. The thinking. The planning. The specification. The judgment about what this thing should actually be. The prompt arrives at the end of all that. It is the instruction, not the thought behind it.</p>
<p>Skip everything before the prompt and the prompt carries nothing. The model fills that space with the most common answer to the most common version of the request.</p>
<p>Averages are exactly what you get.</p>
<h2 id="what-the-model-reaches-for"><a href="https://writing.iambhvsh.in/why-your-ai-builds-look-like-everyone-elses/#what-the-model-reaches-for">What the model reaches for</a></h2>
<p>I have noticed something consistent across AI-generated interfaces.</p>
<p>The glowing dots. The floating cards. The gradient that starts indigo and fades into something only slightly different. The hero section that feels borrowed. The layout that could belong to a thousand products and therefore belongs to none of them.</p>
<p>This is not an AI problem. It is a specification problem.</p>
<p>AI does not invent. It completes. When a prompt is vague, the model reaches for the center of everything it has ever seen. It has no way of knowing what is specific about your product, your values, or your taste. It only knows what most people have built before.</p>
<p>So it builds that.</p>
<p>The model was not told what makes this different. So it made something safe.</p>
<p>Safe is average. Average is forgettable.</p>
<h2 id="a-prompt-is-a-specification"><a href="https://writing.iambhvsh.in/why-your-ai-builds-look-like-everyone-elses/#a-prompt-is-a-specification">A prompt is a specification</a></h2>
<p>Before I write a single line of instruction now, I stop and answer a harder question first.</p>
<p>What is this, exactly?</p>
<p>Not a category. Not a rough shape. The specific thing. The version that only makes sense in this context, for these people, with this particular feeling.</p>
<p>What is being built. Why it exists. Who it is for. What it should feel like to use. What it should never feel like. What problem it is solving and what problems it refuses to create. Design expectations. Functional constraints. The things out of scope named as clearly as the things that are in.</p>
<p>A prompt written after all of that is a different kind of instrument. It carries weight. It narrows the possibility space. It gives the model something to be precise about instead of something to average out.</p>
<p>The quality of the output reflects the quality of the thinking that came before it. Almost exactly.</p>
<figure><img src="https://writing.iambhvsh.in/why-your-ai-builds-look-like-everyone-elses/prompt-quality-vs-output-quality.webp" alt="Prompt Quality vs. Output Quality"><figcaption>Prompt Quality vs. Output Quality</figcaption></figure>
<h2 id="three-days-one-new-language-one-real-product"><a href="https://writing.iambhvsh.in/why-your-ai-builds-look-like-everyone-elses/#three-days-one-new-language-one-real-product">Three days, one new language, one real product</a></h2>
<p>I want to make this concrete, because it is easy to read advice like this and assume it applies to someone else.</p>
<p>I built the platform you are reading this on in roughly three days. I had never written a line of Svelte before I started. I did not know the framework, the conventions, or the patterns. I only knew what I wanted the product to feel like.</p>
<p>That clarity was the most valuable thing I brought to the process.</p>
<p>The workflow had three stages.</p>
<p><strong>Stage one was planning.</strong> I spent the first hour or two with ChatGPT. Not asking it to build anything. Asking it to think with me. I described what I wanted. It pushed back. I refined. It challenged assumptions I had not noticed I was making. By the end of that conversation I had a specification. A real one. Not a list of features. A document that described the product, the audience, the experience, the constraints, and the principles that should govern every decision.</p>
<p>I reviewed that document manually. I edited it. I made sure it matched what I actually intended.</p>
<p>Then I handed it to Claude.</p>
<p><strong>Stage two was implementation.</strong> The first output was surprising. Structurally coherent, broadly correct, closer to the vision than I expected. But it was not the product. It was the beginning of the product.</p>
<p>There were issues that only became visible through use. Missing refinements. Hidden inconsistencies. UX decisions that looked reasonable on first glance and revealed their problems on the third interaction. SEO gaps. Accessibility oversights. Edge cases that the model had not considered because I had not specified them.</p>
<p>The first generated version was not something to ship. It was something to respond to.</p>
<p><strong>Stage three was refinement.</strong> I used Codex for this phase. Architecture improvements. Type safety. Build stability. Accessibility. Documentation. Naming conventions. Directory structure. The work of making something coherent into something intentional.</p>
<p>This is the phase most people skip. It is also the phase where quality actually lives.</p>
<p>The platform now maintains Lighthouse scores between 90 and 100 across performance, SEO, accessibility, and best practices. Zero build errors. Zero type errors. Zero lint errors. No unused imports, no unused variables, no outdated dependencies.</p>
<p>That did not come from the AI. It came from the hours spent after the AI finished.</p>
<h2 id="the-loop-that-most-people-run-halfway"><a href="https://writing.iambhvsh.in/why-your-ai-builds-look-like-everyone-elses/#the-loop-that-most-people-run-halfway">The loop that most people run halfway</a></h2>
<p>Vibe coding is a loop.</p>
<figure><img src="https://writing.iambhvsh.in/why-your-ai-builds-look-like-everyone-elses/vibe-coding-loop.webp" alt="The Vibe Coding Loop"><figcaption>The Vibe Coding Loop</figcaption></figure>
<p>Most people stop at Generate.</p>
<p>Something appears on screen. It mostly works. It has roughly the right structure, something close to the right idea. The temptation is to keep going. Add more. Prompt on top of the imprecision instead of correcting it.</p>
<p>The result is drift. Each new prompt layers onto something that was never quite right. By the end, the product is structurally uncertain. Fixing it means reconstructing decisions that were never consciously made.</p>
<p>The better habit is to stop at the first output. Inspect it as a real user would. Slowly. Without foreknowledge. What is confusing? What is absent? What is technically present but experientially missing?</p>
<p>Then make one change. Not seven. One.</p>
<figure><img src="https://writing.iambhvsh.in/why-your-ai-builds-look-like-everyone-elses/iteration-shape.webp" alt="Iteration Shape"><figcaption>Iteration Shape</figcaption></figure>
<p>There is something worth preserving about single-change iteration. The implementation is cleaner. Cause and effect stay visible. If something breaks, the source is close. If something improves, you understand why.</p>
<h2 id="what-consistency-actually-requires"><a href="https://writing.iambhvsh.in/why-your-ai-builds-look-like-everyone-elses/#what-consistency-actually-requires">What consistency actually requires</a></h2>
<p>Consistency does not happen because the AI remembered the last session.</p>
<p>It happens because someone wrote down what the product is and what it is not, and then made sure every decision was checked against that.</p>
<p>A design system is not a luxury for large teams. It is the document that keeps the work from becoming incoherent over time.</p>
<p>Typography. Color. Spacing. Component behavior. Animation. Naming. Accessibility. Not as a checklist. As a shared understanding of what this product believes about itself.</p>
<p>When that document exists, every AI tool can be told to read it first. The output becomes more consistent not because the model got smarter, but because it was given less room to invent.</p>
<p>The files I keep in every serious project:</p>
<ul>
<li><code>RULES.md</code> — what the AI is always and never allowed to do</li>
<li><code>DESIGN_SYSTEM.md</code> — tokens, type, color, spacing, component rules</li>
<li><code>ARCHITECTURE.md</code> — structural decisions, patterns, naming conventions</li>
<li><code>IMPLEMENTATION.md</code> — how features are built, not just what they are</li>
</ul>
<p>None of this is glamorous. But it is the difference between a product that stays coherent across weeks and one that starts contradicting itself by day three.</p>
<h2 id="the-structure-should-explain-itself"><a href="https://writing.iambhvsh.in/why-your-ai-builds-look-like-everyone-elses/#the-structure-should-explain-itself">The structure should explain itself</a></h2>
<p>One of the things I kept asking myself while building this platform was whether a developer returning after ten years could understand it in two minutes.</p>
<p>Future-me is effectively a new contributor. So is every AI tool that opens the codebase. The structure should not require explanation. It should communicate on its own.</p>
<p>The root directory of this platform has three folders.</p>
<pre><code class="language-text">/
├── src/
├── static/
└── writings/
</code></pre>
<p>Source code. Public assets. Articles. Nothing else.</p>
<p>Inside <code>src</code>, there are two more.</p>
<pre><code class="language-text">src/
├── lib/
└── routes/
</code></pre>
<p>Reusable code. Application routes. Still nothing to explain.</p>
<p>Publishing a new post is:</p>
<ol>
<li>Open <code>writings/</code></li>
<li>Create a folder</li>
<li>Create <code>index.svx</code></li>
<li>Write</li>
<li>Publish</li>
</ol>
<p>No CMS. No dashboard. No instructions required. The folder structure is the workflow.</p>
<p>Every file lives where its name suggests it should. <code>seo.ts</code> handles SEO. <code>og.ts</code> handles Open Graph. <code>search.ts</code> handles search. A developer should rarely ask where something belongs. The structure should answer automatically.</p>
<p>This is what intentionality looks like at the architectural level. Not clever patterns. Not sophisticated abstractions. A system that explains itself.</p>
<h2 id="context-wears-out"><a href="https://writing.iambhvsh.in/why-your-ai-builds-look-like-everyone-elses/#context-wears-out">Context wears out</a></h2>
<p>Something happens in long AI conversations that I had to learn to manage rather than resent.</p>
<p>The early context fades. Decisions made in the first few messages stop shaping the decisions being made now. The model begins to invent where it once respected. Small inconsistencies appear, then larger ones.</p>
<p>This is not a flaw. It is a condition.</p>
<p>Every five or six significant prompts, I reintroduce the things that matter. The architecture decisions. The design language. The documents that define what the product is. Not because the model forgot. Because the context window is carrying too many other things now, and the important constraints have been pushed to the edges.</p>
<p>Returning to the brief. The brief has not changed. It just needs to be present again.</p>
<h2 id="the-audit-nobody-runs"><a href="https://writing.iambhvsh.in/why-your-ai-builds-look-like-everyone-elses/#the-audit-nobody-runs">The audit nobody runs</a></h2>
<p>After a long implementation session there is usually a version of the code that works but is not clean.</p>
<p>Dead functions. Components that were replaced but never removed. Logic refactored in one place and not updated in two others. Patterns that drifted from the design system. Naming that was consistent in week one and is not consistent now.</p>
<p>The code runs. But it is carrying weight it should not be carrying.</p>
<figure><img src="https://writing.iambhvsh.in/why-your-ai-builds-look-like-everyone-elses/quality-pipeline.webp" alt="The Quality Pipeline"><figcaption>The Quality Pipeline</figcaption></figure>
<p>An audit is not extra work. It is the work. It is the part where the product stops being a series of accumulated decisions and starts being something deliberate.</p>
<p>Check for inconsistency. Remove what is no longer used. Verify that existing patterns are respected and not quietly replaced by new ones. Ask the AI to find logic that is being duplicated where it should be shared.</p>
<p>Then run the quality pipeline. Not as ceremony. As proof.</p>
<h2 id="simplicity-is-not-fewer-features"><a href="https://writing.iambhvsh.in/why-your-ai-builds-look-like-everyone-elses/#simplicity-is-not-fewer-features">Simplicity is not fewer features</a></h2>
<p>There is a definition of simplicity I keep returning to.</p>
<p>Simplicity is not fewer features. It is not less capability. It is not reduced functionality.</p>
<p>Simplicity is the absence of confusion.</p>
<p>The goal is maximum capability with minimum confusion. A system where functionality can increase and complexity remains understandable. Where the user does not need instructions. Where the developer does not need instructions. Where future-me does not need instructions.</p>
<p>The system itself should communicate how it works.</p>
<p>I borrow a question from the way certain companies approach product decisions. Before adding something, ask: would it be better to simplify instead? Before adding a setting, ask: would it be better to improve the default? Before shipping a screen, ask: would a person understand this in six seconds without help?</p>
<p>Most things that seem necessary turn out to be compensations for something that was not thought through clearly enough earlier. The feature that patches the gap in the flow. The setting that covers a decision that was never made. The complexity that exists because simplicity required more judgment than was available at the time.</p>
<p>That judgment is almost always available. It just requires stopping long enough to use it.</p>
<h2 id="the-part-that-cannot-be-generated"><a href="https://writing.iambhvsh.in/why-your-ai-builds-look-like-everyone-elses/#the-part-that-cannot-be-generated">The part that cannot be generated</a></h2>
<p>AI can write the code. It can produce the layout, the component library, the routing logic, the full working application in a fraction of the time any of that used to require.</p>
<p>What it cannot do is care whether the result is good.</p>
<p>It cannot look at a finished screen and feel that something is slightly off. It cannot sit with the product long enough to notice the friction a real user would find in the first thirty seconds. It cannot decide this version is not good enough, even though it technically works.</p>
<p>That part belongs to the person building it.</p>
<p>The difference between software that feels considered and software that feels generated is not the model. It is not the prompting technique, the tool, or the number of iterations.</p>
<p>It is whether the person building had enough taste to recognize mediocrity and enough patience to refuse it.</p>
<h2 id="what-the-work-actually-asks-for"><a href="https://writing.iambhvsh.in/why-your-ai-builds-look-like-everyone-elses/#what-the-work-actually-asks-for">What the work actually asks for</a></h2>
<p>AI is leverage. It is not authorship.</p>
<p>It generates options. The judgment about which option belongs is still yours.</p>
<p>It accelerates production. The standards that production is held to are still yours.</p>
<p>It fills specification with output. The specification itself, the thinking about what is worth building, how it should feel, why it should exist, that remains the most important part of the process. And it cannot be delegated.</p>
<p>AI reduced the time it took me to build this platform. That saved time did not go back into my pocket. It went into the quality of the work. Into the audit. Into the documentation. Into the decisions about what to remove. Into reading the codebase as a stranger would and asking whether it made sense.</p>
<p>That is where the product became something I was proud of. Not during generation. After it.</p>
<p>The products worth building are not the ones generated fastest.</p>
<p>They are the ones where someone cared enough to stop, repeatedly, and ask whether it was good yet.</p>
<p>Taste. Judgment. Patience. Attention to detail.</p>
<p>These are not soft skills. They are the bottleneck.</p>
<p>And they are the part worth protecting.</p>]]></content:encoded>
    </item>
    <item>
      <title><![CDATA[Protecting Attention]]></title>
      <description><![CDATA[Notes on keeping enough quiet in the day to notice better ideas before they disappear.]]></description>
      <link>https://writing.iambhvsh.in/protecting-attention</link>
      <guid isPermaLink="true">https://writing.iambhvsh.in/protecting-attention</guid>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://writing.iambhvsh.in/_app/immutable/assets/cover.BJp030AS.png" length="68175" type="image/png" />
      <author>iambhvsh@proton.me (Bhavesh Patil)</author>
      <dc:creator><![CDATA[Bhavesh Patil]]></dc:creator>
      <category><![CDATA[attention]]></category>
      <category><![CDATA[craft]]></category>
      <category><![CDATA[work]]></category>
      <content:encoded><![CDATA[<h2 id="table-of-contents"><a href="https://writing.iambhvsh.in/protecting-attention/#table-of-contents">Table of Contents</a></h2>
<ul>
<li><a href="https://writing.iambhvsh.in/protecting-attention/#the-expensive-thing">The expensive thing</a></li>
<li><a href="https://writing.iambhvsh.in/protecting-attention/#the-first-hour">The first hour</a></li>
<li><a href="https://writing.iambhvsh.in/protecting-attention/#a-slower-kind-of-progress">A slower kind of progress</a></li>
<li><a href="https://writing.iambhvsh.in/protecting-attention/#noise-with-a-professional-face">Noise with a professional face</a></li>
<li><a href="https://writing.iambhvsh.in/protecting-attention/#small-boundaries">Small boundaries</a></li>
<li><a href="https://writing.iambhvsh.in/protecting-attention/#design-needs-silence">Design needs silence</a></li>
<li><a href="https://writing.iambhvsh.in/protecting-attention/#code-needs-it-too">Code needs it too</a></li>
<li><a href="https://writing.iambhvsh.in/protecting-attention/#the-room-after-finishing">The room after finishing</a></li>
<li><a href="https://writing.iambhvsh.in/protecting-attention/#what-i-want-to-keep">What I want to keep</a></li>
</ul>
<h2 id="the-expensive-thing"><a href="https://writing.iambhvsh.in/protecting-attention/#the-expensive-thing">The expensive thing</a></h2>
<p>Attention is the most expensive part of the work.</p>
<p>Not time. Not tools. Not the number of windows open on a screen.</p>
<p>Attention.</p>
<p>It is the part that lets a rough interface begin to make sense. It is the part that notices when a sentence is almost right but still carrying too much weight. It is the part that can sit with a strange bug long enough to stop treating it like noise and start seeing its shape.</p>
<p>Most of the work I care about asks for that kind of attention.</p>
<p>And most of the day tries to take it away.</p>
<h2 id="the-first-hour"><a href="https://writing.iambhvsh.in/protecting-attention/#the-first-hour">The first hour</a></h2>
<p>The first hour matters more than I want it to.</p>
<p>If I begin the day by reacting, the day usually keeps that shape. Messages become the map. Small requests become the weather. I can still get things done, but the work starts to feel borrowed from everyone else's priorities.</p>
<p>So I try to keep the first hour plain.</p>
<p>No dashboard tour. No inbox archaeology. No pretending that checking five tools is the same as understanding the day.</p>
<p>Just one surface. One task. One decision that would make the rest of the day easier.</p>
<p>That sounds small, but it changes the texture of the work.</p>
<h2 id="a-slower-kind-of-progress"><a href="https://writing.iambhvsh.in/protecting-attention/#a-slower-kind-of-progress">A slower kind of progress</a></h2>
<p>Some progress looks unproductive from the outside.</p>
<p>Reading the same paragraph three times.</p>
<p>Renaming a thing until it stops lying.</p>
<p>Moving one button and then moving it back.</p>
<p>Deleting a clever solution because the simpler one finally became visible.</p>
<p>These are not delays. They are part of the work. They are how the work becomes less accidental.</p>
<p>The mistake is treating attention as something that only matters during execution. It matters before execution. It matters while choosing what not to do. It matters when deciding whether a problem is asking for code, design, writing, or nothing yet.</p>
<p>The best work often begins as a refusal to rush the wrong version of the answer.</p>
<h2 id="noise-with-a-professional-face"><a href="https://writing.iambhvsh.in/protecting-attention/#noise-with-a-professional-face">Noise with a professional face</a></h2>
<p>Not all noise looks like noise.</p>
<p>Some of it looks useful.</p>
<p>A new framework announcement. A thread about process. A tool that promises cleaner thinking. A metric that asks to be improved because it is visible. A meeting that exists because the calendar had room for it.</p>
<p>The difficult part is that some of these things are genuinely useful.</p>
<p>That is what makes them dangerous.</p>
<p>The question is not whether something is good. The question is whether it belongs inside this moment.</p>
<p>I have lost more time to useful distractions than useless ones.</p>
<h2 id="small-boundaries"><a href="https://writing.iambhvsh.in/protecting-attention/#small-boundaries">Small boundaries</a></h2>
<p>Large systems for attention rarely last for me.</p>
<p>I do better with small boundaries.</p>
<ul>
<li>write the first note before opening chat</li>
<li>keep one scratch file for messy thinking</li>
<li>close the preview when the problem is conceptual</li>
<li>open the preview when the problem is visual</li>
<li>leave a short note at the end of the day for tomorrow</li>
</ul>
<p>None of this is dramatic.</p>
<p>That is why it works.</p>
<p>A boundary does not need to become an identity. It just needs to reduce the number of small negotiations that happen before real work starts.</p>
<h2 id="design-needs-silence"><a href="https://writing.iambhvsh.in/protecting-attention/#design-needs-silence">Design needs silence</a></h2>
<p>Design is often treated as a visible act.</p>
<p>Screens. Components. Grids. Motion. Type. Color.</p>
<p>But a lot of design happens before anything visible changes. It happens when you notice that a label is doing the wrong job. It happens when you realize the empty state is not empty at all, because it is carrying the user's uncertainty. It happens when the page is technically complete but emotionally too loud.</p>
<p>Those observations need silence.</p>
<p>Not perfect silence. Not some precious studio fantasy.</p>
<p>Just enough space for the thing in front of you to become specific.</p>
<h2 id="code-needs-it-too"><a href="https://writing.iambhvsh.in/protecting-attention/#code-needs-it-too">Code needs it too</a></h2>
<p>Code also punishes scattered attention.</p>
<p>A bug can look like five different problems when the mind is moving too quickly. A type error can seem annoying when it is actually explaining a broken assumption. A refactor can feel urgent when the real issue is that the boundary was never named clearly.</p>
<p>The work improves when I slow down enough to ask:</p>
<p>What is this code trying to protect?</p>
<p>What does this abstraction make easier?</p>
<p>What does it make harder?</p>
<p>What would I need to understand if I came back here in six months?</p>
<p>Those questions do not take long.</p>
<p>Avoiding them does.</p>
<h2 id="the-room-after-finishing"><a href="https://writing.iambhvsh.in/protecting-attention/#the-room-after-finishing">The room after finishing</a></h2>
<p>Finishing a task creates a strange little opening.</p>
<p>There is a temptation to fill it immediately. Start the next thing. Check the queue. Answer something. Prove the day is still moving.</p>
<p>I am trying to leave a little room after finishing.</p>
<p>A minute is enough.</p>
<p>What changed? What did I learn? What should be easier next time? Did the work actually solve the problem, or did it only produce motion?</p>
<p>That pause keeps the day from becoming a blur of completed fragments.</p>
<p>It lets the work teach me something before I move on.</p>
<h2 id="what-i-want-to-keep"><a href="https://writing.iambhvsh.in/protecting-attention/#what-i-want-to-keep">What I want to keep</a></h2>
<p>I do not want a perfectly optimized life.</p>
<p>I do not want every hour turned into a unit.</p>
<p>I want enough quiet to do work I can recognize as mine.</p>
<p>Enough attention to notice when something is off.</p>
<p>Enough patience to let a better version of the idea arrive.</p>
<p>Enough discipline to protect the small conditions that make craft possible.</p>
<p>That is the practice.</p>
<p>Not a grand system.</p>
<p>Just returning, again and again, to the expensive thing.</p>]]></content:encoded>
    </item>
    <item>
      <title><![CDATA[Introducing Writing]]></title>
      <description><![CDATA[A first note on this space, why it exists, and the system behind it.]]></description>
      <link>https://writing.iambhvsh.in/introducing-writing</link>
      <guid isPermaLink="true">https://writing.iambhvsh.in/introducing-writing</guid>
      <pubDate>Wed, 10 Jun 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://writing.iambhvsh.in/_app/immutable/assets/cover.Dye9teIo.png" length="52546" type="image/png" />
      <author>iambhvsh@proton.me (Bhavesh Patil)</author>
      <dc:creator><![CDATA[Bhavesh Patil]]></dc:creator>
      <category><![CDATA[writing]]></category>
      <category><![CDATA[design]]></category>
      <category><![CDATA[engineering]]></category>
      <content:encoded><![CDATA[<h2 id="table-of-contents"><a href="https://writing.iambhvsh.in/introducing-writing/#table-of-contents">Table of Contents</a></h2>
<ul>
<li><a href="https://writing.iambhvsh.in/introducing-writing/#a-place-to-think">A place to think</a></li>
<li><a href="https://writing.iambhvsh.in/introducing-writing/#why-now">Why now</a></li>
<li><a href="https://writing.iambhvsh.in/introducing-writing/#how-it-is-made">How it is made</a></li>
<li><a href="https://writing.iambhvsh.in/introducing-writing/#the-stack">The stack</a></li>
<li><a href="https://writing.iambhvsh.in/introducing-writing/#design-as-function">Design as function</a></li>
<li><a href="https://writing.iambhvsh.in/introducing-writing/#what-comes-next">What comes next</a></li>
</ul>
<h2 id="a-place-to-think"><a href="https://writing.iambhvsh.in/introducing-writing/#a-place-to-think">A place to think</a></h2>
<p>Writing has always been the clearest way for me to understand what I am making.</p>
<p>This site exists for that reason. It is a personal space for essays, notes, and ideas on design, engineering, and craft. A place to slow things down, give thoughts a proper shape, and return to them with more care than a feed usually allows.</p>
<p>I wanted something focused. Not large. Not loud. Just a writing surface that feels deliberate from the first line to the last.</p>
<h2 id="why-now"><a href="https://writing.iambhvsh.in/introducing-writing/#why-now">Why now</a></h2>
<p>I have wanted a dedicated writing space for a while.</p>
<p>The more I work across design and engineering, the more I notice how often the important parts live between the two. The interface decision that changes the code. The technical constraint that improves the design. The small system choice that makes future work easier.</p>
<p>Those ideas need room.</p>
<p>This site is where I want to keep them.</p>
<h2 id="how-it-is-made"><a href="https://writing.iambhvsh.in/introducing-writing/#how-it-is-made">How it is made</a></h2>
<p>The site is built with SvelteKit and SVX.</p>
<p>Each essay lives in its own folder:</p>
<pre><code class="language-text">writings/
  introducing-writing/
    index.svx
</code></pre>
<p>If an essay needs an image, diagram, or supporting file, it can live beside the writing:</p>
<pre><code class="language-text">writings/my-essay/
  index.svx
  cover.webp
  diagram.png
</code></pre>
<p>The folder becomes the URL. The source stays simple. The public path stays clean.</p>
<p>SVX keeps the writing close to Markdown while still allowing Svelte components when a piece needs something more considered than static text.</p>
<h2 id="the-stack"><a href="https://writing.iambhvsh.in/introducing-writing/#the-stack">The stack</a></h2>
<p>The site uses:</p>
<ul>
<li>SvelteKit for routing and static output</li>
<li>Svelte 5 for components</li>
<li>SVX and mdsvex for writing</li>
<li>Tailwind CSS for the visual system</li>
<li>Shiki for code highlighting</li>
<li>Pagefind for search</li>
<li>TypeScript for the application layer</li>
</ul>
<p>The result is a small static site with generated metadata, RSS, sitemap support, syntax highlighting, and search after build.</p>
<p>There is no CMS here. The writing itself is the source.</p>
<h2 id="design-as-function"><a href="https://writing.iambhvsh.in/introducing-writing/#design-as-function">Design as function</a></h2>
<p>The visual system is quiet, intentional, and text-led.</p>
<p>That restraint is not a lack of design. It is the design. The header, spacing, search, metadata, colors, and motion all shape how the writing is read.</p>
<blockquote>
<p>Design is not just what it looks like and feels like. Design is how it works.</p>
</blockquote>
<p>That line is the center of this site.</p>
<p>The interface should not simply look minimal. It should make writing easier to publish, easier to read, and easier to return to. It should support attention without asking for attention.</p>
<h2 id="what-comes-next"><a href="https://writing.iambhvsh.in/introducing-writing/#what-comes-next">What comes next</a></h2>
<p>This is the first note.</p>
<p>More will follow as the system earns its shape through use. Some pieces will be polished essays. Some will be shorter observations. Some will be notes from building, designing, learning, and changing my mind.</p>
<p>For now, the purpose is simple.</p>
<p>Write clearly. Build carefully. Keep the space honest.</p>]]></content:encoded>
    </item>
  </channel>
</rss>