<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Osman Pehlivanoğlu</title>
    <description>The latest articles on Forem by Osman Pehlivanoğlu (@ospehlivano).</description>
    <link>https://forem.com/ospehlivano</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2774947%2Fcc152d7e-011e-485d-80ef-96cc5c52065d.png</url>
      <title>Forem: Osman Pehlivanoğlu</title>
      <link>https://forem.com/ospehlivano</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ospehlivano"/>
    <language>en</language>
    <item>
      <title>A Finance Tracker, Nothing More</title>
      <dc:creator>Osman Pehlivanoğlu</dc:creator>
      <pubDate>Mon, 23 Feb 2026 14:33:07 +0000</pubDate>
      <link>https://forem.com/ospehlivano/your-expense-tracker-doesnt-need-ai-gamification-or-a-10mo-plan-3dgh</link>
      <guid>https://forem.com/ospehlivano/your-expense-tracker-doesnt-need-ai-gamification-or-a-10mo-plan-3dgh</guid>
      <description>&lt;p&gt;You know what happens when a freelancer tries to track expenses?&lt;/p&gt;

&lt;p&gt;Option A: A spreadsheet that starts clean and turns into chaos by March.&lt;/p&gt;

&lt;p&gt;Option B: QuickBooks / Parasut / some enterprise tool that asks you about "chart of accounts", "fiscal periods", and "double-entry&lt;br&gt;
  bookkeeping" before you can log a single coffee purchase.&lt;/p&gt;

&lt;p&gt;Option C: A mobile app that's free until you want to... export your data. "Upgrade to Pro for $7.99/month" 💀&lt;/p&gt;

&lt;p&gt;I just wanted to know where my money goes.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;Hesap Bizden&lt;/strong&gt; — a dead simple income &amp;amp; expense tracker for small businesses and individuals.&lt;/p&gt;

&lt;p&gt;## 🎯 What It Does&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cash, Bank &amp;amp; Receivable accounts&lt;/strong&gt; — Group your money where it actually lives&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Income &amp;amp; Expense tracking&lt;/strong&gt; — Tap, type amount, done&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transfers between accounts&lt;/strong&gt; — Move money around with automatic balance updates&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recurring transactions&lt;/strong&gt; — Bills that repeat? Set it once, forget it&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-currency support&lt;/strong&gt; — TRY, USD, EUR, GBP with live exchange rates from Turkish Central Bank&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reports&lt;/strong&gt; — Monthly charts, category breakdowns, multi-currency conversion&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Team sharing&lt;/strong&gt; — Invite your partner/accountant with role-based access (owner/admin/member)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-company&lt;/strong&gt; — Freelancer with a side business? Switch between them instantly&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CSV export&lt;/strong&gt; — Your data is yours. Always.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dark mode&lt;/strong&gt; — Obviously.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;## 🛠️  Tech Stack&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Next.js 15&lt;/strong&gt; (App Router + Turbopack)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PostgreSQL&lt;/strong&gt; + Prisma&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NextAuth v5&lt;/strong&gt; (Google OAuth)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TailwindCSS&lt;/strong&gt; + shadcn/ui&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zustand&lt;/strong&gt; for state management&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;next-intl&lt;/strong&gt; for i18n (Turkish + English)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recharts&lt;/strong&gt; for beautiful charts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;## 💡 Lazy Loading Transactions&lt;/p&gt;

&lt;p&gt;Transactions aren't fetched until you click on an account. Once loaded, all filtering (search, date range, category) runs client-side.&lt;br&gt;
  No pagination. No loading spinners for every filter change.&lt;/p&gt;

&lt;p&gt;"But what about thousands of transactions?"&lt;/p&gt;

&lt;p&gt;If your cash register has thousands of transactions, congratulations — you can afford to pay for a real accounting tool.&lt;/p&gt;

&lt;p&gt;## 💡 3-Layer Exchange Rate Cache&lt;/p&gt;

&lt;p&gt;Multi-currency was the hardest part. Here's how the exchange rate system works:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;In-memory cache&lt;/strong&gt; (1 hour TTL) — fastest&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Next.js fetch cache&lt;/strong&gt; (1 hour revalidate) — no redundant API calls&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TCMB API&lt;/strong&gt; (Turkish Central Bank) → fallback to exchangerate-api.com&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Any currency pair converts through TRY as base: &lt;code&gt;rates[from] / rates[to]&lt;/code&gt;. Simple math, robust caching.&lt;/p&gt;

