<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Atacan Gürbüz on Medium]]></title>
        <description><![CDATA[Stories by Atacan Gürbüz on Medium]]></description>
        <link>https://medium.com/@atacan.gurbuz?source=rss-3ae5fa48a223------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*UVoNm9SGvGrfRfrRlUTPUw.png</url>
            <title>Stories by Atacan Gürbüz on Medium</title>
            <link>https://medium.com/@atacan.gurbuz?source=rss-3ae5fa48a223------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Tue, 19 May 2026 19:06:46 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@atacan.gurbuz/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Sahaya Özel Üretim ve Stok Yönetimi Sistemi]]></title>
            <link>https://medium.com/@atacan.gurbuz/sahaya-%C3%B6zel-%C3%BCretim-ve-stok-y%C3%B6netimi-sistemi-a56bb9a955a3?source=rss-3ae5fa48a223------2</link>
            <guid isPermaLink="false">https://medium.com/p/a56bb9a955a3</guid>
            <dc:creator><![CDATA[Atacan Gürbüz]]></dc:creator>
            <pubDate>Thu, 12 Mar 2026 16:47:45 GMT</pubDate>
            <atom:updated>2026-03-12T16:47:45.653Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Ev9tNG0Z89QjdPWavUL76Q.png" /><figcaption>ERP SYSTEM LOGIN SCREEN</figcaption></figure><h3>Kağıttaki Plan ile Depodaki Gerçeği Buluşturmak: Kendi ERP Sistemimizi Nasıl Geliştirdik?</h3><p>Üretim yapan bir işletmenin kalbi üretim bandında atsa da, beyni depodaki stoklar ve ofisteki planlamadır. Hava yastığı (dunnage bag) üretimi yaptığımız şirketimiz <strong>Show Dunnage</strong>’da, büyüyen operasyonumuzla birlikte standart stok takip yazılımlarının veya Excel tablolarının bize yetmediğini fark ettik.</p><p>Bir üretici için en büyük kabus, kağıt üzerinde var görünen bir malzemenin fiziksel olarak depoda olmaması veya tam tersi durumdur. Bu sorunu kökünden çözmek, operasyonel hızımızı artırmak ve maliyetlerimizi kuruşu kuruşuna takip edebilmek için tamamen kendi iş akışımıza özel <strong>SD-Stock v2</strong> isimli ERP (Kurumsal Kaynak Planlaması) ve MRP (Malzeme İhtiyaç Planlaması) sistemimizi geliştirdik.</p><p>Bu yazıda, bir üretim tesisinin dijital dönüşümünü ve “ihtiyaca özel” bir yazılımın şirkete kattığı değeri paylaşmak istiyorum.</p><h3>Temel Felsefemiz: “Teorik” ile “Gerçek” Arasındaki Farkı Yönetmek</h3><p>Herhangi bir ürünün bir üretim “reçetesi” vardır. Ancak sahada işler her zaman reçetedeki gibi kusursuz ilerlemez. Fireler verilir, ortak malzemeler kullanılır veya planlanandan biraz daha fazla hammadde tüketilir.</p><p>SD-Stock v2&#39;yi tasarlarken temel felsefemizi şu şekilde belirledik: <strong>“Reçetedeki Plan (Theoretical) ile Depodaki Gerçek (Actual) arasındaki farkı kusursuz yönetmek.”</strong> Sadece ne üretildiğini değil, “bu üretimi yaparken gerçekte ne kadar kaynak tükettik ve bu tüketimin ne kadarı fire?” sorusunu Sipariş Numarası (PO) bazında izlenebilir hale getirdik.</p><p>Peki bunu nasıl başardık? İşin arka planında çalışan, sahadaki operatörü yormayan ama arka planda karmaşık hesaplamalar yapan akıllı kurgularımız var.</p><h3>1. Akıllı İş Emri ve Kampanya Üretimi (Batch Production)</h3><p>Müşteriden gelen tek bir sipariş (PO) içinde farklı ebatlarda veya özelliklerde birçok ürün olabilir. Eski sistemlerde her bir alt ürün için ayrı iş emirleri açmak ve bunları tek tek yönetmek operatörler için ciddi bir zaman kaybıydı.</p><p>Geliştirdiğimiz sistemde, aynı siparişe ait farklı üretim kalemlerini tek bir <strong>“Kampanya”</strong> olarak grupladık. Sahadaki operatör, ekranda karmaşık listeler yerine sadece o an üretmesi gereken sipariş grubunu görüyor ve üretimi tek tuşla, bütüncül olarak kapatabiliyor. Bu, hem ekran kalabalığını önledi hem de insan kaynaklı hata payını minimuma indirdi.</p><h3>2. Adil Maliyet Dağıtımı (Oransal Dağıtım Algoritması)</h3><p>Üretimdeki en zor konulardan biri, bant, valf veya yapıştırıcı gibi “ortak” kullanılan malzemelerin maliyetini farklı siparişlere doğru dağıtmaktır.</p><p>Sistemimize entegre ettiğimiz <strong>Oransal Dağıtım Algoritması</strong>, üretim bittiğinde depodan çıkan toplam net hammaddeyi ve operatörün girdiği fire oranını alır; bu rakamları o gün üretilen iş emirlerinin hacmine göre matematiksel olarak paylaştırır. Böylece depodan ikinci kez stok düşümü yapmaya gerek kalmaz ve her bir siparişin bize <strong>gerçek maliyetinin</strong> ne olduğunu adil bir şekilde görebiliriz.</p><h3>3. Panik Alımlarını Bitiren “Akıllı MRP”</h3><p>Klasik stok programları, reçeteye bakar ve “Üretim için 100 birim hammadde lazım, depoda 50 var, hemen satın al!” uyarısı verir. Ancak o eksik olan 50 birim hammadde, belki de o an zaten üretim sahasına (WIP — Yarı Mamul) çıkarılmış durumdadır.</p><p>SD-Stock v2&#39;nin reçete mantığı sadece depodaki mala değil, sahaya verilmiş stoklara da bakar. Bir hammadde depodan üretim sahasına geçmişse, sistem bunu “Eldeki Stok” olarak kabul eder ve satın alma departmanına gereksiz “Acil Alım” uyarıları gitmesini engeller. Ayrıca malzemeleri “Ürün Bazlı” ve “Koli Bazlı” olarak ikiye ayırarak, üretim listesindeki gereksiz detayları gizler ve ekranı sadeleştiririz.</p><h3>4. Canlı Mutabakat ve İade Yönetimi</h3><p>Üretim vardiyası bittiğinde, operatörün girdiği verilerle deponun gerçek durumu anlık olarak kıyaslanır. Geliştirdiğimiz <strong>Kapanış Ekranı</strong>, depodan çıkan malı ve sisteme girilen üretimi saniyeler içinde analiz ederek “Fazla” veya “Eksik” uyarısı verir. Bir hata varsa, vardiya bitmeden ve sorun büyümeden o an çözülür. Artan hammaddeler sisteme kolayca “İade” olarak girilir ve bu iade doğrudan siparişin maliyetini düşürerek bilançomuza pozitif yansır.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Yi7PQ4xoZkEA0J7Z7W-8Yg.png" /></figure><h3>Şirketimiz İçin Sonuç ve Kazanımlar</h3><p>Kendi iç dinamiklerimize göre modern web teknolojileriyle geliştirdiğimiz, sadece bizim kurallarımıza itaat eden ve şirketimizle birlikte büyüyebilen bir sisteme kavuştuk.</p><p>Operasyon sahasında modern, sade ve hata yapmaya izin vermeyen bir kullanıcı arayüzü sunarken; yönetim tarafında sipariş bazlı karlılık, anlık depo durumu ve akıllı satın alma raporları sağladık. Kağıt üzerinde tasarlanan özel iş emri çıktılarıyla (operatörlerin not alabileceği alanlara sahip formlar) dijital ile fiziksel dünyayı birbirine bağladık.</p><p>Sonuç olarak; Show Dunnage olarak sadece kaliteli ürünler üretmekle kalmıyor, bu ürünleri üretirken kullandığımız arka plan teknolojilerini de kendi mühendislik vizyonumuzla sıfırdan inşa ediyoruz. Görünen o ki, iyi kurgulanmış bir dijital altyapı, en az sahadaki makinalar kadar şirketin büyümesine ivme kazandırıyor.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a56bb9a955a3" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[ Linux’tan AI Araçlarına, Eklentilerden Tarayıcılara Çalışma Ortamım]]></title>
            <link>https://medium.com/@atacan.gurbuz/linux-dan-ai-ara%C3%A7lar%C4%B1na-eklentilerden-taray%C4%B1c%C4%B1lara-%C3%A7al%C4%B1%C5%9Fma-ortam%C4%B1m-93f6d39e4f3c?source=rss-3ae5fa48a223------2</link>
            <guid isPermaLink="false">https://medium.com/p/93f6d39e4f3c</guid>
            <dc:creator><![CDATA[Atacan Gürbüz]]></dc:creator>
            <pubDate>Thu, 31 Jul 2025 14:15:03 GMT</pubDate>
            <atom:updated>2025-07-31T14:16:53.538Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*de3f8n5WdYfH99KctYl1yQ.png" /></figure><p>👋 Merhaba! Geliştirme ve yapay zeka dünyasında koştururken favori masaüstü ortamımı ve kullandığım araçları paylaşmak istedim. Bu yazıda Ubuntu’nun neden vazgeçilmezim olduğunu, arayüzümü nasıl özelleştirdiğimi ve üretkenliğimi katlayan AI ile verimlilik araçlarımı göreceksiniz.</p><h3>💻 Neden Linux (Ubuntu)?</h3><ul><li><strong>👐 Özgür Yazılım</strong><br>Kaynak kodu açık olan yazılımlar sayesinde sistemi dilediğim gibi inceleyebiliyor, değiştirebiliyor ve paylaşabiliyorum.</li><li><strong>🤖 AI Destekli Çözüm</strong><br>Artık sorunları forumlarda arayıp döküman okumak yerine terminalde gemini CLI veya ChatGPT gibi yapay zeka araçlarıyla anında, detaylı çözümlere ulaşabiliyorum.</li><li><strong>⚡ Hafiflik &amp; Kararlılık</strong><br>Özellikle LTS sürümleriyle sisteminizin yıllarca sorunsuz çalışmasını sağlıyor. Gereksiz servisler çalışmıyor.</li><li><strong>🎨 Derin Özelleştirme</strong><br>İstediğim pencere efektini aktif eder, panel yerleşimini değiştirebilir, klavye kısayollarını baştan tanımlayabiliyorum. Top bar organizasyonu ile uygulamalarıma kolayca ulaşabiliyorum.</li><li><strong>🔐 Tam Sistem Erişimi</strong><br>Root izinleriyle her dosyaya, her servise müdahale edebiliyorum. Backup, firewall, ağ ayarları… Hepsi elimde.</li></ul><h3>🎨 Masaüstü Arayüzüm</h3><p>Ubuntu’nun varsayılan masaüstü ortamı <strong>GNOME</strong> üzerine kuruluyum.</p><ul><li><strong>🎨 Tema &amp; İkon Paketi</strong>: Koyu tonlu “Dracula” GTK teması ve “Papirus” ikon seti. Göz yormayan ama şık bir kombinasyon.</li><li><strong>📐 Panel Düzeni</strong>: Sol tarafta dock, üstte durum çubuğu.</li><li><strong>🔝 Üst Panel (Top Bar)</strong>:</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*tpeVkXbelpON8R3HrKvwrw.png" /></figure><p><strong>⏰ Hızlı Erişim İkonları</strong>: Saat &amp; takvim, pil yüzdesi, ağ bağlantısı, Bluetooth durumu, ses &amp; mikrofon kontrolleri, telefon bağlantısı,kullanıcı menüsü.</p><p><strong>🎵 Medya Kontrolleri</strong>: Çalan parçayı gösteren oynat/duraklat, ileri/geri tuşları.</p><p><strong>📊 Veri Göstergeleri</strong>: Ağ hızı, pil şarj hızı, CPU/GPU sıcaklığı.</p><p><strong>🖼️ Wallpaperm</strong>: Arka planda geometrik altıgen desenli siyah-kırmızı duvar kağıdı — minimal ve enerjik.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*RIDS8_MCMqtiV38AIQ89Bg.png" /></figure><h3>🛠️ Kullandığım Uygulamalar</h3><h3>🌐 Tarayıcılar ve Öne Çıkan Özellikleri</h3><ul><li><strong>🦊 Vivaldi</strong></li></ul><p><strong>🗂️</strong> Yan Panel (Sidebar):<strong> </strong>, ChatGPT, Gemini, <strong>Translate, Tarayıcı </strong>Geçmişi, İndirilenler, okuma listesi ve web panelleri.</p><p><strong>🗄️ </strong>Sekme Grupları: Projeye göre sekmeleri organize etme.</p><p><strong>⚙️ Derin Özelleştirme</strong>: Fare hareketleri, klavye kısayolları, tema ayarları.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*u9RX-g9H-NA1NFgrQvYQjA.png" /></figure><ul><li><strong>🌙 Zen Browser</strong></li></ul><p><strong>🔍 Minimal &amp; Odaklı</strong>: Gereksiz menüler yok, göz rahat.</p><p><strong>📖 Yerleşik Okuma Modu</strong>: Uzun yazıları temiz arayüzde okuma.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*cyA4Km1kjphSkd56-Ch92Q.png" /></figure><ul><li><strong>🔗 Chromium</strong></li></ul><p><strong>🛠️ Açık Kaynak &amp; Kararlı</strong>: Chrome eklentilerini sorunsuz kullanma. Güvenlik ve Gizlilik odaklı kullanım.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*9cSkOtTiJ_BVg_4G6eGVdA.png" /></figure><h3>💻 VS Code &amp; GitHub Copilot</h3><ul><li><strong>💻 VS Code</strong>: Zengin eklenti deposu ve özelleştirilebilir arayüz.</li></ul><p><strong>🤖 Copilot</strong>: Kod önerileri, fonksiyon şablonları, test snippet’leri.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*9QCadQgMtCgnEub6JYRl9w.png" /></figure><h3>⚙️ Gemini CLI</h3><ul><li><strong>📥 Terminalde Anında Geri Bildirim</strong>: Terminale gemini yaz, sorunuzu sorun, yanıtınızı alın.</li><li><strong>📂 Dosya Tabanlı İş Akışı</strong>: .md dosyalarını açıp düzenleyebiliyor.</li><li><strong>🔒 Gizlilik</strong>: Tüm işlemler yerelde, API anahtarları dışarı çıkmıyor.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/948/1*rIFeBlXxWUy-PtPVL1z4jw.png" /></figure><h3>📝 Notion</h3><p><strong>📋 Hepsi Bir Arada</strong>: Proje planı, yapılacaklar, fikir panoları.</p><ul><li><strong>🔗 Bağlantılı Notlar</strong>: Birbirine referanslı içeriklerle hızlı erişim.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*2EhjO6oO3OSWgCo27_AjdQ.png" /></figure><h3>🧩 GNOME Eklentileri</h3><p><strong>GNOME</strong>, modern bir Linux masaüstü ortamı; eklentilerle sınırlarını zorlayabiliyorum.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/354/1*VpK43lNUkz8g3uB3V42cSA.png" /></figure><pre>1. 🔵 Bluetooth Quick Connect<br><br>Bluetooth cihazları tek tıkla eşleştirip bağlanıyor.<br><br>2. 🔥 Burn My Windows<br><br>Aktif pencereyi yarı transparan yapıp hızlı bakış atmamı sağlıyor.<br>sekme geçişleri, açılıp kapanma temaları uygulanabiliyor.<br><br>3. 📋 Clipboard Indicator<br><br>Panodaki geçmişi listeliyor, önceki kopyaları yapıştırmayı kolaylaştırıyor.<br><br>4. 🔄 Coverflow Alt-Tab<br><br>Uygulamalar arasında 3D kapak akışıyla geçiş efekti sunuyor.<br><br>5. 📥 Dash to Panel<br><br>Sol dock’u alt panele taşıyarak simgeleri kalıcı hale getiriyor.<br><br>6. 📑 Extension List<br><br>Yüklü eklentileri tek yerden yönetmemi sağlıyor.<br><br>7. ⭐ Frippery Panel Favorites<br><br>Favori uygulamalarımı üst panelde sabitliyorum.<br><br>8. 📱 GSConnect<br><br>Telefonla dosya, bildirim, klavye-fare entegrasyonu.<br><br>9. 🎵 Media Controls<br><br>Müzik/video kontrollerini panelden yapıyorum.<br><br>10. 🔍 Open Bar<br><br>Komut paleti gibi hızlı uygulama/ayar başlatma çubuğu.<br><br>11. 🔈 Quick Settings Audio Panel<br><br>Ses çıkış cihazlarını ve mikrofonu hızlıca değiştiriyorum.<br><br>12. 🔧 Top Bar Organizer<br><br>Panel ikonlarının sırasını ve görünümünü düzenliyorum.<br><br>13. 📱 Ubuntu AppIndicators<br><br>AppIndicator tabanlı simgeleri GNOME’a geri kazandırıyor.<br><br>14. 📌 Ubuntu Dock<br><br>Sol dock çubuğunu sabitliyor ve özelleştirme seçenekleri sunuyor.<br><br>15. 🪟 Ubuntu Tiling Assistant<br><br>Pencereleri yarıya bölüp hizalıyorum, çoklu pencere verimliliği artıyor.<br><br>16. 🎨 User Themes<br><br>Kendi GTK/ikon temalarımı GNOME’a entegre edebiliyorum.</pre><h3>🎯 Sonuç</h3><p>Ubuntu + GNOME + doğru eklentiler + AI destekli araçlarla çalışma ortamımı hem kişiselleştirdim hem de verimliliğimi 🚀 artırdım. Umarım bu rehber sizin de masaüstünüzü özelleştirirken ilham olur! ✨</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=93f6d39e4f3c" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Stop Giving Commands, Start Teaching Your Project: The New Way to Develop with AI]]></title>
            <link>https://medium.com/@atacan.gurbuz/stop-giving-commands-start-teaching-your-project-the-new-way-to-develop-with-ai-3ab4c91cfa7d?source=rss-3ae5fa48a223------2</link>
            <guid isPermaLink="false">https://medium.com/p/3ab4c91cfa7d</guid>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[prompt-engineering]]></category>
            <category><![CDATA[vibe-coding]]></category>
            <category><![CDATA[context-engineering]]></category>
            <category><![CDATA[ai]]></category>
            <dc:creator><![CDATA[Atacan Gürbüz]]></dc:creator>
            <pubDate>Mon, 14 Jul 2025 20:32:41 GMT</pubDate>
            <atom:updated>2025-07-14T20:32:41.323Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*vpLKoOIua4aGpRa4O2Kn1g.png" /></figure><p>Coding with artificial intelligence is no longer a scene from a science fiction movie; it’s a reality of our lives. However, you can think of AI as a smart but inexperienced intern who has just joined your project. If you don’t clearly explain what to do, the results can be irrelevant to your project or completely nonsensical.</p><p>This is where a new approach comes in to solve this problem: <strong>Context Engineering</strong>.</p><h4>From Giving Commands to Teaching the Project</h4><p>Until now, we communicated with AI using specific commands like, “Build me a login screen.” This method is called <strong>Prompt Engineering</strong>. However, this approach is like telling an intern to just “paint a wall.” Which color? Which room? What type of paint? Without these details, the result will likely be far from your expectations.</p><p><strong>Context Engineering</strong>, on the other hand, is the art of explaining the entire project to the AI. Just as we explain the project’s purpose, rules, and overall structure to a new team member, we provide this “context” to the AI. This way, it not only performs the requested task but also delivers work that is consistent with the project’s spirit and standards.</p><h4>Why Your AI Needs to See the “Big Picture”</h4><p>Artificial intelligence models learn by analyzing billions of data points from the internet. However, they cannot know your project’s unique rules, the technologies you prefer to use, or your specific design language. When you don’t provide this information, they produce generic solutions that are incompatible with your project.</p><p>Furthermore, AI has a “short-term memory.” If you give it very long commands, it might forget what you said at the beginning. Context Engineering solves this problem by making this information permanent.</p><h4>What Is a Context File? Here’s a Simple Example</h4><p>So, how do we provide this information to the AI? With simple text files that we place inside our project folder! We call these “context files.”</p><p>For instance, imagine we create a <strong>rules.md</strong> file for a simple website project like this:</p><pre># Project Rules<br><br>## 1. Technology<br>- This project will be written in **JavaScript**.<br>- **TailwindCSS** library will be used for styling (CSS). Do not use any other CSS method.<br><br>## 2. Structure<br>- All JavaScript code must be located inside the `src/scripts` folder.<br><br>## 3. Guidelines<br>- The website must be mobile-responsive.<br>- Always use the color code `bg-blue-500` for buttons.</pre><p>As you can see, this file is extremely simple and easy to understand. Now, when we ask the AI to create a button, it will read this file and automatically design the button with the bg-blue-500 color and make it mobile-responsive. We don&#39;t need to repeat these rules every single time.</p><h4>In Conclusion</h4><p>Context Engineering transforms AI from a tool that just follows commands into a smart assistant that understands your project’s rules and acts accordingly. By creating simple rule files at the very beginning of your project, you can get consistent, error-free, and precisely tailored results throughout your development process.</p><p>In short, if you want to get the best out of AI, don’t just tell it what you want; teach it the “context” of your project.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=3ab4c91cfa7d" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[The Future of AI-Skilled Developers: Why They Will Be Irreplaceable?]]></title>
            <link>https://medium.com/@atacan.gurbuz/the-future-of-ai-skilled-developers-why-they-will-be-irreplaceable-262b69be7ffd?source=rss-3ae5fa48a223------2</link>
            <guid isPermaLink="false">https://medium.com/p/262b69be7ffd</guid>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[prompt-engineering]]></category>
            <category><![CDATA[future-of-work]]></category>
            <category><![CDATA[ai]]></category>
            <dc:creator><![CDATA[Atacan Gürbüz]]></dc:creator>
            <pubDate>Sat, 08 Mar 2025 20:47:40 GMT</pubDate>
            <atom:updated>2025-03-08T20:47:40.495Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*O2kO9ILSqIT44WIgrRiONw.jpeg" /></figure><h3>Change is Inevitable</h3><p>Software development is undergoing a radical transformation with the tools provided by artificial intelligence. However, this change is particularly criticized by senior developers who rely on traditional methods. But can this resistance keep up with the speed of technology?</p><h3>Why Is AI-Assisted Development Controversial?</h3><p>Senior developers often view AI-powered tools with skepticism, misunderstanding the nature of technology itself. For example, low-code platforms and cloud technologies faced similar reactions in the past. Today’s argument:<br> <em>“A developer who doesn’t write code isn’t a real professional!”</em></p><h3>The Driving Metaphor: It’s About Dynamics, Not Just Details</h3><p>A good driver doesn’t need to know every technical detail of a car. What truly matters is managing its dynamics — acceleration, braking, and cornering. Similarly, an AI-powered developer should understand model limitations, optimize prompts, and bridge gaps through documentation and web searches when AI falls short.</p><h3>Why AI Skills Stand Out?</h3><ul><li><strong>Speed &amp; Efficiency:</strong> AI automates repetitive tasks, allowing developers to focus on strategic work.</li><li><strong>Accessibility:</strong> Even those with limited coding knowledge can build MVPs (prototypes) with AI.</li><li><strong>Creativity:</strong> Developers can design user-focused solutions without getting lost in technical complexities.</li></ul><h3>Response to the “They Don’t Know How to Code!” Argument</h3><p>AI-based development does not eliminate coding knowledge; it redefines it. A developer must understand:</p><ul><li>Fundamental programming logic,</li><li>System design,</li><li>Business requirements.</li></ul><p>The key difference is a shift from focusing on <em>“How?”</em> to <em>“What?”</em> — turning software from a technical discipline into a multidisciplinary art.</p><h3>A Call to Senior Developers &amp; Employers</h3><ul><li><strong>Adapt:</strong> AI is a tool that accelerates prototyping. Experienced teams should leverage this power.</li><li><strong>Embrace New Talent:</strong> Value lies not in lines of code but in problem-solving ability.</li><li><strong>Don’t Fall Behind:</strong> AI is evolving faster than Moore’s Law. Those who resist today will lose the competition tomorrow.</li></ul><h3>Final Thought: The Only Constant is Change</h3><p>AI is democratizing software development. Senior developers and employers should see this shift as an opportunity, not a threat. Remember:</p><ul><li>The rise of automobiles didn’t eliminate horse breeders; it shifted their focus to automotive engineering.</li><li>Today, the focus should be on designing <strong>smart solutions</strong> rather than just writing code.</li></ul><p>The future belongs to those who collaborate with AI. <strong>Which side are you on?</strong></p><p>Turkish version:</p><h3>Gelecek AI Becerili Developerların: Neden Vazgeçilmez Olacaklar?</h3><h3>Değişim Kaçınılmaz</h3><p>Yazılım geliştirme, yapay zekanın sunduğu araçlarla kökten dönüşüyor. Ancak bu değişim, özellikle geleneksel yöntemlere bağlı senior developerlar tarafından eleştiriliyor. Peki bu direnç, teknolojinin hızına yetişebilecek mi?</p><h3>Neden AI Destekli Geliştirme Tartışılıyor?</h3><p>Senior developerların AI tabanlı araçlarla çalışanlara şüpheyle bakması, teknolojinin doğasını yanlış yorumluyor. Örneğin, low-code platformlar ve bulut teknolojileri de benzer tepkiler almıştı. Bugünkü argüman:<br> <em>“Kod yazmayan developer, gerçek bir profesyonel değil!”</em></p><h3>Araba Metaforu: Detay Değil, Dinamik Önemli</h3><p>İyi bir şoför, aracın tüm teknik detaylarını bilmek zorunda değildir. Önemli olan, dinamikleri (hızlanma, fren, viraj) yönetmektir. Aynı şekilde, AI ile çalışan bir developer da model sınırlamalarını, prompt optimizasyonunu bilmeli, hatta modellerin yetersiz kaldığı noktalarda dökümantasyon ve web aramalarıyla bu açığı kapatabilmelidir.</p><h3>AI Becerileri Neden Öne Çıkıyor?</h3><ul><li><strong>Hız ve Verimlilik:</strong> AI, tekrarlayan işleri otomatize ederek developerlara stratejik odaklanma sağlar.</li><li><strong>Erişilebilirlik:</strong> Kodlama bilgisi sınırlı olanlar bile AI ile MVP (prototip) oluşturabilir.</li><li><strong>Yaratıcılık:</strong> Teknik detaylara takılmadan kullanıcı odaklı çözümler üretmek mümkün.</li></ul><h3>“Kod Bilmiyorlar!” İddiasına Yanıt</h3><p>AI tabanlı geliştirme, kod bilgisini yok etmez, yeniden tanımlar. Bir developer:</p><ul><li>Temel programlama mantığını,</li><li>Sistem tasarımını,</li><li>İş gereksinimlerini anlamalı.</li></ul><p>Fark, <em>“Nasıl?”</em> yerine <em>“Ne?”</em> sorusuna odaklanmalarıdır. Bu, yazılımı teknik bir disiplinden çok disiplinli bir sanata dönüştürüyor.</p><h3>Senior’lara ve İşverenlere Çağrı</h3><ul><li><strong>Adapte Olun:</strong> AI, prototiplemeyi hızlandıran bir araç. Deneyimli ekipler bu gücü kullanmalı.</li><li><strong>Yeni Yeteneklere Açık Olun:</strong> Değer, satır kodda değil, çözüm üretme becerisinde.</li><li><strong>Geç Kalmayın:</strong> AI, Moore Yasası’ndan hızlı ilerliyor. Bugün direnenler, yarın rekabeti kaybeder.</li></ul><h3>Son Söz: Değişmeyen Tek Şey Değişim</h3><p>AI, yazılımı demokratikleştiriyor. Senior’lar ve işverenler, bu değişimi tehdit değil, fırsat olarak görmeli. Unutmayın:</p><ul><li>Araba çağında at yetiştiricileri kaybolmadı, sadece odak otomotiv mühendisliğine kaydı.</li><li>Bugün de odak, kod yazmaktan çok, <strong>akıllı çözümler tasarlamak</strong> olmalı.</li></ul><p>Gelecek, AI ile iş birliği yapanların olacak. <strong>Siz hangi taraftasınız?</strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=262b69be7ffd" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[The Digital Workers of the Future: AI Agents]]></title>
            <link>https://medium.com/@atacan.gurbuz/the-digital-workers-of-the-future-ai-agents-4ed07b5d2b8f?source=rss-3ae5fa48a223------2</link>
            <guid isPermaLink="false">https://medium.com/p/4ed07b5d2b8f</guid>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[artificial-intelligence]]></category>
            <category><![CDATA[ai-agent]]></category>
            <category><![CDATA[future-of-work]]></category>
            <dc:creator><![CDATA[Atacan Gürbüz]]></dc:creator>
            <pubDate>Sun, 09 Feb 2025 22:18:35 GMT</pubDate>
            <atom:updated>2025-02-09T22:18:35.879Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Ncehckxf2JzltbzH51B7jA.png" /></figure><p>Artificial intelligence (AI) is now a part of our daily lives, and one of its most fascinating applications is <strong>AI agents</strong>. But what exactly are AI agents, and why are they set to play a bigger role in the future? In this article, we’ll explore what AI agents are, how they work, and what the future holds for them from a technical perspective.</p><h3>What Are AI Agents?</h3><p>AI agents are intelligent systems that perform specific tasks, gather data from their environment, and improve as they learn. They can make decisions on their own and take actions to achieve defined objectives. While they are programmed by humans, they can often operate without direct human intervention.</p><h3>Technical Foundations</h3><p>AI agents operate based on several core technologies:</p><ul><li><strong>Machine Learning (ML):</strong> A technique that enables AI agents to learn automatically from data and improve their performance in specific tasks. ML includes various algorithms that detect patterns and relationships within data.</li><li><strong>Deep Learning:</strong> A subset of ML that uses neural networks to learn from large datasets. AI agents using deep learning can handle complex tasks more effectively.</li><li><strong>Natural Language Processing (NLP):</strong> A set of techniques that enable AI agents to understand and generate human language. This allows agents to interact through text-based communication and perform language-based tasks.</li></ul><h3>Types of AI Agents</h3><p>AI agents come in different forms:</p><ul><li><strong>Simple Reflex Agents:</strong> They follow predefined rules based on immediate conditions. For example, an air conditioner that turns on when the temperature rises above a certain threshold.</li><li><strong>Model-Based Agents:</strong> They analyze their environment and make decisions accordingly. For instance, robotic vacuum cleaners map out a room to find the most efficient cleaning path.</li><li><strong>Learning Agents:</strong> They improve over time by learning from experience. For example, customer service chatbots adapt to frequently asked questions and provide better responses.</li></ul><h3>Where Are AI Agents Used?</h3><p>AI agents are already widely used across different industries:</p><ul><li><strong>Virtual Assistants (Siri, Alexa, Google Assistant):</strong> AI-powered assistants that understand user commands and execute tasks.</li><li><strong>Autonomous Vehicles (Tesla, Waymo):</strong> AI-driven cars that process real-time data to navigate without human intervention.</li><li><strong>Finance (Trading Bots, Risk Analysis):</strong> AI systems that analyze market trends and execute financial transactions.</li><li><strong>Customer Support (Chatbots):</strong> Automated bots that provide customer service on company websites.</li></ul><h3>The Future of AI Agents</h3><p>Over the coming years, AI agents will continue to evolve, making our lives even more efficient. Here are some key developments we can expect:</p><ol><li><strong>Fully Automated Businesses:</strong> Companies could operate customer service, financial management, and more using AI agents, minimizing human intervention.</li><li><strong>Personal Assistants:</strong> AI agents capable of learning personal habits and making intelligent recommendations could become essential in daily life.</li><li><strong>Healthcare Applications:</strong> AI agents may assist in early disease detection and provide doctors with valuable insights.</li><li><strong>Smarter Cities:</strong> AI-driven traffic management, security systems, and environmental monitoring could enhance urban living.</li></ol><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=4ed07b5d2b8f" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Artificial Intelligence, Blockchain, and Quantum Computers: The Future of the Technological Trinity]]></title>
            <link>https://medium.com/@atacan.gurbuz/artificial-intelligence-blockchain-and-quantum-computers-the-future-of-the-technological-trinity-e5591f604900?source=rss-3ae5fa48a223------2</link>
            <guid isPermaLink="false">https://medium.com/p/e5591f604900</guid>
            <category><![CDATA[blockchain]]></category>
            <category><![CDATA[future]]></category>
            <category><![CDATA[ethereum]]></category>
            <category><![CDATA[artificial-intelligence]]></category>
            <category><![CDATA[quantum-computing]]></category>
            <dc:creator><![CDATA[Atacan Gürbüz]]></dc:creator>
            <pubDate>Mon, 02 Dec 2024 23:44:42 GMT</pubDate>
            <atom:updated>2024-12-02T23:44:42.957Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*IDKFVEIGykG83dWlGzupfw.jpeg" /></figure><p>The most prominent fields of today’s technology — artificial intelligence (AI), blockchain, and quantum computers — are transforming industries individually. However, their convergence holds the potential to spark one of the most significant technological leaps in human history. Together, these three technologies present a monumental opportunity to create the next generation of secure, fast, and intelligent systems.</p><h3>The Integration of Artificial Intelligence and Blockchain</h3><p>Artificial intelligence plays a pivotal role in analyzing large datasets, making predictions, and assisting decision-making processes. Yet, the success of AI systems heavily depends on the reliability and integrity of the data they utilize. This is where blockchain steps in as a critical enabler for AI.</p><p>Blockchain ensures that data is stored securely, immutably, and transparently. For instance:</p><ul><li><strong>In Healthcare:</strong> AI models trained on verified patient data stored on blockchain can deliver more accurate predictions.</li><li><strong>In Finance:</strong> Blockchain-based data storage enhances the transparency of AI-driven financial forecasting models.</li></ul><p>Moreover, AI-powered <strong>smart contracts</strong> operating on blockchain networks can automate complex processes, making them more intelligent and efficient.</p><h3>The Impact of Quantum Computers on Blockchain and AI</h3><p>Quantum computers possess computational power far beyond that of classical computers, which presents both opportunities and challenges for blockchain and AI.</p><ul><li><strong>Opportunities:</strong> The processing power of quantum computers can accelerate cryptographic operations in blockchain networks and reduce the training times for AI models. For example, groundbreaking advancements can be achieved in complex fields such as drug development when AI and quantum computers work together.</li><li><strong>Challenges:</strong> Quantum computers have the potential to break the cryptographic algorithms currently used in blockchain networks. To address this, <strong>quantum-resistant encryption algorithms</strong> must be developed to enhance the security of blockchain systems.</li></ul><h3>The Intersection of Three Technologies: Building the Future Ecosystem</h3><p>The convergence of artificial intelligence, blockchain, and quantum computers holds the potential to transform numerous industries with synergistic innovation:</p><ol><li><strong>Secure and Transparent AI Systems:</strong></li></ol><ul><li>Blockchain ensures the security of data used for training AI models.</li><li>Quantum computers accelerate the development of faster and more intelligent systems.</li></ul><p><strong>2. Next-Generation Blockchain Networks:</strong></p><ul><li>Quantum-based blockchain networks can be more secure and scalable than current systems.</li><li>AI-powered smart contracts on blockchain enable more sophisticated business models.</li></ul><p><strong>3. Solutions to Global Challenges:</strong></p><ul><li>These three technologies can provide impactful solutions to global problems such as climate change, energy optimization, and healthcare. For example, an AI-driven blockchain network for energy management could leverage the processing power of quantum computers.</li></ul><h3>Conclusion: Shaping the Future with a Technological Trinity</h3><p>The convergence of artificial intelligence, blockchain, and quantum computers will elevate digital ecosystems to new levels of security, speed, and efficiency. However, for these technologies to work together seamlessly, continued research and development, along with ethical and regulatory frameworks, are essential.</p><p>This trinity will shape the future of technology, driving society toward a more sustainable, secure, and innovative world. The potential is immense it is now up to us to explore how to harness it to its fullest.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e5591f604900" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[The Artist-Programmers of the Future: A New Era from Code to Art]]></title>
            <link>https://medium.com/@atacan.gurbuz/the-artist-programmers-of-the-future-a-new-era-from-code-to-art-c741473de64a?source=rss-3ae5fa48a223------2</link>
            <guid isPermaLink="false">https://medium.com/p/c741473de64a</guid>
            <category><![CDATA[software]]></category>
            <category><![CDATA[artificial-intelligence]]></category>
            <category><![CDATA[future-of-work]]></category>
            <category><![CDATA[news]]></category>
            <category><![CDATA[programming]]></category>
            <dc:creator><![CDATA[Atacan Gürbüz]]></dc:creator>
            <pubDate>Mon, 28 Oct 2024 15:23:47 GMT</pubDate>
            <atom:updated>2024-10-28T15:23:47.437Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*k_AajsYBVIzmxD6ef69r4g.jpeg" /></figure><p>As artificial intelligence advances in the field of coding, future developers will need not only technical knowledge but also a creative mindset. This new generation of <em>artist-programmers</em> will not only write code but also bring projects to life with innovative ideas and artistic vision. As code goes beyond functionality, creativity and unique perspectives will become the real value in projects.</p><p><strong>Who Is an Artist-Programmer?</strong><br>Future developers, empowered by AI, will be able to break free from technical details and bring an artistic expression to digital projects. Coding will shift from being a routine task to becoming a tool for creative thought.</p><p><strong>From Code to Ideas</strong><br>With AI taking on technical workloads, creativity and vision will take center stage. Artist-programmers will blend their ideas with technology, transforming their projects into digital works of art. In this new world, generating innovative ideas with an artistic perspective will be as important as writing code.</p><p><strong>Conclusion</strong><br>Artist-programmers will use technology as a tool for artistic expression in the digital world of the future. With the support of AI, projects will acquire a more artistic identity, and the power of ideas will be valued more than ever.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c741473de64a" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AI-Powered Image Processing with PHP Laravel and Hugging Face]]></title>
            <link>https://medium.com/@atacan.gurbuz/ai-powered-image-processing-with-php-laravel-and-hugging-face-416ed8c3bd98?source=rss-3ae5fa48a223------2</link>
            <guid isPermaLink="false">https://medium.com/p/416ed8c3bd98</guid>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[object-detection]]></category>
            <category><![CDATA[ai-image-processing]]></category>
            <category><![CDATA[php]]></category>
            <category><![CDATA[hugging-face-api]]></category>
            <dc:creator><![CDATA[Atacan Gürbüz]]></dc:creator>
            <pubDate>Tue, 08 Oct 2024 00:58:39 GMT</pubDate>
            <atom:updated>2024-10-08T00:59:51.855Z</atom:updated>
            <content:encoded><![CDATA[<h3>Introduction</h3><p>Incorporating <strong>Artificial Intelligence</strong> (AI) into web applications has become easier with the availability of platforms like <strong>Hugging Face</strong>, which provides pre-trained models that can be easily integrated. In this project, I utilized <strong>PHP Laravel</strong> to build an image processing tool where users can upload images and perform AI-powered object detection.</p><p>The goal was to showcase how Laravel can seamlessly integrate with Hugging Face models to perform tasks like object detection. Let’s dive into the key implementation details and see how PHP can be combined with Hugging Face for powerful AI-based image processing.</p><h3>Project Overview</h3><p>The project allows users to upload images, analyze them using AI models from Hugging Face, and display the results, including object labels and bounding boxes.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ub7kjXZX_KXXgpZbsn1BIA.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*A57idwV1vBqyN4_y5X8yTQ.png" /></figure><h3>Key Features:</h3><ul><li><strong>Upload Images</strong>: Users can upload any image via a web interface.</li><li><strong>Hugging Face API</strong>: Users can specify the Hugging Face model URL to perform object detection.</li><li><strong>Dynamic Analysis</strong>: The analysis results, including detected objects and labels, are displayed to the user.</li></ul><h3>Key Methods for Hugging Face API Integration</h3><h3>1. HuggingFaceService: Connecting to Hugging Face API</h3><p>The HuggingFaceService is the core component that handles communication with Hugging Face. This service sends the uploaded image to the selected Hugging Face model and returns the analysis results.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/882/1*ECdfLTRIq6UYw-IlXA_PpQ.png" /></figure><ul><li><strong>Image Conversion</strong>: The image is converted to base64 format before being sent to the API.</li><li><strong>API Request</strong>: The model URL and API key are used to make a POST request to Hugging Face, where the image is analyzed for object detection.</li><li><strong>Response</strong>: The method returns the API’s response, which includes detected objects and their bounding boxes.</li></ul><h3>2. ImageController: Managing Image Analysis</h3><p>The controller (ImageController) handles the logic for uploading images and invoking the analysis through Hugging Face.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/889/1*Qj5ppqcnas_Al9wH_8K0Uw.png" /></figure><ul><li><strong>Image Retrieval</strong>: Retrieves the uploaded image by its ID from the database.</li><li><strong>Model URL</strong>: Gets the Hugging Face model URL provided by the user.</li><li><strong>Calling the Service</strong>: Sends the image and model URL to HuggingFaceService for analysis.</li><li><strong>View Rendering</strong>: Passes the analysis results to the view, where the results are displayed.</li></ul><h3>3. Storing Uploaded Images</h3><p>When users upload an image, it is saved to the server and then analyzed using Hugging Face models.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/887/1*udYV64KGw4az08s9B4EP7w.png" /></figure><h4>Explanation:</h4><ul><li><strong>Validation</strong>: Ensures that the uploaded file is a valid image.</li><li><strong>Saving the Image</strong>: Moves the uploaded image to the uploads directory and saves the filename in the database.</li><li><strong>Redirecting</strong>: After the image is uploaded, the user is redirected to the image list.</li></ul><h3>Why This Approach?</h3><p>Using <strong>Hugging Face</strong> with <strong>PHP Laravel</strong> provides a flexible and scalable solution for integrating AI-based image analysis into web applications. Laravel’s robust backend and Hugging Face’s powerful AI models make this integration seamless, enabling developers to build feature-rich applications without the need for extensive AI expertise.</p><p>By focusing on <strong>service-oriented architecture</strong>, the project separates the business logic (image analysis) into the HuggingFaceService, making the code more modular and maintainable.</p><h3>Conclusion</h3><p>Integrating AI models into a PHP Laravel project is both powerful and efficient with the help of Hugging Face. The project demonstrates how easy it is to perform image analysis using pre-trained AI models by leveraging Laravel’s backend capabilities and Hugging Face’s APIs.</p><p>If you’re looking to add AI-based image processing to your own projects, the approach outlined here provides a solid foundation.</p><h3>GitHub Repository</h3><p>You can find the full source code for this project here:</p><p>GitHub — <a href="https://github.com/gurbuzz/AI-image-processing">AI Image Processing with PHP Laravel and Hugging Face</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=416ed8c3bd98" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Image Area Labeling Functionality and Fabric.js And Canvas Usage:]]></title>
            <link>https://medium.com/@atacan.gurbuz/image-area-labeling-functionality-and-fabric-js-and-canvas-usage-f4d1f1f6dcf1?source=rss-3ae5fa48a223------2</link>
            <guid isPermaLink="false">https://medium.com/p/f4d1f1f6dcf1</guid>
            <category><![CDATA[fabricjs]]></category>
            <category><![CDATA[html5-canvas]]></category>
            <category><![CDATA[interactive-learning]]></category>
            <category><![CDATA[digital-education]]></category>
            <dc:creator><![CDATA[Atacan Gürbüz]]></dc:creator>
            <pubDate>Sun, 25 Aug 2024 21:46:35 GMT</pubDate>
            <atom:updated>2024-08-25T23:12:50.154Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/918/1*Nk0NL1m8FnH1_Z3TzwwqqA.png" /></figure><p>Providing an interactive learning experience for visually impaired individuals opens up new opportunities in the digitalization of education. In this article, we will explore how the labeling functionality was developed in an educational platform designed for visually impaired children and how this functionality provides feedback through mobile application integration. The main technologies we focus on in this project are <strong>Canvas</strong> and the <strong>Fabric.js</strong> library.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/955/1*q0sL8FIOj-5aZkHSMgTgBQ.png" /></figure><h3>Labeling Functionality with Fabric.js</h3><p>The primary goal of the project is to allow users to select specific areas on educational materials and add labels to these areas. These labels are then explored by visually impaired individuals through mobile application integration, allowing them to receive audio feedback about these areas. This functionality is implemented on a Canvas structure created with the Fabric.js library.</p><h3>Shape Selection and Drawing</h3><p>Users can select areas they want to label on the Canvas. Various shapes, such as rectangles, circles, and triangles, can be selected and drawn by the user. These shapes are dynamically created using the Fabric.js library.</p><p><strong>Code Explanation:</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/766/1*ssxXUuLLu-Hbcr0C1sfevw.png" /></figure><ul><li><strong>shapeType Variable:</strong> The shapeType variable is set to rect (rectangle) based on the button clicked by the user.</li><li><strong>EventListener:</strong> The click event on the rectButton button is listened for and triggered.</li></ul><p>With this code, the user can select a rectangular shape and draw an area on the Canvas to prepare it for labeling. The dimensions and position of this area are determined using Fabric.js and rendered on the Canvas.</p><p>When the user clicks and drags the mouse, the selected shape is dynamically created as follows:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/406/1*zbEdbrA3DCVzfGy1jssnGQ.png" /></figure><ul><li><strong>canvas.on(&#39;mouse:down&#39;, function(o)):</strong> This event listener triggers when the mouse is clicked on the Canvas. The event starts the drawing process when the user begins to draw a shape.</li><li><strong>canvas.getActiveObject():</strong> This check ensures that no other shape is currently selected. If no shape is selected, a new shape can be drawn.</li><li><strong>isDown = true;</strong> This variable indicates the start of the mouse click, and the drawing process continues until the mouse is released.</li><li><strong>var pointer = canvas.getPointer(o.e);</strong> This line retrieves the x and y coordinates of the mouse click on the Canvas.</li><li><strong>origX and </strong><strong>origY:</strong> These variables store the starting point of the mouse click.</li><li><strong>switch (shapeType):</strong> This structure determines which shape will be drawn based on the type of shape selected by the user.</li><li><strong>fabric.Rect, </strong><strong>fabric.Circle, </strong><strong>fabric.Triangle:</strong> These Fabric.js classes create rectangle, circle, and triangle shapes, respectively.</li><li><strong>left and </strong><strong>top:</strong> These determine the starting point of the shape, which is the point where the mouse was clicked.</li><li><strong>width, </strong><strong>height, </strong><strong>radius:</strong> These determine the dimensions of the shape. Rectangles and triangles use width and height, while circles use radius.</li><li><strong>fill:</strong> This sets the color of the shape. In this example, the shapes are filled with a transparent blue color (rgba(0, 0, 255, 0.3)).</li><li><strong>transparentCorners: false:</strong> This ensures that the corners of the shape are not transparent, making the corner points more visible.</li><li><strong>canvas.add(currentShape);</strong> This line adds the created shape to the Canvas, allowing the user to see and interact with it visually.</li></ul><p>This code block enables users to draw shapes on the Canvas using the mouse. The starting point, size, and type of the shape are dynamically determined by mouse clicks and drags, and the shape is instantly rendered on the Canvas. This functionality is used to define areas that visually impaired individuals can explore via a mobile application. These defined areas are supported by audio feedback, completing the labeling process.</p><h3>Entering Label Information</h3><p>After a shape is selected, the user can add a label to that shape. This process is performed through a modal window, where the label information is filled in based on the user’s input.</p><p><strong>Code Explanation:</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/675/1*lm_iE5wxMdFOYZ0IGGY5Rg.png" /></figure><ul><li><strong>labelValue:</strong> This variable holds the label information entered by the user.</li><li><strong>currentShape.set(&#39;label&#39;, labelValue):</strong> The label value entered by the user is added to the selected shape (currentShape).</li><li><strong>canvas.renderAll():</strong> The Canvas is redrawn and updated.</li><li><strong>$(&#39;#labelModal&#39;).modal(&#39;hide&#39;):</strong> The modal window is closed.</li></ul><p>This process allows users to define specific areas in educational materials and add labels that provide information about these areas. These labels are then explored by visually impaired individuals via the mobile application, providing audio feedback.</p><h3>Saving Data</h3><p>Once the labeling process is complete, the selected areas and their associated label information need to be saved to the database. This is done by gathering data such as the coordinates, dimensions, shape type, and label information of the shapes and sending it to the server in JSON format.</p><p><strong>Code Explanation:</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/682/1*TInFgI2TVsYqP7FzLv3dPQ.png" /></figure><ul><li><strong>coordinates:</strong> This array contains the x and y coordinates, dimensions, label information, and shape type for each shape.</li><li><strong>$.ajax:</strong> This function sends the data to the server in JSON format.</li><li><strong>url:</strong> This specifies the server route where the labels will be saved.</li></ul><p>This ensures that the labeled areas are securely saved in the database. The mobile application then uses this data to provide tactile feedback and audio descriptions to visually impaired individuals.</p><h3>Conclusion</h3><p>The labeling functionality developed using Canvas and Fabric.js is designed to enhance the accessibility of educational materials for visually impaired individuals. Through mobile application integration, visually impaired children can explore the labeled areas by touch and receive audio feedback about these areas. This functionality makes educational materials more meaningful and accessible while enriching the learning process.</p><p>Such innovative technologies are paving the way for a new era in education, creating more inclusive learning environments for individuals with special needs. The project stands out as a significant step towards making education more effective and accessible.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f4d1f1f6dcf1" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[QR Code Integration with Laravel and Intervention Image v3:]]></title>
            <link>https://medium.com/@atacan.gurbuz/qr-code-integration-with-laravel-and-intervention-image-v3-c9595596ff17?source=rss-3ae5fa48a223------2</link>
            <guid isPermaLink="false">https://medium.com/p/c9595596ff17</guid>
            <category><![CDATA[image-processing]]></category>
            <category><![CDATA[intervention-image]]></category>
            <category><![CDATA[backend-development]]></category>
            <category><![CDATA[laravel]]></category>
            <category><![CDATA[php]]></category>
            <dc:creator><![CDATA[Atacan Gürbüz]]></dc:creator>
            <pubDate>Sun, 25 Aug 2024 19:50:52 GMT</pubDate>
            <atom:updated>2024-08-25T19:50:52.982Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/850/1*qxXGmlkb-GSDBs-Gkx6naw.png" /></figure><p>In modern web development, various technologies and libraries are employed to provide users with interactive and rich experiences. In our educational platform, we enhanced the interactive learning experience for visually impaired children by embedding QR codes into page images. To process these page images and successfully integrate the QR codes, we used the Intervention Image v3 library. In this article, we will dive into the technical details and coding steps of this integration process.</p><h4>1. Project Structure and Technologies Used</h4><p>This educational platform is built on the Laravel framework, following the MVC (Model-View-Controller) structure. The Intervention Image v3 library was used to embed QR codes into page images. This library is ideal for performing image processing tasks in PHP in a simple and flexible manner.</p><ul><li><strong>Laravel 8:</strong> A modern PHP framework, Laravel provides the foundational structure of the project with its MVC architecture.</li><li><strong>Intervention Image v3:</strong> A powerful image processing library for PHP, capable of handling tasks like cropping, resizing, and merging images quickly and effectively.</li></ul><h4>2. QR Code Integration Process: Coding Details</h4><p>The process of embedding a QR code into a page image involves several steps. This process starts with validating the data received from the user, followed by processing the image and finally integrating the QR code into the image.</p><p>Step 1: Validating User Input</p><p>In the first step, the image and QR code files uploaded by the user are checked to ensure they meet certain criteria. Laravel’s built-in validation mechanism is used to verify parameters such as file format and size.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/714/1*WPZeHrRxkoz4fRQicDVZ3g.png" /></figure><ul><li><strong>$request-&gt;validate([...]):</strong> Validates whether the file uploaded by the user meets specific criteria.</li><li><strong>&#39;qr_image&#39; =&gt; &#39;required|image|mimes:jpeg,png,jpg,gif|max:2048&#39;:</strong> Specifies that the QR code file must be an image in certain formats and within a maximum size limit.</li><li><strong>&#39;qr_image.max&#39; =&gt; &#39;The uploaded file size must not exceed 2MB.&#39;:</strong> Defines the error message to be shown if the file size exceeds 2MB.</li></ul><p>This validation ensures that the file uploaded by the user is of an acceptable format and size. The mimes parameter ensures that only certain image formats are accepted, rejecting files outside of commonly used formats like JPEG and PNG.</p><p>Step 2: Memory Management and Image Processing</p><p>Image processing tasks, especially with large files, can consume significant memory. To accommodate this, we temporarily increase the memory limit.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/713/1*xM4HZ8s5OwstDjN7o6OaUA.png" /></figure><ul><li><strong>ini_set(&#39;memory_limit&#39;, &#39;4M&#39;);:</strong> Temporarily increases the server&#39;s memory limit to 4MB.</li></ul><p>In this step, server-side memory management is optimized to ensure that the image processing tasks are successfully completed.</p><p>Step 3: Reading and Processing the Image</p><p>At this stage, the <strong>Intervention Image v3</strong> library comes into play. The page image and QR code uploaded by the user are read by Intervention Image, and various operations are performed on these images.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/714/1*q_7ifxwZ2GYsamMqEoOa-A.png" /></figure><ul><li><strong>$manager = new ImageManager(new Driver());:</strong> Creates a new instance of ImageManager for the Intervention Image library.</li><li><strong>$pageImage = $manager-&gt;read($pageImagePath);:</strong> Reads the page image from the specified file path.</li><li><strong>$qrCode = $manager-&gt;read($qrImage-&gt;getPathname());:</strong> Reads the QR code from the temporary file path where it was uploaded.</li></ul><p>The key here is to correctly read the image files using the $pageImagePath and $qrImage-&gt;getPathname() parameters. $pageImagePath is the path where the page image is stored on the server, and $qrImage-&gt;getPathname() refers to the temporary storage path of the QR code uploaded by the user.</p><p>Step 4: Resizing the QR Code</p><p>To appropriately position the QR code on the page, it needs to be resized. This ensures both the aesthetic quality of the image and the scannability of the QR code.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/696/1*lyUSA3oztBIZPlgncEVo1g.png" /></figure><ul><li><strong>$qrCode-&gt;resize(400, 400);:</strong> Resizes the QR code to 400x400 pixels.</li></ul><p>Here, the resize method scales the QR code to 400x400 pixels. This resizing ensures that the QR code fits well within the overall page image, allowing it to be scanned smoothly.</p><p>Step 5: Placing the QR Code on the Page Image</p><p>Now we are ready to place the QR code on the page image. This is done using the place method. The QR code is positioned in the top-left corner of the page image with a 50x50 pixel offset.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/755/1*ukeb6eYfqsH-QzabW-ec-A.png" /></figure><ul><li><strong>$pageImage-&gt;place($qrCode, &#39;top-left&#39;, 50, 50);:</strong> Places the QR code on the top-left corner of the page image, offset by 50x50 pixels.</li></ul><p>In this step, the place method positions the QR code at a specific location on the page image. The top-left parameter specifies that the QR code should be placed in the top-left corner of the image, while the 50, 50 parameters define the offset from this corner.</p><p>Step 6: Saving the Updated Image</p><p>After successfully embedding the QR code into the page image, the updated image file needs to be saved. This ensures that the final version of the page image presented to the user includes the QR code.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/699/1*F4auhug8JPR84QWcmpccTA.png" /></figure><ul><li><strong>$pageImage-&gt;save($pageImagePath);:</strong> Saves the updated page image to the specified file path.</li></ul><p>The save method overwrites the original page image, saving the new version with the embedded QR code. This step ensures that the image shown to the end user includes the QR code.</p><p>Step 7: Providing User Feedback and Redirection</p><p>Finally, after the process is successfully completed, the user is given feedback and redirected to the next step. In this example, the user is redirected to a screen where they can add tags to the page image.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/727/1*Q2iHYsDyfV-dKXHs2RdvlQ.png" /></figure><ul><li><strong>return redirect()-&gt;route(&#39;pages.add_tags&#39;, [&#39;page&#39; =&gt; $page-&gt;page_id]):</strong> Redirects the user to the screen for adding tags to the page.</li><li><strong>-&gt;with(&#39;success&#39;, &#39;Page successfully created and QR code added.&#39;);:</strong> Sends a success message to the user indicating that the operation was completed successfully.</li></ul><p>Here, the redirect function guides the user to the next step, which is the tag-adding screen. Additionally, the with method provides the user with a success message confirming that the operation was completed successfully.</p><h4>Technical Observations and Considerations</h4><ul><li><strong>Image Processing Performance:</strong> Ensuring sufficient memory during image processing is crucial. The Intervention Image library allows you to optimize memory usage when working with large image files.</li><li><strong>Correct Positioning:</strong> Proper placement of the QR code on the image is critical for both aesthetics and functionality. The Intervention Image library facilitates such placement operations.</li><li><strong>High-Quality Output:</strong> The scannability of QR codes depends on the accuracy of resizing and positioning operations. Intervention Image provides high-quality output to ensure these operations are successful.</li></ul><h4>Conclusion</h4><p>The integration of QR codes into page images was a significant step in improving the user experience. The <strong>Intervention Image v3</strong> library provided the flexibility and powerful features needed to seamlessly integrate QR codes. This technical solution added value to the project while enhancing the accessibility of educational materials for visually impaired children, supporting their interactive learning processes.</p><p>Such technical solutions are of great importance, especially in projects requiring accessibility. Thanks to powerful libraries like Intervention Image, even challenging integrations can be implemented quickly and effectively.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c9595596ff17" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>