<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Muhammet Şafak — Blog</title><description>Polyglot developer and system architect Muhammet Şafak. Hands-on writing on building applications with PHP, Laravel, JavaScript and Go; a developer journal, projects and experience spanning from 2014 to today.</description><link>https://www.muhammetsafak.com.tr/</link><language>en-US</language><item><title>Rediscovering Modern CSS</title><link>https://www.muhammetsafak.com.tr/en/blog/rediscovering-modern-css/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/rediscovering-modern-css/</guid><description>The problems we used to solve with JavaScript and preprocessors now have native CSS answers: container queries, :has(), and native nesting.</description><pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate><category>arayuz</category><category>css</category></item><item><title>Resolving an Invoice Number Collision in an E-Invoice Integration</title><link>https://www.muhammetsafak.com.tr/en/blog/resolving-invoice-number-collision-in-e-invoice-integration/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/resolving-invoice-number-collision-in-e-invoice-integration/</guid><description>Two workers produced the same invoice number in production. A log of how I resolved the race condition vs. legal gap dilemma in a real project.</description><pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate><category>gunluk</category><category>php</category><category>laravel</category><category>rabbitmq</category><category>mysql</category></item><item><title>AI-assisted self-review — what it speeds up, where it falls short</title><link>https://www.muhammetsafak.com.tr/en/blog/ai-self-review-what-it-speeds-up-where-it-falls-short/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/ai-self-review-what-it-speeds-up-where-it-falls-short/</guid><description>Three months ago I built a tool to audit my own diffs. This post is not about the &apos;why&apos; but the &apos;how much&apos;: which workflow layers it plugs into, the numbers behind the speedup, the bug patterns it keeps catching — and where it hits its limits.</description><pubDate>Thu, 28 May 2026 00:00:00 GMT</pubDate><category>gunluk</category><category>araclar</category><category>git</category><category>go</category></item><item><title>Asking a Tool to Review My Own Diff — Why I Built CommitBrief</title><link>https://www.muhammetsafak.com.tr/en/blog/asking-a-tool-to-review-my-own-diff-commitbrief/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/asking-a-tool-to-review-my-own-diff-commitbrief/</guid><description>One afternoon I ran headfirst into the limits of self-review, so I wrote a tool that audits my own diff right from the terminal: CommitBrief. A note on why I built it, how it works, and what problem it actually solves.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate><category>gunluk</category><category>araclar</category><category>git</category><category>go</category></item><item><title>Which Methodology for Which Project? — Notes from an 18-Year Developer</title><link>https://www.muhammetsafak.com.tr/en/blog/which-methodology-for-which-project-decision-matrix/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/which-methodology-for-which-project-decision-matrix/</guid><description>Waterfall, Agile, or Hybrid? That&apos;s the wrong question. A decision matrix from 18 years of production experience, three real case studies, and a way out of methodology religion.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate><category>gunluk</category><category>kariyer</category></item><item><title>Is PHP Dead? The 2026 Picture, by the Numbers</title><link>https://www.muhammetsafak.com.tr/en/blog/is-php-dead-2026-the-data/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/is-php-dead-2026-the-data/</guid><description>A view from 18 years of PHP development — the 2026 state of PHP through W3Techs, Stack Overflow, JetBrains, and Packagist data, including the language&apos;s often-ignored weaknesses.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>diller</category><category>php</category><category>kariyer</category></item><item><title>Git in Production: A Senior Engineer&apos;s Practical Guide</title><link>https://www.muhammetsafak.com.tr/en/blog/git-in-production-a-senior-engineers-practical-guide/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/git-in-production-a-senior-engineers-practical-guide/</guid><description>From workflow selection to bug hunting with bisect, rebase discipline, worktrees, and signed commits — things I noticed after years of using Git.</description><pubDate>Sat, 23 May 2026 00:00:00 GMT</pubDate><category>araclar</category><category>git</category></item><item><title>PHP Constants, Enums, and Readonly: One Decision Tree for 8 Tools</title><link>https://www.muhammetsafak.com.tr/en/blog/php-constants-enums-readonly-decision-tree/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/php-constants-enums-readonly-decision-tree/</guid><description>From define to asymmetric visibility — a three-axis mental model and a concrete decision matrix for getting immutability right in modern PHP.</description><pubDate>Sat, 23 May 2026 00:00:00 GMT</pubDate><category>diller</category><category>php</category><category>oop</category></item><item><title>Twelve Years of This Journal: Looking Back</title><link>https://www.muhammetsafak.com.tr/en/blog/twelve-years-of-this-journal-looking-back/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/twelve-years-of-this-journal-looking-back/</guid><description>Everything written in this journal from 2014 to 2026, and the story of growth it tells — and a closing.</description><pubDate>Sun, 03 May 2026 00:00:00 GMT</pubDate><category>gunluk</category><category>php</category></item><item><title>Visibility: why writing is a career investment</title><link>https://www.muhammetsafak.com.tr/en/blog/visibility-writing-as-a-career-investment/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/visibility-writing-as-a-career-investment/</guid><description>Writing sharpens your thinking and compounds over time. On the career value of being visible — not as personal branding, but as an honest record.</description><pubDate>Sun, 05 Apr 2026 00:00:00 GMT</pubDate><category>gunluk</category><category>kariyer</category></item><item><title>Being Polyglot Is an Outcome, Not a Goal</title><link>https://www.muhammetsafak.com.tr/en/blog/being-polyglot-is-an-outcome-not-a-goal/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/being-polyglot-is-an-outcome-not-a-goal/</guid><description>How becoming a multi-language developer turned into a supposed goal, why it never really was one, and how I actually got there.</description><pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate><category>gunluk</category><category>go</category><category>python</category><category>php</category></item><item><title>Twelve years with Laravel: growing alongside a framework</title><link>https://www.muhammetsafak.com.tr/en/blog/twelve-years-with-laravel-growing-with-a-framework/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/twelve-years-with-laravel-growing-with-a-framework/</guid><description>From 2014 to 2026, twelve years with Laravel — a story of maturing with a tool, outgrowing it, and choosing it again.</description><pubDate>Sun, 01 Feb 2026 00:00:00 GMT</pubDate><category>framework</category><category>laravel</category></item><item><title>Building Applications with PHP in 2026: State of the Ecosystem</title><link>https://www.muhammetsafak.com.tr/en/blog/building-applications-with-php-in-2026-state-of-the-ecosystem/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/building-applications-with-php-in-2026-state-of-the-ecosystem/</guid><description>The real state of PHP in 2026: language maturity, ecosystem health, and why the &apos;it&apos;s dead&apos; narrative is still wrong.</description><pubDate>Sun, 04 Jan 2026 00:00:00 GMT</pubDate><category>diller</category><category>php</category></item><item><title>Eleven Years In: A Developer&apos;s Shifting Priorities</title><link>https://www.muhammetsafak.com.tr/en/blog/eleven-years-in-a-developers-shifting-priorities/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/eleven-years-in-a-developers-shifting-priorities/</guid><description>A reflection on how my priorities as a developer have shifted over eleven years of this journal — from speed to resilience, from code to decisions.</description><pubDate>Sun, 07 Dec 2025 00:00:00 GMT</pubDate><category>gunluk</category><category>php</category></item><item><title>The Changing Craft of Writing Code in the Age of AI</title><link>https://www.muhammetsafak.com.tr/en/blog/the-changing-craft-of-writing-code-in-the-age-of-ai/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/the-changing-craft-of-writing-code-in-the-age-of-ai/</guid><description>How much of writing code have AI tools taken over, and what is left for the developer? A reflection on the shifting craft.</description><pubDate>Sun, 02 Nov 2025 00:00:00 GMT</pubDate><category>gunluk</category><category>araclar</category></item><item><title>Mentorship and knowledge sharing: growing by helping others grow</title><link>https://www.muhammetsafak.com.tr/en/blog/mentorship-and-knowledge-sharing-growing-by-helping-others-grow/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/mentorship-and-knowledge-sharing-growing-by-helping-others-grow/</guid><description>A career post on why mentorship is not a sacrifice but one of the most effective tools for a senior developer&apos;s own growth.</description><pubDate>Sun, 05 Oct 2025 00:00:00 GMT</pubDate><category>gunluk</category><category>kariyer</category></item><item><title>From Idea to Three Platforms: My End-to-End Feature Delivery Flow</title><link>https://www.muhammetsafak.com.tr/en/blog/feature-from-idea-to-three-platforms-end-to-end-flow/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/feature-from-idea-to-three-platforms-end-to-end-flow/</guid><description>The mature, repeatable process I follow when shipping a feature across API, web, and mobile simultaneously.</description><pubDate>Sun, 07 Sep 2025 00:00:00 GMT</pubDate><category>gunluk</category><category>laravel</category><category>react-native</category></item><item><title>PHP 8.5 is on the way: the maturing face of the language</title><link>https://www.muhammetsafak.com.tr/en/blog/php-85-on-the-way-the-languages-maturing-face/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/php-85-on-the-way-the-languages-maturing-face/</guid><description>PHP 8.5 isn&apos;t out yet, but reading through the proposals on the table reveals how a language evolves over more than a decade.</description><pubDate>Sun, 03 Aug 2025 00:00:00 GMT</pubDate><category>diller</category><category>php</category></item><item><title>How Far Can You Go with Go&apos;s Standard Library</title><link>https://www.muhammetsafak.com.tr/en/blog/how-far-can-you-go-with-gos-standard-library/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/how-far-can-you-go-with-gos-standard-library/</guid><description>A hands-on look at just how much mileage Go&apos;s rich standard library gives you, and a principled approach to deciding when to reach for an external dependency.</description><pubDate>Sun, 06 Jul 2025 00:00:00 GMT</pubDate><category>diller</category><category>go</category></item><item><title>Specialist or Generalist: A T-Shaped Career</title><link>https://www.muhammetsafak.com.tr/en/blog/specialist-vs-generalist-t-shaped-career/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/specialist-vs-generalist-t-shaped-career/</guid><description>On the tension between deep specialization and broad generalism, and how the T-shaped career model resolves that equation.</description><pubDate>Sun, 01 Jun 2025 00:00:00 GMT</pubDate><category>gunluk</category><category>kariyer</category></item><item><title>Managing Updates in Expo with OTA</title><link>https://www.muhammetsafak.com.tr/en/blog/managing-expo-ota-updates/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/managing-expo-ota-updates/</guid><description>Practical notes on shipping quick fixes without waiting for the app store review cycle, using Expo Updates — including its real limits.</description><pubDate>Sun, 04 May 2025 00:00:00 GMT</pubDate><category>gunluk</category><category>react-native</category></item><item><title>React 19 and the New Face of Forms: Actions</title><link>https://www.muhammetsafak.com.tr/en/blog/react-19-forms-and-actions/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/react-19-forms-and-actions/</guid><description>I evaluate React 19&apos;s stable-release form actions model by comparing it with previous approaches.</description><pubDate>Sun, 06 Apr 2025 00:00:00 GMT</pubDate><category>arayuz</category><category>react</category></item><item><title>Maintaining a polyglot codebase: the cost of context switching</title><link>https://www.muhammetsafak.com.tr/en/blog/maintaining-a-polyglot-codebase-the-cost-of-context-switching/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/maintaining-a-polyglot-codebase-the-cost-of-context-switching/</guid><description>The hidden cognitive overhead of working in multiple languages simultaneously, and how I manage it.</description><pubDate>Sun, 02 Mar 2025 00:00:00 GMT</pubDate><category>gunluk</category><category>go</category><category>php</category><category>typescript</category></item><item><title>Laravel 12: As the Release Cadence Matures</title><link>https://www.muhammetsafak.com.tr/en/blog/laravel-12-release-cadence-maturing/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/laravel-12-release-cadence-maturing/</guid><description>I evaluate the changes in Laravel 12 and how the framework&apos;s annual release tempo affects project planning.</description><pubDate>Sun, 02 Feb 2025 00:00:00 GMT</pubDate><category>framework</category><category>laravel</category></item><item><title>Tailwind CSS 4: new engine and configuration</title><link>https://www.muhammetsafak.com.tr/en/blog/tailwind-css-4-new-engine-and-configuration/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/tailwind-css-4-new-engine-and-configuration/</guid><description>A calm assessment of the Oxide engine and CSS-first configuration approach that Tailwind CSS 4 brings — with the composure a major version bump deserves.</description><pubDate>Sun, 05 Jan 2025 00:00:00 GMT</pubDate><category>arayuz</category><category>css</category><category>tailwind</category></item><item><title>Building Your Own Product Solo: The Looplio Experience</title><link>https://www.muhammetsafak.com.tr/en/blog/building-your-own-product-solo-the-looplio-experience/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/building-your-own-product-solo-the-looplio-experience/</guid><description>An honest journal from a developer running the API, web, and mobile single-handedly — the real trade-offs of solo product development.</description><pubDate>Sun, 01 Dec 2024 00:00:00 GMT</pubDate><category>gunluk</category><category>laravel</category></item><item><title>PHP 8.4 is coming: property hooks and asymmetric visibility</title><link>https://www.muhammetsafak.com.tr/en/blog/php-8-4-property-hooks-and-asymmetric-visibility/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/php-8-4-property-hooks-and-asymmetric-visibility/</guid><description>Property hooks and asymmetric visibility in PHP 8.4, and how these additions will change the way we model classes.</description><pubDate>Sun, 03 Nov 2024 00:00:00 GMT</pubDate><category>diller</category><category>php</category></item><item><title>Shipping a Feature Across Three Layers: API, Web, and Mobile</title><link>https://www.muhammetsafak.com.tr/en/blog/shipping-a-feature-across-three-layers-api-web-mobile/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/shipping-a-feature-across-three-layers-api-web-mobile/</guid><description>The end-to-end workflow for delivering a single feature simultaneously across API, web, and mobile layers — lessons from building Looplio.</description><pubDate>Sun, 06 Oct 2024 00:00:00 GMT</pubDate><category>gunluk</category><category>laravel</category><category>react-native</category></item><item><title>Home Cloud Server: Raspberry Pi 5 Upgrade</title><link>https://www.muhammetsafak.com.tr/en/blog/home-cloud-server-raspberry-pi5-upgrade/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/home-cloud-server-raspberry-pi5-upgrade/</guid><description>Building a home cloud server with Raspberry Pi 5: CasaOS, Nextcloud, RAID storage, and Cloudflare Tunnel.</description><pubDate>Sun, 22 Sep 2024 00:00:00 GMT</pubDate><category>gunluk</category><category>linux</category></item><item><title>Submitting a Mobile App to the Stores with Expo</title><link>https://www.muhammetsafak.com.tr/en/blog/submitting-a-mobile-app-to-the-stores-with-expo/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/submitting-a-mobile-app-to-the-stores-with-expo/</guid><description>A first-hand account of the preparation steps and real experience of submitting a React Native app to the App Store and Google Play using Expo and EAS Build.</description><pubDate>Sun, 01 Sep 2024 00:00:00 GMT</pubDate><category>gunluk</category><category>react-native</category></item><item><title>React Native Performance: List Rendering</title><link>https://www.muhammetsafak.com.tr/en/blog/react-native-performance-list-rendering/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/react-native-performance-list-rendering/</guid><description>Practical techniques for keeping large lists smooth in React Native — real-world experience with FlatList, memo, and keyExtractor.</description><pubDate>Sun, 04 Aug 2024 00:00:00 GMT</pubDate><category>gunluk</category><category>react-native</category></item><item><title>Did Someone Say GitHub Actions?</title><link>https://www.muhammetsafak.com.tr/en/blog/did-someone-say-github-actions/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/did-someone-say-github-actions/</guid><description>An introduction to CI/CD with GitHub Actions: how to set up workflows and automate your deployment process.</description><pubDate>Tue, 23 Jul 2024 00:00:00 GMT</pubDate><category>araclar</category><category>github-actions</category></item><item><title>HTTP Basic Authentication</title><link>https://www.muhammetsafak.com.tr/en/blog/http-basic-authentication/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/http-basic-authentication/</guid><description>What is HTTP Basic Authentication, how does it work, and when should you use it? A practical breakdown of the oldest auth mechanism in the web stack.</description><pubDate>Sun, 14 Jul 2024 00:00:00 GMT</pubDate><category>web</category></item><item><title>JWT Authentication: How It Works, When It Fits, and Common Pitfalls</title><link>https://www.muhammetsafak.com.tr/en/blog/jwt-authentication-how-it-works/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/jwt-authentication-how-it-works/</guid><description>A practical look at JWT authentication — token structure, signing mechanics, and the trade-offs you need to understand before reaching for it.</description><pubDate>Sat, 13 Jul 2024 00:00:00 GMT</pubDate><category>web</category><category>jwt</category></item><item><title>Idempotency in APIs: Safely Repeating the Same Request</title><link>https://www.muhammetsafak.com.tr/en/blog/idempotency-in-apis-safely-repeating-the-same-request/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/idempotency-in-apis-safely-repeating-the-same-request/</guid><description>Designing API operations that produce no side effects when repeated; idempotency keys and practical implementation at the application layer.</description><pubDate>Sun, 07 Jul 2024 00:00:00 GMT</pubDate><category>web</category><category>api</category></item><item><title>Side projects and open source: what they add to your career and their real cost</title><link>https://www.muhammetsafak.com.tr/en/blog/side-projects-and-open-source-career-value-and-real-cost/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/side-projects-and-open-source-career-value-and-real-cost/</guid><description>An honest assessment of how side projects and open source contribute to a career: the returns, the costs, and when archiving a project is the right call.</description><pubDate>Sun, 02 Jun 2024 00:00:00 GMT</pubDate><category>gunluk</category><category>kariyer</category></item><item><title>Writing Tests in Go: Table-Driven Tests</title><link>https://www.muhammetsafak.com.tr/en/blog/table-driven-tests-in-go/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/table-driven-tests-in-go/</guid><description>A hands-on introduction to Go&apos;s standard testing package and the table-driven test pattern, embracing the language&apos;s minimal testing philosophy.</description><pubDate>Sun, 05 May 2024 00:00:00 GMT</pubDate><category>diller</category><category>go</category><category>testing</category></item><item><title>Feeding mobile and web with the same calendar logic (Looplio diary)</title><link>https://www.muhammetsafak.com.tr/en/blog/feeding-mobile-and-web-with-the-same-calendar-logic-looplio-diary/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/feeding-mobile-and-web-with-the-same-calendar-logic-looplio-diary/</guid><description>The practical decisions and lessons learned while consistently serving a single business logic to both React Native and web clients in Looplio.</description><pubDate>Sun, 07 Apr 2024 00:00:00 GMT</pubDate><category>gunluk</category><category>laravel</category><category>react-native</category></item><item><title>Laravel 11&apos;s New Slim Skeleton Structure</title><link>https://www.muhammetsafak.com.tr/en/blog/laravel-11-slim-skeleton-structure/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/laravel-11-slim-skeleton-structure/</guid><description>A look at Laravel 11&apos;s leaner skeleton, the defaults that were removed, and the concrete impact on everyday development workflows.</description><pubDate>Sun, 03 Mar 2024 00:00:00 GMT</pubDate><category>framework</category><category>laravel</category></item><item><title>Navigation and screen architecture in React Native</title><link>https://www.muhammetsafak.com.tr/en/blog/react-native-navigation-and-screen-architecture/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/react-native-navigation-and-screen-architecture/</guid><description>Practical decisions and screen architecture approaches for setting up React Native Navigation Stack, Tab, and Drawer structures in the context of Looplio.</description><pubDate>Sun, 04 Feb 2024 00:00:00 GMT</pubDate><category>gunluk</category><category>react-native</category></item><item><title>The job-change decision: stay or leave</title><link>https://www.muhammetsafak.com.tr/en/blog/job-change-decision-stay-or-leave/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/job-change-decision-stay-or-leave/</guid><description>How to turn a leaving-or-staying decision from an emotional reaction into a measurable evaluation — and distinguish legitimate signals from temporary frustration.</description><pubDate>Sun, 07 Jan 2024 00:00:00 GMT</pubDate><category>gunluk</category><category>kariyer</category></item><item><title>Four Languages in One Year: The Mental Flexibility That Polyglot Practice Brings</title><link>https://www.muhammetsafak.com.tr/en/blog/four-languages-in-one-year-mental-flexibility-of-polyglot-practice/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/four-languages-in-one-year-mental-flexibility-of-polyglot-practice/</guid><description>A reflection on how moving between PHP, Go, Python, and TypeScript within a single year shaped the way I think about software.</description><pubDate>Sun, 03 Dec 2023 00:00:00 GMT</pubDate><category>gunluk</category><category>go</category><category>python</category><category>typescript</category><category>php</category></item><item><title>PHP 8.3: Typed Class Constants and What&apos;s New</title><link>https://www.muhammetsafak.com.tr/en/blog/php-8-3-typed-class-constants-and-new-additions/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/php-8-3-typed-class-constants-and-new-additions/</guid><description>Typed class constants, json_validate, #[Override], and dynamic constant access in PHP 8.3 — the language&apos;s steady steps toward consistency.</description><pubDate>Sun, 05 Nov 2023 00:00:00 GMT</pubDate><category>diller</category><category>php</category></item><item><title>Type-level programming in TypeScript: utility types</title><link>https://www.muhammetsafak.com.tr/en/blog/type-level-programming-in-typescript-utility-types/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/type-level-programming-in-typescript-utility-types/</guid><description>TypeScript&apos;s built-in utility types and type transformation mechanisms: using the type system as a first-class tool.</description><pubDate>Sun, 01 Oct 2023 00:00:00 GMT</pubDate><category>diller</category><category>typescript</category></item><item><title>Filtering the hype: you don&apos;t have to learn every new technology</title><link>https://www.muhammetsafak.com.tr/en/blog/filtering-the-hype-you-dont-have-to-learn-every-new-technology/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/filtering-the-hype-you-dont-have-to-learn-every-new-technology/</guid><description>How to manage your learning budget against the constant pressure of new tools and frameworks — a practical approach to deciding what to learn and when.</description><pubDate>Sun, 03 Sep 2023 00:00:00 GMT</pubDate><category>gunluk</category><category>kariyer</category></item><item><title>Getting Started with Big Data Using Elasticsearch and Kibana</title><link>https://www.muhammetsafak.com.tr/en/blog/getting-started-with-big-data-using-elasticsearch-and-kibana/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/getting-started-with-big-data-using-elasticsearch-and-kibana/</guid><description>An introduction to Elasticsearch and Kibana: the fundamentals of full-text search, data analysis, and visualization at scale.</description><pubDate>Thu, 10 Aug 2023 00:00:00 GMT</pubDate><category>araclar</category><category>elasticsearch</category></item><item><title>First steps into mobile development with React Native and Expo</title><link>https://www.muhammetsafak.com.tr/en/blog/first-steps-into-mobile-development-with-react-native-and-expo/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/first-steps-into-mobile-development-with-react-native-and-expo/</guid><description>A web developer&apos;s experience crossing into mobile: what I learned while setting up Looplio with React Native and Expo, and how my expectations shifted.</description><pubDate>Sun, 06 Aug 2023 00:00:00 GMT</pubDate><category>gunluk</category><category>react-native</category></item><item><title>RabbitMQ with PHP</title><link>https://www.muhammetsafak.com.tr/en/blog/rabbitmq-with-php/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/rabbitmq-with-php/</guid><description>Using RabbitMQ with PHP: creating a message queue, publishing messages, and consuming them.</description><pubDate>Sat, 22 Jul 2023 00:00:00 GMT</pubDate><category>araclar</category><category>php</category><category>rabbitmq</category></item><item><title>Async Job Processing with Laravel Queue and Supervisor</title><link>https://www.muhammetsafak.com.tr/en/blog/async-job-processing-with-laravel-queue-and-supervisor/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/async-job-processing-with-laravel-queue-and-supervisor/</guid><description>How to set up asynchronous job queues in Laravel using the database driver, and keep workers running reliably in production with Supervisor.</description><pubDate>Sun, 02 Jul 2023 00:00:00 GMT</pubDate><category>framework</category><category>php</category><category>laravel</category></item><item><title>Using Design Patterns in PHP Without Overdoing It</title><link>https://www.muhammetsafak.com.tr/en/blog/using-design-patterns-in-php-without-overdoing-it/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/using-design-patterns-in-php-without-overdoing-it/</guid><description>Design patterns are a tool, not a goal. When to use which pattern in PHP, and when they create unnecessary complexity.</description><pubDate>Sun, 02 Jul 2023 00:00:00 GMT</pubDate><category>diller</category><category>php</category><category>oop</category></item><item><title>Frontend state management: Pinia in the post-Vuex era</title><link>https://www.muhammetsafak.com.tr/en/blog/frontend-state-management-pinia-after-vuex/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/frontend-state-management-pinia-after-vuex/</guid><description>How Pinia replaced Vuex in the Vue ecosystem: less boilerplate, better TypeScript support, and a more mature approach to state management.</description><pubDate>Sun, 04 Jun 2023 00:00:00 GMT</pubDate><category>arayuz</category><category>vue</category></item><item><title>Letter to my 2014 self: advice for the early years</title><link>https://www.muhammetsafak.com.tr/en/blog/letter-to-my-2014-self-advice-for-the-early-years/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/letter-to-my-2014-self-advice-for-the-early-years/</guid><description>Looking back at 2014, the year this journal started — what I over-prioritized, what I neglected, and what I would do differently in those early career years.</description><pubDate>Sun, 07 May 2023 00:00:00 GMT</pubDate><category>gunluk</category><category>kariyer</category></item><item><title>Real-time features in Laravel: WebSocket and broadcasting</title><link>https://www.muhammetsafak.com.tr/en/blog/real-time-features-in-laravel-websocket-and-broadcasting/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/real-time-features-in-laravel-websocket-and-broadcasting/</guid><description>Adding live updates with Laravel Broadcasting: event-driven publishing, Pusher integration, and listening on the client side.</description><pubDate>Sun, 02 Apr 2023 00:00:00 GMT</pubDate><category>web</category><category>laravel</category></item><item><title>Taking AI&apos;s Impact on Coding Seriously for the First Time</title><link>https://www.muhammetsafak.com.tr/en/blog/taking-ais-impact-on-coding-seriously/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/taking-ais-impact-on-coding-seriously/</guid><description>I&apos;ve been using ChatGPT for months, but something shifted this month — a curiosity turned into a real observation that made me question how I work.</description><pubDate>Sun, 05 Mar 2023 00:00:00 GMT</pubDate><category>gunluk</category><category>araclar</category></item><item><title>PHP Traits: What They Are and When to Use Them</title><link>https://www.muhammetsafak.com.tr/en/blog/php-traits-what-they-are-and-when-to-use-them/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/php-traits-what-they-are-and-when-to-use-them/</guid><description>A practical explanation of PHP traits, why they exist, and how to use them to share behavior across unrelated classes without the pitfalls of multiple inheritance.</description><pubDate>Fri, 17 Feb 2023 00:00:00 GMT</pubDate><category>diller</category><category>php</category></item><item><title>Laravel 10: Stricter Types and the Process Layer</title><link>https://www.muhammetsafak.com.tr/en/blog/laravel-10-stricter-types-and-the-process-layer/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/laravel-10-stricter-types-and-the-process-layer/</guid><description>Laravel 10&apos;s type discipline and the new Process facade: how the framework&apos;s maturing codebase translates into better day-to-day development.</description><pubDate>Sun, 05 Feb 2023 00:00:00 GMT</pubDate><category>framework</category><category>laravel</category></item><item><title>Documenting APIs with OpenAPI</title><link>https://www.muhammetsafak.com.tr/en/blog/documenting-apis-with-openapi/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/documenting-apis-with-openapi/</guid><description>Deriving documentation from code and sharing a single source of truth with clients: integrating the OpenAPI specification into your daily development workflow.</description><pubDate>Sun, 01 Jan 2023 00:00:00 GMT</pubDate><category>web</category><category>api</category></item><item><title>Using ChatGPT for the First Time as a Developer</title><link>https://www.muhammetsafak.com.tr/en/blog/using-chatgpt-for-the-first-time-as-a-developer/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/using-chatgpt-for-the-first-time-as-a-developer/</guid><description>Honest first impressions from a developer after a few days with OpenAI&apos;s newly released ChatGPT: where it impresses, and where it falls short.</description><pubDate>Sun, 04 Dec 2022 00:00:00 GMT</pubDate><category>gunluk</category><category>araclar</category></item><item><title>PHP 8.2 Is Coming: Readonly Classes and New Types</title><link>https://www.muhammetsafak.com.tr/en/blog/php-8-2-readonly-classes-and-new-types/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/php-8-2-readonly-classes-and-new-types/</guid><description>A look at readonly classes, DNF types, and standalone type declarations in PHP 8.2, and their impact on domain modeling.</description><pubDate>Sun, 06 Nov 2022 00:00:00 GMT</pubDate><category>diller</category><category>php</category></item><item><title>Naming in a Codebase: An Architectural Matter</title><link>https://www.muhammetsafak.com.tr/en/blog/naming-in-a-codebase-an-architectural-matter/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/naming-in-a-codebase-an-architectural-matter/</guid><description>Why naming is not merely a style choice, but a design decision in its own right — patterns I have observed over the years.</description><pubDate>Sun, 02 Oct 2022 00:00:00 GMT</pubDate><category>diller</category><category>oop</category></item><item><title>End-to-end type safety with TypeScript: from API to UI</title><link>https://www.muhammetsafak.com.tr/en/blog/end-to-end-type-safety-with-typescript-from-api-to-ui/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/end-to-end-type-safety-with-typescript-from-api-to-ui/</guid><description>How to carry your type contract from the backend API to the frontend interface without breaking it — and the practical approaches to get there.</description><pubDate>Sun, 04 Sep 2022 00:00:00 GMT</pubDate><category>diller</category><category>typescript</category></item><item><title>Automating repetitive tasks with Python</title><link>https://www.muhammetsafak.com.tr/en/blog/automating-repetitive-tasks-with-python/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/automating-repetitive-tasks-with-python/</guid><description>How to move manual workflows into reliable Python scripts: which tasks are worth scripting and how to do it right.</description><pubDate>Sun, 07 Aug 2022 00:00:00 GMT</pubDate><category>diller</category><category>python</category></item><item><title>Seniority: The Responsibility That Doesn&apos;t Come with the Title</title><link>https://www.muhammetsafak.com.tr/en/blog/seniority-the-responsibility-that-doesnt-come-with-the-title/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/seniority-the-responsibility-that-doesnt-come-with-the-title/</guid><description>The title often arrives before genuine seniority does. On why seniority is not about technical knowledge, but about the capacity to make decisions under ambiguity.</description><pubDate>Sun, 03 Jul 2022 00:00:00 GMT</pubDate><category>gunluk</category><category>kariyer</category></item><item><title>React 18 and Concurrent Rendering</title><link>https://www.muhammetsafak.com.tr/en/blog/react-18-concurrent-rendering/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/react-18-concurrent-rendering/</guid><description>How React 18&apos;s concurrent render model changes application behavior, and what that means in practice.</description><pubDate>Sun, 05 Jun 2022 00:00:00 GMT</pubDate><category>arayuz</category><category>react</category></item><item><title>Designing Value Objects in Modern PHP</title><link>https://www.muhammetsafak.com.tr/en/blog/designing-value-objects-in-modern-php/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/designing-value-objects-in-modern-php/</guid><description>Embedding meaning into code instead of relying on primitives: why and how to design value objects in PHP.</description><pubDate>Sun, 01 May 2022 00:00:00 GMT</pubDate><category>diller</category><category>php</category></item><item><title>Designing APIs the Contract-First Way</title><link>https://www.muhammetsafak.com.tr/en/blog/contract-first-api-design/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/contract-first-api-design/</guid><description>How a contract-first approach aligns expectations across teams before a single line of code is written, and what it looks like in practice.</description><pubDate>Sun, 03 Apr 2022 00:00:00 GMT</pubDate><category>web</category><category>api</category></item><item><title>Go 1.18 Generics: Toward the End of a Long Wait</title><link>https://www.muhammetsafak.com.tr/en/blog/go-1-18-generics-toward-the-end-of-a-long-wait/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/go-1-18-generics-toward-the-end-of-a-long-wait/</guid><description>Go 1.18&apos;s generic support shows how a language can be reshaped thoughtfully. First impressions and trade-offs.</description><pubDate>Sun, 06 Mar 2022 00:00:00 GMT</pubDate><category>diller</category><category>go</category></item><item><title>Docker containerization: installation and basic usage</title><link>https://www.muhammetsafak.com.tr/en/blog/docker-containerization-installation-and-basic-usage/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/docker-containerization-installation-and-basic-usage/</guid><description>A hands-on beginner&apos;s guide to Docker&apos;s container architecture, core commands, and the concepts of volumes and networking.</description><pubDate>Tue, 22 Feb 2022 00:00:00 GMT</pubDate><category>araclar</category><category>docker</category></item><item><title>Laravel 9: New Release Cadence and PHP 8 Compatibility</title><link>https://www.muhammetsafak.com.tr/en/blog/laravel-9-release-cadence-and-php-8-compatibility/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/laravel-9-release-cadence-and-php-8-compatibility/</guid><description>How Laravel 9&apos;s annual release cadence affects project planning, and what PHP 8 compatibility means for your codebase.</description><pubDate>Sun, 06 Feb 2022 00:00:00 GMT</pubDate><category>framework</category><category>laravel</category></item><item><title>Being a polyglot developer: choosing the language for the problem</title><link>https://www.muhammetsafak.com.tr/en/blog/being-a-polyglot-developer-choosing-the-language-for-the-problem/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/being-a-polyglot-developer-choosing-the-language-for-the-problem/</guid><description>Personal notes on why mastering multiple programming languages is a matter of tool selection, not identity.</description><pubDate>Sun, 02 Jan 2022 00:00:00 GMT</pubDate><category>gunluk</category><category>go</category><category>python</category><category>php</category></item><item><title>Simplifying My Toolset as a Software Engineer</title><link>https://www.muhammetsafak.com.tr/en/blog/simplifying-my-toolset-as-a-software-engineer/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/simplifying-my-toolset-as-a-software-engineer/</guid><description>Reviewing my tool stack during the transition from senior to staff level, I realized fewer tools lead to clearer decisions.</description><pubDate>Sun, 05 Dec 2021 00:00:00 GMT</pubDate><category>gunluk</category><category>araclar</category></item><item><title>PHP 8.1 Is Coming: Safer Domain Models with Enums and Readonly Properties</title><link>https://www.muhammetsafak.com.tr/en/blog/php-8-1-safer-domain-models-with-enums-and-readonly/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/php-8-1-safer-domain-models-with-enums-and-readonly/</guid><description>PHP 8.1 isn&apos;t out yet, but I&apos;m already exploring how the upcoming native enum support and readonly properties will reshape domain modelling.</description><pubDate>Sun, 07 Nov 2021 00:00:00 GMT</pubDate><category>diller</category><category>php</category></item><item><title>After REST: Trying Out GraphQL</title><link>https://www.muhammetsafak.com.tr/en/blog/trying-graphql-after-rest/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/trying-graphql-after-rest/</guid><description>While solving a real over-fetching problem with GraphQL, I weigh where REST is still sufficient and where GraphQL actually makes sense.</description><pubDate>Sun, 03 Oct 2021 00:00:00 GMT</pubDate><category>web</category><category>api</category><category>graphql</category></item><item><title>Type Conversion and Type Coercion in PHP</title><link>https://www.muhammetsafak.com.tr/en/blog/php-type-conversion-and-type-coercion/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/php-type-conversion-and-type-coercion/</guid><description>A practical look at PHP type conversion and coercion: gettype, settype, var_dump, and why strict_types belongs in every file.</description><pubDate>Wed, 22 Sep 2021 00:00:00 GMT</pubDate><category>diller</category><category>php</category></item><item><title>Building a Testing Habit in Laravel: Switching to Pest</title><link>https://www.muhammetsafak.com.tr/en/blog/building-a-testing-habit-in-laravel-switching-to-pest/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/building-a-testing-habit-in-laravel-switching-to-pest/</guid><description>I explain the syntax and structural differences that turned test writing from a chore into a habit when moving from PHPUnit to Pest.</description><pubDate>Sun, 05 Sep 2021 00:00:00 GMT</pubDate><category>araclar</category><category>laravel</category><category>testing</category></item><item><title>MySQL Storage Engines: InnoDB vs MyISAM</title><link>https://www.muhammetsafak.com.tr/en/blog/mysql-storage-engines-innodb-vs-myisam/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/mysql-storage-engines-innodb-vs-myisam/</guid><description>A practical comparison of MySQL storage engines: the differences between InnoDB and MyISAM, their trade-offs, and which one to choose.</description><pubDate>Sun, 01 Aug 2021 00:00:00 GMT</pubDate><category>araclar</category><category>mysql</category></item><item><title>SEO Problems in Single-Page Applications and SSR Options</title><link>https://www.muhammetsafak.com.tr/en/blog/seo-problems-in-spas-and-ssr-options/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/seo-problems-in-spas-and-ssr-options/</guid><description>I compare the visibility problem that client-side rendering creates for search engines and evaluate server-side rendering alternatives.</description><pubDate>Sun, 01 Aug 2021 00:00:00 GMT</pubDate><category>arayuz</category><category>javascript</category></item><item><title>Generics and type inference in TypeScript</title><link>https://www.muhammetsafak.com.tr/en/blog/generics-and-type-inference-in-typescript/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/generics-and-type-inference-in-typescript/</guid><description>Building reusable, type-safe abstractions with generics in TypeScript and making the most of type inference.</description><pubDate>Sun, 04 Jul 2021 00:00:00 GMT</pubDate><category>diller</category><category>typescript</category></item><item><title>Laravel Octane: the performance that comes with a persistent process</title><link>https://www.muhammetsafak.com.tr/en/blog/laravel-octane-persistent-process-performance/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/laravel-octane-persistent-process-performance/</guid><description>How Laravel Octane eliminates per-request bootstrap overhead — and the trade-offs that come with it.</description><pubDate>Sun, 06 Jun 2021 00:00:00 GMT</pubDate><category>framework</category><category>laravel</category></item><item><title>Error handling in Go: living with the error value</title><link>https://www.muhammetsafak.com.tr/en/blog/error-handling-in-go-living-with-the-error-value/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/error-handling-in-go-living-with-the-error-value/</guid><description>A practical approach to embracing error handling as a language idiom in Go, a language with no exception mechanism.</description><pubDate>Sun, 02 May 2021 00:00:00 GMT</pubDate><category>diller</category><category>go</category></item><item><title>The Need for Enums in PHP: Pre-8.1 Solutions</title><link>https://www.muhammetsafak.com.tr/en/blog/php-enum-need-pre-8-1-solutions/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/php-enum-need-pre-8-1-solutions/</guid><description>How we represented fixed value sets before PHP 8.1 introduced native enums, and the trade-offs of each approach.</description><pubDate>Sun, 04 Apr 2021 00:00:00 GMT</pubDate><category>diller</category><category>php</category></item><item><title>API error contract: returning meaningful errors to clients</title><link>https://www.muhammetsafak.com.tr/en/blog/api-error-contract-returning-meaningful-errors-to-clients/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/api-error-contract-returning-meaningful-errors-to-clients/</guid><description>How binding API error responses to a consistent contract simplifies client development and debugging.</description><pubDate>Sun, 07 Mar 2021 00:00:00 GMT</pubDate><category>web</category><category>api</category></item><item><title>Slimming Laravel Controllers with Action Classes</title><link>https://www.muhammetsafak.com.tr/en/blog/slimming-laravel-controllers-with-action-classes/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/slimming-laravel-controllers-with-action-classes/</guid><description>How to write more testable and maintainable code by moving business logic out of controllers and into single-purpose action classes.</description><pubDate>Sun, 07 Feb 2021 00:00:00 GMT</pubDate><category>framework</category><category>laravel</category></item><item><title>Cutting dev server startup to seconds with Vite</title><link>https://www.muhammetsafak.com.tr/en/blog/cutting-dev-server-startup-to-seconds-with-vite/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/cutting-dev-server-startup-to-seconds-with-vite/</guid><description>Why switching from a Webpack-based dev environment to Vite makes build times dramatically shorter.</description><pubDate>Sun, 03 Jan 2021 00:00:00 GMT</pubDate><category>araclar</category><category>javascript</category><category>vite</category></item><item><title>Coding with PHP 8.0: Attributes and the Nullsafe Operator</title><link>https://www.muhammetsafak.com.tr/en/blog/coding-with-php-8-0-attributes-and-nullsafe-operator/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/coding-with-php-8-0-attributes-and-nullsafe-operator/</guid><description>PHP 8.0 is out. I share how I&apos;ve been using attributes and the nullsafe operator in real projects, and what they&apos;ve actually delivered.</description><pubDate>Sun, 06 Dec 2020 00:00:00 GMT</pubDate><category>diller</category><category>php</category></item><item><title>Preparing for PHP 8.0: union types, match, and named arguments</title><link>https://www.muhammetsafak.com.tr/en/blog/preparing-for-php-8-union-types-match-named-arguments/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/preparing-for-php-8-union-types-match-named-arguments/</guid><description>PHP 8.0 isn&apos;t out yet, but the RFCs and beta releases are already readable. Here are my notes on three key features worth understanding before release.</description><pubDate>Sun, 01 Nov 2020 00:00:00 GMT</pubDate><category>diller</category><category>php</category></item><item><title>Writing Data Processing Scripts with Python</title><link>https://www.muhammetsafak.com.tr/en/blog/writing-data-processing-scripts-with-python/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/writing-data-processing-scripts-with-python/</guid><description>The practical case for offloading repetitive transformation tasks to Python, with real script examples.</description><pubDate>Sun, 04 Oct 2020 00:00:00 GMT</pubDate><category>diller</category><category>python</category></item><item><title>From monolith to modern UI with Inertia.js</title><link>https://www.muhammetsafak.com.tr/en/blog/from-monolith-to-modern-ui-with-inertia-js/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/from-monolith-to-modern-ui-with-inertia-js/</guid><description>How Inertia.js delivers a single-page-app feel without a separate API, how it integrates with Laravel, and when it&apos;s the right choice.</description><pubDate>Sun, 06 Sep 2020 00:00:00 GMT</pubDate><category>framework</category><category>laravel</category><category>inertia</category></item><item><title>Laravel 8: Model Factories and the New Directory Structure</title><link>https://www.muhammetsafak.com.tr/en/blog/laravel-8-model-factories-and-new-directory-structure/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/laravel-8-model-factories-and-new-directory-structure/</guid><description>A deep dive into Laravel 8&apos;s class-based factory system and new directory layout, focused on generating test and seed data.</description><pubDate>Sun, 02 Aug 2020 00:00:00 GMT</pubDate><category>framework</category><category>laravel</category></item><item><title>Vue 3 Composition API: Why and When</title><link>https://www.muhammetsafak.com.tr/en/blog/vue-3-composition-api-why-and-when/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/vue-3-composition-api-why-and-when/</guid><description>I discuss what the Composition API brings over Options API in Vue 3, and when you should prefer it, with concrete examples.</description><pubDate>Sun, 05 Jul 2020 00:00:00 GMT</pubDate><category>arayuz</category><category>vue</category></item><item><title>Exception and Error Handling in PHP</title><link>https://www.muhammetsafak.com.tr/en/blog/exception-and-error-handling-in-php/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/exception-and-error-handling-in-php/</guid><description>A practical guide to PHP exceptions and error handling: try-catch-finally blocks, multiple catch clauses, custom exception classes, and global handlers.</description><pubDate>Fri, 03 Jul 2020 00:00:00 GMT</pubDate><category>diller</category><category>php</category></item><item><title>Writing HTTP services in Go: is the standard library enough?</title><link>https://www.muhammetsafak.com.tr/en/blog/writing-http-services-in-go-is-the-standard-library-enough/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/writing-http-services-in-go-is-the-standard-library-enough/</guid><description>I explore what you get — and what you don&apos;t — when building a small HTTP service with Go&apos;s net/http package, and where the framework threshold sits.</description><pubDate>Sun, 07 Jun 2020 00:00:00 GMT</pubDate><category>diller</category><category>go</category></item><item><title>Getting Started with Python: Why Yet Another Scripting Language</title><link>https://www.muhammetsafak.com.tr/en/blog/python-introduction-why-another-scripting-language/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/python-introduction-why-another-scripting-language/</guid><description>I explain the gap Python fills in my polyglot practice, my learning journey, and a PHP developer&apos;s perspective on Python.</description><pubDate>Sun, 03 May 2020 00:00:00 GMT</pubDate><category>gunluk</category><category>python</category></item><item><title>Alpine.js: A Lightweight Choice for Small Interactions</title><link>https://www.muhammetsafak.com.tr/en/blog/alpine-js-a-lightweight-choice-for-small-interactions/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/alpine-js-a-lightweight-choice-for-small-interactions/</guid><description>When should you reach for Alpine.js, and when should you not? I discuss the right scale for UI needs that don&apos;t require a full framework.</description><pubDate>Sun, 05 Apr 2020 00:00:00 GMT</pubDate><category>arayuz</category><category>javascript</category><category>alpine</category></item><item><title>SPA Authentication with Laravel 7 and Sanctum</title><link>https://www.muhammetsafak.com.tr/en/blog/spa-authentication-with-laravel-7-and-sanctum/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/spa-authentication-with-laravel-7-and-sanctum/</guid><description>How Laravel Sanctum solves SPA authentication, and why its cookie-based approach is cleaner than token-based alternatives.</description><pubDate>Sun, 01 Mar 2020 00:00:00 GMT</pubDate><category>web</category><category>laravel</category><category>api</category></item><item><title>Interactive Laravel Apps Without Writing JavaScript: Livewire</title><link>https://www.muhammetsafak.com.tr/en/blog/interactive-laravel-apps-without-writing-javascript-livewire/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/interactive-laravel-apps-without-writing-javascript-livewire/</guid><description>A practical look at Livewire&apos;s server-driven interaction model — when it&apos;s the right choice, and where its limits lie.</description><pubDate>Sun, 02 Feb 2020 00:00:00 GMT</pubDate><category>framework</category><category>laravel</category><category>livewire</category></item><item><title>Standardizing API responses: a consistent contract</title><link>https://www.muhammetsafak.com.tr/en/blog/standardizing-api-responses-a-consistent-contract/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/standardizing-api-responses-a-consistent-contract/</guid><description>How returning the same response structure from every endpoint simplifies client code and makes errors predictable.</description><pubDate>Sun, 05 Jan 2020 00:00:00 GMT</pubDate><category>web</category><category>api</category></item><item><title>Typed Properties and Arrow Functions in PHP 7.4</title><link>https://www.muhammetsafak.com.tr/en/blog/php-7-4-typed-properties-and-arrow-functions/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/php-7-4-typed-properties-and-arrow-functions/</guid><description>PHP 7.4 was released in November 2019. Typed properties and arrow functions significantly strengthen the language&apos;s type system and syntax.</description><pubDate>Sun, 01 Dec 2019 00:00:00 GMT</pubDate><category>diller</category><category>php</category></item><item><title>Concurrency in Go: goroutines and channels in practice</title><link>https://www.muhammetsafak.com.tr/en/blog/concurrency-in-go-goroutines-and-channels-in-practice/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/concurrency-in-go-goroutines-and-channels-in-practice/</guid><description>A hands-on look at Go&apos;s concurrency model — goroutines and channels — and what changes when you come from PHP&apos;s process model.</description><pubDate>Sun, 03 Nov 2019 00:00:00 GMT</pubDate><category>diller</category><category>go</category></item><item><title>Testing Vue Components</title><link>https://www.muhammetsafak.com.tr/en/blog/testing-vue-components/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/testing-vue-components/</guid><description>A practical approach to automatically verifying Vue component UI behavior: writing real-world tests with Vue Test Utils.</description><pubDate>Sun, 06 Oct 2019 00:00:00 GMT</pubDate><category>araclar</category><category>vue</category><category>testing</category></item><item><title>Migrating to TypeScript: Type Safety in JavaScript</title><link>https://www.muhammetsafak.com.tr/en/blog/migrating-to-typescript-type-safety-in-javascript/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/migrating-to-typescript-type-safety-in-javascript/</guid><description>My practical experience adopting TypeScript in a growing frontend codebase — what I gained, what I lost, and when it actually proved its worth.</description><pubDate>Sun, 01 Sep 2019 00:00:00 GMT</pubDate><category>diller</category><category>typescript</category></item><item><title>API versioning strategies and trade-offs</title><link>https://www.muhammetsafak.com.tr/en/blog/api-versioning-strategies-and-tradeoffs/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/api-versioning-strategies-and-tradeoffs/</guid><description>How do you evolve an API without breaking existing clients? A comparison of versioning strategies with their trade-offs, drawn from real-world experience.</description><pubDate>Sun, 04 Aug 2019 00:00:00 GMT</pubDate><category>web</category><category>api</category></item><item><title>Laravel 6 and What LTS Really Means: Versioning Strategy</title><link>https://www.muhammetsafak.com.tr/en/blog/laravel-6-and-what-lts-really-means-versioning-strategy/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/laravel-6-and-what-lts-really-means-versioning-strategy/</guid><description>What does the Laravel 6 LTS release actually mean? Evaluating the long-term support decision against your project&apos;s lifespan and how to approach versioning strategy.</description><pubDate>Sun, 07 Jul 2019 00:00:00 GMT</pubDate><category>framework</category><category>laravel</category></item><item><title>Writing My First CLI Tool in Go</title><link>https://www.muhammetsafak.com.tr/en/blog/writing-my-first-cli-tool-in-go/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/writing-my-first-cli-tool-in-go/</guid><description>I reinforced my newly learned Go skills by building a real CLI tool — here&apos;s what the language feels like in practice and how far the standard library can take you.</description><pubDate>Sun, 02 Jun 2019 00:00:00 GMT</pubDate><category>diller</category><category>go</category></item><item><title>Tailwind CSS: Why I Switched to the Utility-First Approach</title><link>https://www.muhammetsafak.com.tr/en/blog/why-i-switched-to-tailwind-css-utility-first/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/why-i-switched-to-tailwind-css-utility-first/</guid><description>Why I adopted the utility-first CSS paradigm with Tailwind CSS v1.0, the trade-offs I encountered, and when it actually makes sense.</description><pubDate>Sun, 05 May 2019 00:00:00 GMT</pubDate><category>arayuz</category><category>css</category><category>tailwind</category></item><item><title>First step toward polyglot: why I started learning Go</title><link>https://www.muhammetsafak.com.tr/en/blog/first-step-toward-polyglot-why-i-started-learning-go/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/first-step-toward-polyglot-why-i-started-learning-go/</guid><description>After more than a decade with PHP, why did I decide to pick up a second language — and why Go?</description><pubDate>Sun, 07 Apr 2019 00:00:00 GMT</pubDate><category>gunluk</category><category>go</category></item><item><title>How React Hooks Changed the Way We Write Components</title><link>https://www.muhammetsafak.com.tr/en/blog/how-react-hooks-changed-the-way-we-write-components/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/how-react-hooks-changed-the-way-we-write-components/</guid><description>React 16.8 introduced the Hooks API — here&apos;s how it shifted component authoring from class-based to functional, what the advantages are, and what to watch out for.</description><pubDate>Sun, 03 Mar 2019 00:00:00 GMT</pubDate><category>arayuz</category><category>javascript</category><category>react</category></item><item><title>Using Service Providers and the Container Correctly in Laravel</title><link>https://www.muhammetsafak.com.tr/en/blog/using-service-providers-and-the-container-correctly-in-laravel/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/using-service-providers-and-the-container-correctly-in-laravel/</guid><description>A practical guide to truly understanding Laravel&apos;s dependency resolution mechanism: how to use service providers and the IoC container the right way.</description><pubDate>Sun, 03 Feb 2019 00:00:00 GMT</pubDate><category>framework</category><category>laravel</category></item><item><title>PHP 7.3: Flexible Heredoc and List Assignments</title><link>https://www.muhammetsafak.com.tr/en/blog/php-7-3-flexible-heredoc-and-list-assignments/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/php-7-3-flexible-heredoc-and-list-assignments/</guid><description>A hands-on look at PHP 7.3&apos;s flexible heredoc syntax and list assignment improvements, and how they contribute to better code readability.</description><pubDate>Sun, 06 Jan 2019 00:00:00 GMT</pubDate><category>diller</category><category>php</category></item><item><title>2018 Year in Review: Where a PHP Developer Landed</title><link>https://www.muhammetsafak.com.tr/en/blog/2018-year-in-review-where-a-php-developer-landed/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/2018-year-in-review-where-a-php-developer-landed/</guid><description>An honest look at what I learned throughout 2018, how my habits shifted, and what I want to pursue next.</description><pubDate>Sun, 02 Dec 2018 00:00:00 GMT</pubDate><category>gunluk</category><category>php</category></item><item><title>Consuming APIs with Axios in the Frontend</title><link>https://www.muhammetsafak.com.tr/en/blog/consuming-apis-with-axios-in-the-frontend/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/consuming-apis-with-axios-in-the-frontend/</guid><description>Practical notes on keeping the request/response layer clean in the UI using Axios interceptors, error handling, and shared configuration.</description><pubDate>Sun, 04 Nov 2018 00:00:00 GMT</pubDate><category>arayuz</category><category>javascript</category></item><item><title>Task Scheduling in Laravel</title><link>https://www.muhammetsafak.com.tr/en/blog/task-scheduling-in-laravel/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/task-scheduling-in-laravel/</guid><description>How I use Laravel&apos;s task scheduler to manage multiple scheduled jobs from a single cron entry, keeping all scheduling logic readable and version-controlled inside the codebase.</description><pubDate>Sun, 07 Oct 2018 00:00:00 GMT</pubDate><category>web</category><category>laravel</category></item><item><title>Multilingual (i18n) Applications in Laravel</title><link>https://www.muhammetsafak.com.tr/en/blog/multilingual-i18n-in-laravel/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/multilingual-i18n-in-laravel/</guid><description>Practical notes on adding multi-language support to Laravel: organizing language files, separating text from code, and managing locale switching.</description><pubDate>Sun, 02 Sep 2018 00:00:00 GMT</pubDate><category>web</category><category>laravel</category></item><item><title>npm and the Modern JavaScript Package Ecosystem</title><link>https://www.muhammetsafak.com.tr/en/blog/npm-and-the-modern-javascript-package-ecosystem/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/npm-and-the-modern-javascript-package-ecosystem/</guid><description>Managing JavaScript dependencies with npm, configuring package.json correctly, and handling the practical challenges you run into in the package ecosystem.</description><pubDate>Sun, 05 Aug 2018 00:00:00 GMT</pubDate><category>araclar</category><category>javascript</category><category>npm</category></item><item><title>Building a Calendar Events Feature with Laravel</title><link>https://www.muhammetsafak.com.tr/en/blog/building-a-calendar-events-feature-with-laravel/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/building-a-calendar-events-feature-with-laravel/</guid><description>How I built a full calendar feature in Laravel from scratch, handling recurrence rules, timezones, and date range queries end to end.</description><pubDate>Sun, 01 Jul 2018 00:00:00 GMT</pubDate><category>gunluk</category><category>laravel</category></item><item><title>Writing My First Tests with PHPUnit</title><link>https://www.muhammetsafak.com.tr/en/blog/writing-my-first-tests-with-phpunit/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/writing-my-first-tests-with-phpunit/</guid><description>From installing PHPUnit to writing my first unit tests — what worked, what tripped me up, and the lessons learned along the way.</description><pubDate>Sun, 03 Jun 2018 00:00:00 GMT</pubDate><category>araclar</category><category>php</category><category>testing</category></item><item><title>Laravel Notifications: Email and SMS</title><link>https://www.muhammetsafak.com.tr/en/blog/laravel-notifications-email-and-sms/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/laravel-notifications-email-and-sms/</guid><description>How I use Laravel Notification classes to send the same notification logic across multiple channels — email, SMS, and more.</description><pubDate>Sun, 06 May 2018 00:00:00 GMT</pubDate><category>web</category><category>laravel</category></item><item><title>Readable Asynchronous Code with async/await in JavaScript</title><link>https://www.muhammetsafak.com.tr/en/blog/readable-async-code-with-async-await-in-javascript/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/readable-async-code-with-async-await-in-javascript/</guid><description>How async/await syntax replaced Promise chains and made asynchronous JavaScript genuinely readable — with examples.</description><pubDate>Sun, 01 Apr 2018 00:00:00 GMT</pubDate><category>diller</category><category>javascript</category></item><item><title>Transitioning to Component-Based UI Architecture with Vue</title><link>https://www.muhammetsafak.com.tr/en/blog/transitioning-to-component-based-ui-architecture-with-vue/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/transitioning-to-component-based-ui-architecture-with-vue/</guid><description>How I shifted from page-centric thinking to component-centric thinking, and how Vue.js makes that shift practical.</description><pubDate>Sun, 04 Mar 2018 00:00:00 GMT</pubDate><category>arayuz</category><category>vue</category></item><item><title>Formatting API Responses with Laravel Resource Classes</title><link>https://www.muhammetsafak.com.tr/en/blog/formatting-api-responses-with-laravel-resource-classes/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/formatting-api-responses-with-laravel-resource-classes/</guid><description>How to produce clean API responses with Laravel Resource classes without leaking your database model directly to clients.</description><pubDate>Sun, 04 Feb 2018 00:00:00 GMT</pubDate><category>web</category><category>laravel</category><category>api</category></item><item><title>PHP 7.2 and Modern PHP Habits</title><link>https://www.muhammetsafak.com.tr/en/blog/php-72-and-modern-php-habits/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/php-72-and-modern-php-habits/</guid><description>What PHP 7.2 introduced and how the direction of the language has shaped my day-to-day coding habits.</description><pubDate>Sun, 07 Jan 2018 00:00:00 GMT</pubDate><category>diller</category><category>php</category></item><item><title>Git workflow: branching, merging, and pull request discipline</title><link>https://www.muhammetsafak.com.tr/en/blog/git-workflow-branching-merging-and-pull-request-discipline/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/git-workflow-branching-merging-and-pull-request-discipline/</guid><description>Branching habits, merge strategies, and how to build a traceable change history with Git and pull requests.</description><pubDate>Sun, 03 Dec 2017 00:00:00 GMT</pubDate><category>araclar</category><category>git</category></item><item><title>Responsive design: mobile-first CSS</title><link>https://www.muhammetsafak.com.tr/en/blog/responsive-design-mobile-first-css/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/responsive-design-mobile-first-css/</guid><description>What the mobile-first CSS approach is and how to use media queries to keep a single interface looking right across different screen sizes.</description><pubDate>Sun, 05 Nov 2017 00:00:00 GMT</pubDate><category>arayuz</category><category>css</category></item><item><title>Authorization with Laravel Gates and Policies</title><link>https://www.muhammetsafak.com.tr/en/blog/authorization-with-laravel-gates-and-policies/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/authorization-with-laravel-gates-and-policies/</guid><description>How to centralize authorization logic in Laravel using Gates and Policies, keeping &apos;who can do what&apos; decisions clean and testable.</description><pubDate>Sun, 01 Oct 2017 00:00:00 GMT</pubDate><category>web</category><category>laravel</category></item><item><title>Promises and Async Flow in JavaScript</title><link>https://www.muhammetsafak.com.tr/en/blog/promises-and-async-flow-in-javascript/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/promises-and-async-flow-in-javascript/</guid><description>What Promises are in JavaScript, how to escape callback hell, and the essential patterns for chaining then/catch and managing async flow.</description><pubDate>Sun, 03 Sep 2017 00:00:00 GMT</pubDate><category>diller</category><category>javascript</category></item><item><title>Payment Integration with Laravel (iyzico): A Real-World Experience</title><link>https://www.muhammetsafak.com.tr/en/blog/payment-integration-with-laravel-iyzico-experience/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/payment-integration-with-laravel-iyzico-experience/</guid><description>Real problems and solutions encountered while integrating iyzico payments into a Laravel project — things not in the documentation.</description><pubDate>Sun, 06 Aug 2017 00:00:00 GMT</pubDate><category>gunluk</category><category>laravel</category></item><item><title>Consuming Third-Party APIs: HTTP Client with Guzzle</title><link>https://www.muhammetsafak.com.tr/en/blog/consuming-third-party-apis-http-client-with-guzzle/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/consuming-third-party-apis-http-client-with-guzzle/</guid><description>Connecting to external services in PHP with the Guzzle HTTP client — covering timeouts, error handling, and building a reliable request structure.</description><pubDate>Sun, 02 Jul 2017 00:00:00 GMT</pubDate><category>web</category><category>php</category></item><item><title>PHP Closures and Variable Capture with use</title><link>https://www.muhammetsafak.com.tr/en/blog/php-closures-and-variable-capture-with-use/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/php-closures-and-variable-capture-with-use/</guid><description>What closures (anonymous functions) are in PHP, how variable capture with the use keyword works, and practical everyday examples.</description><pubDate>Sun, 04 Jun 2017 00:00:00 GMT</pubDate><category>diller</category><category>php</category></item><item><title>Simplifying Asset Compilation with Laravel Mix</title><link>https://www.muhammetsafak.com.tr/en/blog/simplifying-asset-compilation-with-laravel-mix/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/simplifying-asset-compilation-with-laravel-mix/</guid><description>Laravel Mix provides a fluent API that lets you compile JavaScript and CSS assets without writing Webpack configuration from scratch.</description><pubDate>Sun, 07 May 2017 00:00:00 GMT</pubDate><category>araclar</category><category>laravel</category></item><item><title>State Management in Vue with Vuex</title><link>https://www.muhammetsafak.com.tr/en/blog/state-management-in-vue-with-vuex/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/state-management-in-vue-with-vuex/</guid><description>Centralizing shared state across components using Vuex: state, mutations, actions, and getters explained.</description><pubDate>Sun, 02 Apr 2017 00:00:00 GMT</pubDate><category>arayuz</category><category>vue</category></item><item><title>Sending Emails in Laravel with Mailables and Templates</title><link>https://www.muhammetsafak.com.tr/en/blog/sending-emails-in-laravel-with-mailables-and-templates/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/sending-emails-in-laravel-with-mailables-and-templates/</guid><description>Setting up reliable, maintainable transactional emails using Laravel&apos;s Mailable class and Blade email templates.</description><pubDate>Sun, 05 Mar 2017 00:00:00 GMT</pubDate><category>web</category><category>laravel</category></item><item><title>Thinking in Components with Laravel 5.4 and Blade</title><link>https://www.muhammetsafak.com.tr/en/blog/thinking-in-components-with-laravel-5-4-and-blade/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/thinking-in-components-with-laravel-5-4-and-blade/</guid><description>How the @component directive introduced in Laravel 5.4&apos;s Blade templating engine lets you split views into reusable, well-defined pieces.</description><pubDate>Sun, 05 Feb 2017 00:00:00 GMT</pubDate><category>framework</category><category>laravel</category></item><item><title>PHP 7.1: Nullable Types and the Void Return Type</title><link>https://www.muhammetsafak.com.tr/en/blog/php-7-1-nullable-types-and-void-return-type/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/php-7-1-nullable-types-and-void-return-type/</guid><description>PHP 7.1&apos;s nullable type declarations and void return type make function signatures more readable and precise.</description><pubDate>Sun, 01 Jan 2017 00:00:00 GMT</pubDate><category>diller</category><category>php</category></item><item><title>Writing Maintainable CSS with Sass</title><link>https://www.muhammetsafak.com.tr/en/blog/writing-maintainable-css-with-sass/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/writing-maintainable-css-with-sass/</guid><description>How I bring structure to growing stylesheets using Sass variables, nested rules, and file partials.</description><pubDate>Sun, 04 Dec 2016 00:00:00 GMT</pubDate><category>arayuz</category><category>css</category><category>sass</category></item><item><title>Single-page application routing with Vue Router</title><link>https://www.muhammetsafak.com.tr/en/blog/single-page-application-routing-with-vue-router/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/single-page-application-routing-with-vue-router/</guid><description>A walkthrough of the core concepts and practical setup I encountered while moving page transitions to the client side with Vue Router.</description><pubDate>Sun, 06 Nov 2016 00:00:00 GMT</pubDate><category>arayuz</category><category>vue</category></item><item><title>Speeding Up API Development with Postman</title><link>https://www.muhammetsafak.com.tr/en/blog/speeding-up-api-development-with-postman/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/speeding-up-api-development-with-postman/</guid><description>Sharing what I learned about testing API endpoints without a browser, building collections, and integrating Postman into my development workflow.</description><pubDate>Sun, 02 Oct 2016 00:00:00 GMT</pubDate><category>araclar</category><category>api</category></item><item><title>Pagination, Filtering, and Sorting in REST APIs</title><link>https://www.muhammetsafak.com.tr/en/blog/pagination-filtering-and-sorting-in-rest-apis/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/pagination-filtering-and-sorting-in-rest-apis/</guid><description>How I design pagination, filtering, and sorting parameters in an API to present growing datasets to clients in a manageable way.</description><pubDate>Sun, 04 Sep 2016 00:00:00 GMT</pubDate><category>web</category><category>api</category></item><item><title>File upload and image processing with Laravel</title><link>https://www.muhammetsafak.com.tr/en/blog/file-upload-and-image-processing-with-laravel/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/file-upload-and-image-processing-with-laravel/</guid><description>A walkthrough of the end-to-end flow for file uploading, validation, and image resizing in Laravel.</description><pubDate>Sun, 07 Aug 2016 00:00:00 GMT</pubDate><category>web</category><category>laravel</category></item><item><title>Interfaces and Dependency Injection in PHP</title><link>https://www.muhammetsafak.com.tr/en/blog/interfaces-and-dependency-injection-in-php/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/interfaces-and-dependency-injection-in-php/</guid><description>How I use interface definitions and dependency injection in PHP to build loosely coupled classes, illustrated with practical examples.</description><pubDate>Sun, 03 Jul 2016 00:00:00 GMT</pubDate><category>diller</category><category>php</category><category>oop</category></item><item><title>Migrating to Webpack: From Gulp to module bundling</title><link>https://www.muhammetsafak.com.tr/en/blog/migrating-to-webpack-from-gulp-to-module-bundling/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/migrating-to-webpack-from-gulp-to-module-bundling/</guid><description>Why I abandoned the build pipeline I built with Gulp, and what I gained — and struggled with — when switching to Webpack.</description><pubDate>Sun, 05 Jun 2016 00:00:00 GMT</pubDate><category>araclar</category><category>javascript</category><category>webpack</category></item><item><title>Events and Listeners in Laravel</title><link>https://www.muhammetsafak.com.tr/en/blog/events-and-listeners-in-laravel/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/events-and-listeners-in-laravel/</guid><description>How I use Laravel&apos;s event system to decouple side effects from the main flow — with practical examples of what you gain.</description><pubDate>Sun, 01 May 2016 00:00:00 GMT</pubDate><category>framework</category><category>laravel</category></item><item><title>My first reactive component with Vue.js</title><link>https://www.muhammetsafak.com.tr/en/blog/first-reactive-component-with-vue-js/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/first-reactive-component-with-vue-js/</guid><description>My experience moving from jQuery DOM manipulation to Vue.js&apos;s data-driven approach, and how I wrote my first reactive component.</description><pubDate>Sun, 03 Apr 2016 00:00:00 GMT</pubDate><category>arayuz</category><category>javascript</category><category>vue</category></item><item><title>Putting SOLID into practice in PHP: the Single Responsibility Principle</title><link>https://www.muhammetsafak.com.tr/en/blog/putting-solid-into-practice-in-php-single-responsibility-principle/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/putting-solid-into-practice-in-php-single-responsibility-principle/</guid><description>How I apply SRP — the S in SOLID — to PHP classes with concrete examples, moving beyond abstract theory.</description><pubDate>Sun, 06 Mar 2016 00:00:00 GMT</pubDate><category>diller</category><category>php</category><category>oop</category></item><item><title>Laravel 5.2: Multiple Authentication Guards and Route Groups</title><link>https://www.muhammetsafak.com.tr/en/blog/laravel-5-2-multiple-auth-guards-and-route-groups/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/laravel-5-2-multiple-auth-guards-and-route-groups/</guid><description>How I manage multiple user types in a single Laravel 5.2 application using guards and route groups.</description><pubDate>Sun, 07 Feb 2016 00:00:00 GMT</pubDate><category>framework</category><category>laravel</category></item><item><title>Scalar Type Declarations and Return Types in PHP 7</title><link>https://www.muhammetsafak.com.tr/en/blog/scalar-type-declarations-and-return-types-in-php-7/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/scalar-type-declarations-and-return-types-in-php-7/</guid><description>A practical look at how I use scalar type declarations and return type definitions introduced in PHP 7.</description><pubDate>Sun, 03 Jan 2016 00:00:00 GMT</pubDate><category>diller</category><category>php</category></item><item><title>PHP 7.0: Speed and Type Declarations in the Long-Awaited Release</title><link>https://www.muhammetsafak.com.tr/en/blog/php-7-0-the-long-awaited-release-speed-and-type-declarations/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/php-7-0-the-long-awaited-release-speed-and-type-declarations/</guid><description>PHP 7.0 was released this week. I share my first impressions on the performance gains, scalar type declarations, and return types.</description><pubDate>Sun, 06 Dec 2015 00:00:00 GMT</pubDate><category>diller</category><category>php</category></item><item><title>Publishing Your Own PHP Package on Packagist with Composer</title><link>https://www.muhammetsafak.com.tr/en/blog/publishing-your-own-php-package-on-packagist-with-composer/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/publishing-your-own-php-package-on-packagist-with-composer/</guid><description>I configured a PHP package from scratch and published it on Packagist so others could use it — here&apos;s how I did it.</description><pubDate>Sun, 01 Nov 2015 00:00:00 GMT</pubDate><category>araclar</category><category>php</category><category>composer</category></item><item><title>Adding shared behavior to requests with Laravel middleware</title><link>https://www.muhammetsafak.com.tr/en/blog/adding-shared-behavior-to-requests-with-laravel-middleware/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/adding-shared-behavior-to-requests-with-laravel-middleware/</guid><description>What middleware is in Laravel, how to write it, and how to centralize cross-cutting concerns like authentication in one place.</description><pubDate>Sun, 04 Oct 2015 00:00:00 GMT</pubDate><category>framework</category><category>laravel</category></item><item><title>Eloquent Relationships: hasMany, belongsTo, and Eager Loading</title><link>https://www.muhammetsafak.com.tr/en/blog/eloquent-relationships-hasmany-belongsto-and-eager-loading/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/eloquent-relationships-hasmany-belongsto-and-eager-loading/</guid><description>How to define hasMany and belongsTo relationships in Laravel Eloquent, and how to solve the N+1 query problem with eager loading.</description><pubDate>Sun, 06 Sep 2015 00:00:00 GMT</pubDate><category>framework</category><category>laravel</category></item><item><title>Building a Front-End Build Pipeline with Gulp</title><link>https://www.muhammetsafak.com.tr/en/blog/building-a-front-end-build-pipeline-with-gulp/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/building-a-front-end-build-pipeline-with-gulp/</guid><description>How I set up a front-end workflow that automates Sass compilation, JavaScript bundling, and browser reloading with Gulp.</description><pubDate>Sun, 02 Aug 2015 00:00:00 GMT</pubDate><category>araclar</category><category>javascript</category><category>gulp</category></item><item><title>Getting Started with ES6: let, const, and Arrow Functions</title><link>https://www.muhammetsafak.com.tr/en/blog/getting-started-with-es6-let-const-and-arrow-functions/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/getting-started-with-es6-let-const-and-arrow-functions/</guid><description>An introduction to the most impactful ES6 features — let, const, arrow functions, and template literals — with practical examples.</description><pubDate>Sun, 05 Jul 2015 00:00:00 GMT</pubDate><category>diller</category><category>javascript</category></item><item><title>PHP 5.6 New Features: Variadic Functions and the ** Operator</title><link>https://www.muhammetsafak.com.tr/en/blog/php-5-6-new-features-variadic-functions-and-exponentiation-operator/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/php-5-6-new-features-variadic-functions-and-exponentiation-operator/</guid><description>An overview of PHP 5.6&apos;s variadic argument support and the new exponentiation operator, with practical examples.</description><pubDate>Sun, 07 Jun 2015 00:00:00 GMT</pubDate><category>diller</category><category>php</category></item><item><title>Writing JSON API Endpoints with Laravel</title><link>https://www.muhammetsafak.com.tr/en/blog/writing-json-api-endpoints-with-laravel/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/writing-json-api-endpoints-with-laravel/</guid><description>A practical walkthrough of building interface-agnostic JSON API endpoints in Laravel.</description><pubDate>Sun, 03 May 2015 00:00:00 GMT</pubDate><category>web</category><category>laravel</category><category>api</category></item><item><title>Fundamentals of RESTful API Design</title><link>https://www.muhammetsafak.com.tr/en/blog/fundamentals-of-restful-api-design/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/fundamentals-of-restful-api-design/</guid><description>Practical rules for making an API predictable through the triangle of resources, HTTP methods, and status codes.</description><pubDate>Sun, 05 Apr 2015 00:00:00 GMT</pubDate><category>web</category><category>api</category></item><item><title>Consistent Development Environments for Everyone with Laravel Homestead</title><link>https://www.muhammetsafak.com.tr/en/blog/consistent-dev-environment-with-laravel-homestead/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/consistent-dev-environment-with-laravel-homestead/</guid><description>A step-by-step walkthrough of setting up Laravel Homestead to eliminate the classic &apos;it works on my machine&apos; problem across teams.</description><pubDate>Sun, 01 Mar 2015 00:00:00 GMT</pubDate><category>araclar</category><category>laravel</category></item><item><title>Migrating to Laravel 5: New Directory Structure and .env</title><link>https://www.muhammetsafak.com.tr/en/blog/migrating-to-laravel-5-directory-structure-and-env/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/migrating-to-laravel-5-directory-structure-and-env/</guid><description>A walkthrough of the key changes when moving from Laravel 4 to 5 — directory layout, .env configuration, and application bootstrapping.</description><pubDate>Sun, 01 Feb 2015 00:00:00 GMT</pubDate><category>framework</category><category>laravel</category></item><item><title>Understanding MVC for real: stop bloating your controllers</title><link>https://www.muhammetsafak.com.tr/en/blog/understanding-mvc-stop-bloating-your-controllers/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/understanding-mvc-stop-bloating-your-controllers/</guid><description>What each layer of MVC is actually responsible for, and how to keep your controllers thin.</description><pubDate>Sun, 04 Jan 2015 00:00:00 GMT</pubDate><category>diller</category><category>php</category></item><item><title>Traversing Large Datasets with PHP 5.5 Generators and yield</title><link>https://www.muhammetsafak.com.tr/en/blog/traversing-large-datasets-with-php-55-generators-and-yield/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/traversing-large-datasets-with-php-55-generators-and-yield/</guid><description>The language-level approach to building large loops without blowing up memory: PHP 5.5 generators and the yield keyword.</description><pubDate>Sun, 07 Dec 2014 00:00:00 GMT</pubDate><category>diller</category><category>php</category></item><item><title>Laravel Form Validation in Practice</title><link>https://www.muhammetsafak.com.tr/en/blog/laravel-form-validation-in-practice/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/laravel-form-validation-in-practice/</guid><description>A repeatable pattern for safely handling user input: Laravel validation rules and error messages.</description><pubDate>Sun, 02 Nov 2014 00:00:00 GMT</pubDate><category>web</category><category>laravel</category></item><item><title>Simplifying Database Operations with Eloquent ORM</title><link>https://www.muhammetsafak.com.tr/en/blog/simplifying-database-operations-with-eloquent-orm/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/simplifying-database-operations-with-eloquent-orm/</guid><description>From writing raw SQL to model-based access: a practical look at Laravel&apos;s Eloquent ORM and how it fits into day-to-day development.</description><pubDate>Sun, 05 Oct 2014 00:00:00 GMT</pubDate><category>framework</category><category>laravel</category></item><item><title>Building Fast, Consistent UIs with Bootstrap 3</title><link>https://www.muhammetsafak.com.tr/en/blog/building-fast-consistent-uis-with-bootstrap-3/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/building-fast-consistent-uis-with-bootstrap-3/</guid><description>How to produce decent-looking interfaces without a designer: Bootstrap 3&apos;s grid system and ready-made components.</description><pubDate>Sun, 07 Sep 2014 00:00:00 GMT</pubDate><category>arayuz</category><category>css</category><category>bootstrap</category></item><item><title>Switching to Git: Leaving FTP File Uploads Behind</title><link>https://www.muhammetsafak.com.tr/en/blog/switching-to-git-leaving-ftp-behind/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/switching-to-git-leaving-ftp-behind/</guid><description>The confidence that comes with version control: how switching from FTP to Git changed my development habits, and the basics of commits and branches.</description><pubDate>Sun, 03 Aug 2014 00:00:00 GMT</pubDate><category>araclar</category><category>git</category></item><item><title>Blade Template Engine: Eliminating Repetitive HTML</title><link>https://www.muhammetsafak.com.tr/en/blog/blade-template-engine-eliminating-repetitive-html/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/blade-template-engine-eliminating-repetitive-html/</guid><description>The practical payoff of separating the view layer from logic: using Blade layouts, sections, and partials.</description><pubDate>Sun, 06 Jul 2014 00:00:00 GMT</pubDate><category>framework</category><category>laravel</category></item><item><title>Getting Started with My First Laravel 4 Project</title><link>https://www.muhammetsafak.com.tr/en/blog/getting-started-with-my-first-laravel-4-project/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/getting-started-with-my-first-laravel-4-project/</guid><description>The structure that comes from moving beyond raw PHP to a framework: first impressions, installation, and the basics of Laravel 4.</description><pubDate>Sun, 01 Jun 2014 00:00:00 GMT</pubDate><category>framework</category><category>php</category><category>laravel</category></item><item><title>Sending Data Without a Page Reload: jQuery and AJAX</title><link>https://www.muhammetsafak.com.tr/en/blog/sending-data-without-page-reload-jquery-ajax/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/sending-data-without-page-reload-jquery-ajax/</guid><description>The 2014 standard for decoupling form submissions from full page loads: practical usage of jQuery&apos;s $.ajax method.</description><pubDate>Sun, 04 May 2014 00:00:00 GMT</pubDate><category>arayuz</category><category>javascript</category><category>jquery</category></item><item><title>Organizing Code with Namespaces in PHP</title><link>https://www.muhammetsafak.com.tr/en/blog/organizing-code-with-namespaces-in-php/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/organizing-code-with-namespaces-in-php/</guid><description>Code organization that eliminates name collisions and fits the modern library ecosystem: PHP namespace usage and the use statement.</description><pubDate>Sun, 06 Apr 2014 00:00:00 GMT</pubDate><category>diller</category><category>php</category></item><item><title>PSR-4 and Autoloading: Escaping the Include Chain</title><link>https://www.muhammetsafak.com.tr/en/blog/psr-4-and-autoloading-escaping-the-include-chain/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/psr-4-and-autoloading-escaping-the-include-chain/</guid><description>Moving away from manual class includes to standard autoloading: the difference between PSR-0 and PSR-4, and Composer integration.</description><pubDate>Sun, 02 Mar 2014 00:00:00 GMT</pubDate><category>diller</category><category>php</category></item><item><title>Switching to Composer: Stop Managing PHP Dependencies by Hand</title><link>https://www.muhammetsafak.com.tr/en/blog/switching-to-composer-stop-managing-php-dependencies-by-hand/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/en/blog/switching-to-composer-stop-managing-php-dependencies-by-hand/</guid><description>The practical side of moving from a pile of manual requires to modern dependency management: composer.json, autoloading, and installing packages.</description><pubDate>Sun, 02 Feb 2014 00:00:00 GMT</pubDate><category>araclar</category><category>php</category><category>composer</category></item></channel></rss>