&lt;p&gt;## 💡 Optimistic UI Everywhere&lt;/p&gt;

&lt;p&gt;Delete a transaction? It disappears instantly. The API call happens in the background. If it fails, the list re-fetches to restore the&lt;br&gt;
  correct state. The app &lt;em&gt;feels&lt;/em&gt; fast because it &lt;em&gt;acts&lt;/em&gt; fast.&lt;/p&gt;

&lt;p&gt;## 💡 No Credentials Auth&lt;/p&gt;

&lt;p&gt;Google OAuth only. No "forgot password" flows. No password hashing debates. No security nightmares. One button, you're in.&lt;/p&gt;

&lt;p&gt;## 📱 Mobile-First&lt;/p&gt;

&lt;p&gt;The whole app was designed for phones:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Slide-in sidebar drawer&lt;/li&gt;
&lt;li&gt;Combobox account selector (with search)&lt;/li&gt;
&lt;li&gt;Collapsible filter bar&lt;/li&gt;
&lt;li&gt;Touch-friendly action buttons&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No "desktop app crammed into a phone screen" nonsense.&lt;/p&gt;

&lt;p&gt;## 🔒 Privacy&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your data stays in your account. No third-party analytics. No selling data.&lt;/li&gt;
&lt;li&gt;Full KVKK (Turkish GDPR) + GDPR compliance&lt;/li&gt;
&lt;li&gt;Account deletion cascades through everything — when you leave, your data actually leaves&lt;/li&gt;
&lt;li&gt;All API routes enforce multi-tenant isolation via &lt;code&gt;checkAccess()&lt;/code&gt; on every single request&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;## 🤔 What I Deliberately Left Out&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No pagination&lt;/strong&gt; — Not needed at this scale. YAGNI.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No rate limiting&lt;/strong&gt; — Every API is behind Google OAuth. No anonymous access.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No AI features&lt;/strong&gt; — Your expense tracker doesn't need ChatGPT.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No gamification&lt;/strong&gt; — No streaks. No badges. No "🎉 You saved $5 this week!" popups.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No social features&lt;/strong&gt; — Nobody needs to see your grocery spending.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;## 📱 Android App? Nah.&lt;/p&gt;

&lt;p&gt;I've been through this before with &lt;a href="https://dowe.app" rel="noopener noreferrer"&gt;Dowe&lt;/a&gt;, my weekly planner app. Google wants 12 testers to use your app for 14 days&lt;br&gt;
   before you can publish. For a to-do list app. I did it once. Not doing it again anytime soon.&lt;/p&gt;

&lt;p&gt;So this time? No Play Store. The web app works perfectly on mobile browsers. Add it to your home screen if you want. I'm not jumping&lt;br&gt;
  through hoops to publish a finance tracker that requires Google sign-in... on Google's own platform. The irony writes itself.&lt;/p&gt;

&lt;p&gt;## 🔗 Try It&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live:&lt;/strong&gt; &lt;a href="https://hesapbizden.com" rel="noopener noreferrer"&gt;hesapbizden.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's free. No signup walls. No premium tiers. Sign in with Google, create a company, start tracking.&lt;/p&gt;

&lt;p&gt;What do you use to track your business finances? I'm genuinely curious if anyone else finds existing tools as unnecessarily complex as&lt;br&gt;
  I do.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>I Built a Minimalist Weekly Planner That Doesn't Suck</title>
      <dc:creator>Osman Pehlivanoğlu</dc:creator>
      <pubDate>Tue, 23 Dec 2025 10:42:52 +0000</pubDate>
      <link>https://forem.com/ospehlivano/i-built-a-minimalist-weekly-planner-that-doesnt-suck-59mf</link>
      <guid>https://forem.com/ospehlivano/i-built-a-minimalist-weekly-planner-that-doesnt-suck-59mf</guid>
      <description>&lt;p&gt;You know what I hate about most planning apps? They try to do &lt;em&gt;everything&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Gantt charts. Kanban boards. Team collaboration. AI assistants. Integrations with 47 different services.&lt;/p&gt;

&lt;p&gt;And then you want to change the background color?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Upgrade to Pro for $9.99/month"&lt;/strong&gt; 💀&lt;/p&gt;

&lt;p&gt;I just wanted to plan my week.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;Dowe&lt;/strong&gt; — a dead simple weekly planner that does exactly what it says.&lt;/p&gt;

&lt;p&gt;## 🎯 What It Does&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;7-day weekly view&lt;/strong&gt; — See your entire week at a glance&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Drag &amp;amp; drop&lt;/strong&gt; — Reorganize tasks effortlessly&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Swipe gestures&lt;/strong&gt; — Complete tasks by swiping right (mobile-first)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monthly/Yearly notes&lt;/strong&gt; — For bigger picture goals&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;8 beautiful themes&lt;/strong&gt; — Light &amp;amp; dark modes &lt;em&gt;(yes, for free)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;12 languages&lt;/strong&gt; — i18n done right&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No account required&lt;/strong&gt; — Works offline, your data stays local&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;## 🛠️ Tech Stack&lt;/p&gt;

&lt;p&gt;Built with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Next.js 15 (App Router + Turbopack)&lt;/li&gt;
&lt;li&gt;Supabase (PostgreSQL + Auth)&lt;/li&gt;
&lt;li&gt;TailwindCSS&lt;/li&gt;
&lt;li&gt;PWA-ready&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;## 📱 Mobile-First Philosophy&lt;/p&gt;

&lt;p&gt;The app feels native on mobile:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Swipe right → Complete task&lt;/li&gt;
&lt;li&gt;Swipe left → Uncomplete&lt;/li&gt;
&lt;li&gt;Long press → Move/Copy menu&lt;/li&gt;
&lt;li&gt;Pull to refresh&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No clunky mobile adaptations. It was designed for thumbs first.&lt;/p&gt;

&lt;p&gt;## 🔗 Try It&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live:&lt;/strong&gt; &lt;a href="https://dowe.app" rel="noopener noreferrer"&gt;dowe.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's free. No signup walls. No "premium" upsells. No "you've reached your daily task limit" BS.&lt;/p&gt;

&lt;p&gt;What features would you add to your ideal weekly planner? I'm curious what minimal means to others.&lt;/p&gt;

&lt;p&gt;## 📱 Android App Coming Soon™&lt;/p&gt;

&lt;p&gt;The app is ready. Tested. Works great.&lt;/p&gt;

&lt;p&gt;But Google says I need 12 testers to use it for 14 days before I'm allowed to publish it. You know, to protect users from... &lt;em&gt;checks notes&lt;/em&gt; ...a to-do list app.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Osman Pehlivanoğlu</dc:creator>
      <pubDate>Thu, 11 Sep 2025 08:17:46 +0000</pubDate>
      <link>https://forem.com/ospehlivano/-4p2f</link>
      <guid>https://forem.com/ospehlivano/-4p2f</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/ospehlivano/from-baby-steps-to-midnight-brochures-2pn2" class="crayons-story__hidden-navigation-link"&gt;From Baby Steps to Midnight Brochures&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/ospehlivano" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2774947%2Fcc152d7e-011e-485d-80ef-96cc5c52065d.png" alt="ospehlivano profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/ospehlivano" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Osman Pehlivanoğlu
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Osman Pehlivanoğlu
                
              
              &lt;div id="story-author-preview-content-2812035" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/ospehlivano" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2774947%2Fcc152d7e-011e-485d-80ef-96cc5c52065d.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Osman Pehlivanoğlu&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/ospehlivano/from-baby-steps-to-midnight-brochures-2pn2" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Sep 1 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/ospehlivano/from-baby-steps-to-midnight-brochures-2pn2" id="article-link-2812035"&gt;
          From Baby Steps to Midnight Brochures
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/career"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;career&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/beginners"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;beginners&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/python"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;python&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/ospehlivano/from-baby-steps-to-midnight-brochures-2pn2" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;2&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/ospehlivano/from-baby-steps-to-midnight-brochures-2pn2#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              3&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            5 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>webdev</category>
      <category>career</category>
      <category>beginners</category>
      <category>python</category>
    </item>
    <item>
      <title>From Baby Steps to Midnight Brochures</title>
      <dc:creator>Osman Pehlivanoğlu</dc:creator>
      <pubDate>Mon, 01 Sep 2025 07:11:40 +0000</pubDate>
      <link>https://forem.com/ospehlivano/from-baby-steps-to-midnight-brochures-2pn2</link>
      <guid>https://forem.com/ospehlivano/from-baby-steps-to-midnight-brochures-2pn2</guid>
      <description>&lt;p&gt;&lt;em&gt;Following up on &lt;a href="https://dev.to/ospehlivano/at-33-baby-on-the-way-no-plan-how-i-became-a-developer-7n3"&gt;my career pivot story&lt;/a&gt; - writing that first article helped me remember so many details I'd forgotten. Since it seemed to connect with folks, I figured I'd share what happened next - maybe it'll help someone avoid the same mistakes I made, or at least make them smile.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The One or Two Things I Got Right
&lt;/h2&gt;

&lt;p&gt;While learning Python, I had one clear goal: build desktop applications. Why? Well, the 90s were only 2 decades ago - practically yesterday, right? &lt;/p&gt;

&lt;p&gt;This naturally led me to combine tutorials with building actual projects - and I can personally vouch for how valuable this approach is. Every morning, I'd sit at my computer like I was going to work - 8 AM to 6 PM, treating Python learning as my full-time job while simultaneously developing my first real application. I didn't have a choice - baby on the way, unemployment benefits that were less than minimum wage.&lt;/p&gt;

&lt;p&gt;No roadmap, no guidance from the community, just me constantly Googling everything which inevitably led to discovering Stack Overflow. Udemy course for Python basics, countless YouTube tutorials for Tkinter, and figuring out SQL through trial and error. I mean, everything. I remember seeing a joke somewhere that went like: "Doctors tell people not to mistake their Google searches for medical degrees. Developers tell people not to mistake their Google searches for our Google searches."&lt;/p&gt;

&lt;p&gt;As for Stack Overflow - well, let's just say my few attempts at asking questions didn't go well. Even now, while writing this, I still feel that slight intimidation factor that Stack Overflow somehow instills in developers. You know the feeling.&lt;/p&gt;

&lt;p&gt;Looking back, those were incredibly valuable experiences. Having to truly understand why something worked (or didn't) instead of copy-pasting solutions built a different kind of problem-solving muscle.&lt;br&gt;
This is where the real education happened - not in the courses, but in the problems I had to solve myself.&lt;/p&gt;

&lt;h2&gt;
  
  
  When One Item Became Too Many
&lt;/h2&gt;

&lt;p&gt;I was so close to finishing my first real application - just one last feature remained. After a couple of months (and thankfully after my baby was born!), I remember spending days trying to figure out how to increment item quantities in my POS system instead of creating duplicate rows. When I finally cracked it - boom! &lt;/p&gt;

&lt;p&gt;Months of intense learning had finally paid off. I had built something real, something that worked. For the first time since leaving my factory job, I felt like I could actually call myself a developer. My stock management application with POS functionality was complete.&lt;/p&gt;

&lt;p&gt;Was it?&lt;/p&gt;

&lt;p&gt;That's when reality hit me with the question that haunts every beginner: "How do I actually give this to someone?"&lt;/p&gt;

&lt;p&gt;I had a working application on my machine - PyCharm's little green play button was my best friend. But how do you turn Python scripts into something a normal person can run?&lt;/p&gt;

&lt;p&gt;This took days of research. I tried PyInstaller and cx_Freeze, wrestling with configuration files, missing dependencies, and cryptic error messages. One tool would work but the database wouldn't connect properly. Another would package everything perfectly but my logo wouldn't show up.&lt;/p&gt;

&lt;p&gt;Looking back, I'm pretty sure I was the one with quirks and limitations.&lt;/p&gt;

&lt;p&gt;Eventually, after countless attempts, I managed to create executable files. Finally! I had real .exe files that could run on other computers. Victory!&lt;/p&gt;

&lt;p&gt;Or so I thought...&lt;/p&gt;

&lt;h2&gt;
  
  
  But It Works on My Machine
&lt;/h2&gt;

&lt;p&gt;Riding high on my success, I quickly adapted my stock management system into a bookstore inventory application. Why not? The logic was similar - items, quantities, sales tracking. I was expanding my target market - retail stores, bookshops, maybe even small supermarkets. My customer base was growing!&lt;/p&gt;

&lt;p&gt;Around this time, a friend had just taken over a small bookstore and was struggling with inventory management. Perfect timing! When I offered my brand new bookstore application, he was interested. We agreed on a reasonable price - though I ended up getting paid mostly in books, which felt very literary and entrepreneurial at the time.&lt;/p&gt;

&lt;p&gt;But when I went to install it on his computer, I hit the classic developer nightmare: "But it works on my machine!"&lt;/p&gt;

&lt;p&gt;The .exe file I was so proud of simply wouldn't run on his system. After hours of troubleshooting, I ended up literally carrying his computer to my house.&lt;/p&gt;

&lt;p&gt;Picture this: two computers side by side on my desk. Install on mine - works perfectly. Install on his - some cryptic error message I couldn't make sense of.&lt;/p&gt;

&lt;p&gt;The plot twist? Python needed to be installed on his machine too. My "standalone" executable wasn't so standalone after all. (I would eventually learn how to properly embed Python into the executable, but that's a lesson for another day!)&lt;/p&gt;

&lt;h2&gt;
  
  
  The Midnight Marketing Strategy
&lt;/h2&gt;

&lt;p&gt;At this point, I had working applications but no customers. My friend (a graphic designer) had created beautiful brochures showcasing these applications.&lt;/p&gt;

&lt;p&gt;My distribution approach? Sliding them under shop doors after closing time.&lt;/p&gt;

&lt;p&gt;Yes, you read that right. I was too embarrassed to approach business owners in person, so I became a midnight brochure ninja, hoping someone would find my flyer and think "This is exactly what my business needs!"&lt;/p&gt;

&lt;p&gt;I'd drive around industrial areas at night, slipping colorful brochures under doors, convinced that business owners would arrive the next morning and immediately call me.&lt;/p&gt;

&lt;p&gt;Spoiler alert: It didn't work.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Django Advice That Could Have Changed Everything
&lt;/h2&gt;

&lt;p&gt;During this period, I had coffee with someone my designer friend insisted I meet. I immediately pegged this guy as just another IT support person - the classic mistake of underestimating someone based on assumptions.&lt;/p&gt;

&lt;p&gt;When he heard about my Python applications, he gave me the most valuable advice I completely ignored: "You should look into Django."&lt;/p&gt;

&lt;p&gt;My response? "I'll look into it!" And I did try, honestly. But getting to Django meant diving deeper into Python fundamentals first. I kept going down rabbit holes, re-learning Python basics from different angles multiple times.&lt;/p&gt;

&lt;p&gt;Unfortunately, I got so caught up in these foundational detours that I never actually made it to Django itself.&lt;/p&gt;

&lt;p&gt;Instead, I doubled down on desktop applications. I even partnered with some sales-experienced folks from my old factory days who saw potential in what I was building. We decided to develop a complete ERP system together - yes, still with Python and Tkinter. This meant another year of desktop development while continuing my midnight brochure campaigns on the side.&lt;/p&gt;

&lt;p&gt;Little did I know that after spending that whole additional year on the ERP project, this same coffee meeting guy would eventually become my ticket into the industry.&lt;/p&gt;

&lt;h2&gt;
  
  
  Looking Back, What Actually Mattered
&lt;/h2&gt;

&lt;p&gt;I learned the hard way that building projects while learning is invaluable - even though my apps were far from perfect, the problem-solving experience was real. Deployment turned out to be harder than development, and marketing mattered more than code quality. My spaghetti code could have made money if I'd known how to reach the right people.&lt;/p&gt;

&lt;p&gt;Most importantly, I should have listened to that senior developer's Django advice. It could have saved me months of desktop app delusion.&lt;/p&gt;

&lt;p&gt;But all these "mistakes" were actually preparing me for what came next. Sometimes you have to build the wrong thing in the wrong way to really understand what the right approach looks like.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Coming up: how I finally discovered web development, the brutal learning curve that nearly broke me, and how that coffee meeting guy ended up being my ticket into the industry.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If you've made similar mistakes with your early projects (or even weirder marketing strategies), I'd love to hear about them! Drop a comment - I need to know I wasn't the only midnight ninja out there! 😄&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>career</category>
      <category>beginners</category>
      <category>python</category>
    </item>
    <item>
      <title>At 33, Baby on the Way, No Plan: How I Became a Developer</title>
      <dc:creator>Osman Pehlivanoğlu</dc:creator>
      <pubDate>Mon, 25 Aug 2025 09:34:44 +0000</pubDate>
      <link>https://forem.com/ospehlivano/at-33-baby-on-the-way-no-plan-how-i-became-a-developer-7n3</link>
      <guid>https://forem.com/ospehlivano/at-33-baby-on-the-way-no-plan-how-i-became-a-developer-7n3</guid>
      <description>&lt;h2&gt;
  
  
  The Breaking Point
&lt;/h2&gt;

&lt;p&gt;Picture this: It's 8 AM, and I'm already on my third cup of coffee, chain-smoking while frantically making calls to suppliers. "Where are the materials? Production can't wait!" Sound familiar?&lt;/p&gt;

&lt;p&gt;I was a mechanical engineer working in production and planning at a manufacturing facility for five years. Yes, I know what you're thinking - that sounds more like industrial engineering work, and you're absolutely right. But that's the reality of many engineering roles: you wear multiple hats and do whatever needs to be done.&lt;/p&gt;

&lt;p&gt;My days were consumed by a relentless cycle of fighting with other departments, chasing delayed materials, and trying to keep production lines running. Every day felt like putting out fires while new ones sparked up behind me.&lt;/p&gt;

&lt;p&gt;The stress was eating me alive. Coffee, cigarettes, and constant phone arguments had become my daily routine. And in whatever time remained, I was trying to do my actual job - creating production plans. I was living in a perpetual state of urgency, always reacting to someone else's problems, never actually solving anything meaningful.&lt;/p&gt;

&lt;p&gt;Then one day, it hit me like a brick wall: &lt;strong&gt;This lifestyle wasn't taking me anywhere.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I was caught in an endless loop of human politics, department wars, and external dependencies I couldn't control. No matter how hard I worked or how many hours I put in, I was always at the mercy of other people's delays, mistakes, and priorities.&lt;/p&gt;

&lt;p&gt;So I made a decision that changed everything. I decided I was going to quit my job.&lt;/p&gt;

&lt;p&gt;But here's the context that makes this decision either incredibly brave or completely insane: I was one year into marriage, and my wife was pregnant.&lt;/p&gt;

&lt;p&gt;When I told my boss I wanted to leave, I needed it to be a termination rather than a resignation - I needed that severance package and unemployment benefits to survive the transition period, even if it was just a small amount. My boss asked me to stay a bit longer since my direct manager was on maternity leave, and I agreed to handle her responsibilities for a few months so I wouldn't leave him in a terrible situation.&lt;/p&gt;

&lt;p&gt;And then, finally, my last day arrived. After five years of factory politics and production battles, I walked out of that building for the last time.&lt;/p&gt;

&lt;p&gt;Shortly after leaving, I also started working on quitting smoking - which I managed to do within a couple of months. If I was going to start fresh, I was going all in.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Learning Curve (And My Outdated Assumptions)
&lt;/h2&gt;

&lt;p&gt;What followed was about a year of intensive learning. But here's the embarrassing part: I started with completely outdated assumptions about what software development looked like in 2018.&lt;/p&gt;

&lt;p&gt;You see, my last encounter with programming was literally back in 1999, when I built my first website - a metal music discography site hosted on .cjb.net (remember those free hosting services?). After that, I chose to study mechanical engineering at a good university - simply because the university was good! A simple mistake. Unfortunately, I didn't touch programming again for years until I quit that job.&lt;/p&gt;

&lt;p&gt;So naturally, I assumed software development in 2018 still looked like what I remembered from two decades ago - desktop applications. I dove headfirst into Python with Tkinter, thinking I was going to create the next great desktop software.&lt;/p&gt;

&lt;p&gt;And oh dude, did I go all in. I spent almost a year building a complete ERP system - yes, you read that right, an entire ERP system in Python with Tkinter. I even got as far as presenting it to a real factory. They were interested, asked for some changes that would take about two months to implement.&lt;/p&gt;

&lt;p&gt;I was nearly finished with those changes when disaster struck: ransomware hit my computer.&lt;/p&gt;

&lt;p&gt;Now, here's where you're probably thinking "What about version control? Git?" Well, let's just say I was backing up my code by... emailing it to myself. And my last backup? From two months ago - right before that initial presentation.&lt;/p&gt;

&lt;p&gt;Everything was gone.&lt;/p&gt;

&lt;p&gt;The factory decided to pass on the project (probably for the best), and looking back now, I can only thank God for preventing me from going down that path. A desktop ERP system maintained by one person would have been an absolute nightmare - imagine the chaos that awaited me.&lt;/p&gt;

&lt;p&gt;Looking back, it's almost comical. While the world had moved to web applications, mobile apps, and cloud services, there I was, earnestly trying to build enterprise software with desktop GUIs like it was still 1999.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real World Awakening
&lt;/h2&gt;

&lt;p&gt;While learning Python, I started taking on small freelance projects - basic Python scripts, WordPress websites, nothing too complex. But then I stumbled upon something that would change my trajectory entirely: enterprise software development with C# and Angular.&lt;/p&gt;

&lt;p&gt;Coming from Python's dynamic, loosely-typed world, this was like jumping from a bicycle straight onto a Formula 1 car. Type safety? What's that? I had been learning everything the "easy" way in Python, and suddenly I was faced with strongly-typed languages, dependency injection, layered architecture patterns - concepts I had never encountered.&lt;/p&gt;

&lt;p&gt;I spent months struggling, putting in countless hours trying to wrap my head around these enterprise patterns. It was brutal, but I was determined.&lt;/p&gt;

&lt;p&gt;Eventually, I landed my first job in the field. The project? Developing an accounting software using exactly these technologies I had been wrestling with. Interestingly, I ended up guiding the team on .NET layered architecture while focusing primarily on the Angular frontend.&lt;/p&gt;

&lt;p&gt;The result was something I was genuinely proud of - a piece of software that actually solved real problems for real users.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Philosophy That Changed Everything
&lt;/h2&gt;

&lt;p&gt;But here's what I discovered during this journey, and why I fell in love with programming: &lt;strong&gt;I was finally working with machines instead of people.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In manufacturing, I was constantly at the mercy of human unpredictability. Delayed suppliers, miscommunication between departments, politics, ego clashes - my success depended on factors completely outside my control.&lt;/p&gt;

&lt;p&gt;With code, it's beautifully different. If your code isn't behaving as expected, the fault isn't with the code - it's with you. There's no politics, no ego, no external dependencies that arrive late. Just pure logic and problem-solving.&lt;/p&gt;

&lt;p&gt;This accountability was liberating. Every bug was a puzzle to solve, not a person to argue with. Every feature was a challenge to overcome, not a department to convince.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where I Am Today
&lt;/h2&gt;

&lt;p&gt;After that first job, I co-founded a warehouse management software company where I work as both a software developer and co-founder. These days, I primarily work with JavaScript frameworks - Next.js, React, Node.js - building full-stack applications.&lt;/p&gt;

&lt;p&gt;The journey from factory floor to full stack hasn't been easy, but it's been incredibly rewarding. I often work as the sole developer on projects, which suits me perfectly. I get to architect solutions, implement them, and see them come to life without navigating corporate politics or waiting for other people's decisions.&lt;/p&gt;

&lt;h2&gt;
  
  
  For Those Considering a Similar Jump
&lt;/h2&gt;

&lt;p&gt;If you're in a similar situation - feeling stuck in a role that's draining your energy, constantly fighting fires instead of building something meaningful - here's what I learned:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start learning, but start smart.&lt;/strong&gt; Don't make my mistake of assuming the industry hasn't evolved. Research what's actually being used today.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Embrace the struggle.&lt;/strong&gt; That period of learning enterprise patterns nearly broke me, but it was essential for understanding how real software is built.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your previous experience isn't wasted.&lt;/strong&gt; My engineering background gave me problem-solving skills and systematic thinking that complemented my development journey well. But more importantly, dealing with factory chaos, department wars, and constant firefighting taught me patience and resilience that proved invaluable when debugging complex code or learning new frameworks under pressure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Focus on building things.&lt;/strong&gt; Don't just consume tutorials - build projects, even if they're terrible at first.&lt;/p&gt;

&lt;p&gt;Most importantly: if you're tired of being at the mercy of other people's chaos, programming might just be the escape you're looking for. In code, logic &lt;strong&gt;mostly&lt;/strong&gt; prevails - not politics.&lt;/p&gt;




&lt;p&gt;Continue reading: &lt;a href="https://dev.to/ospehlivano/from-baby-steps-to-midnight-brochures-2pn2"&gt;Part 2 - From Baby Steps to Midnight Brochures&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;What's your story? Have you made a similar career pivot? I'd love to hear about your journey in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>career</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
