# Blog: Writing on Software Engineering

> My writing, videos and posts across platforms on software architecture, PHP, DevOps and product development.

- Articles & Content: 189
- Source: https://www.muhammetsafak.com.tr/en/blog/
- Language: en-US
- Author: Muhammet Şafak

---
## Articles & Content

### Taking Over an Unfamiliar Codebase

- How to get a solid grasp of a codebase you've never seen before: understand first, refactor later.
- Published: 2026-09-06
- Journal
- Tags: #Career
- https://www.muhammetsafak.com.tr/en/blog/taking-over-an-unfamiliar-codebase/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/taking-over-an-unfamiliar-codebase.md

### What Breaks as a Company Grows: From Owner-Run to Corporate

- Growth is a staircase, and the same thing breaks on every step: the capacity of informal coordination. Reading the transition from three desks at once.
- Published: 2026-09-06
- Journal
- Tags: #Career
- https://www.muhammetsafak.com.tr/en/blog/what-breaks-as-a-company-grows-from-owner-run-to-corporate/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/what-breaks-as-a-company-grows-from-owner-run-to-corporate.md

### A Crisis Is Where a Company's Character Shows

- The first question asked when production goes down sets a company's culture for years. The human side: fear, silence, and what changes later.
- Published: 2026-08-30
- Journal
- Tags: #Career
- https://www.muhammetsafak.com.tr/en/blog/crisis-is-where-a-companys-character-shows/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/crisis-is-where-a-companys-character-shows.md

### Don't pick a partial index for speed

- Four index strategies on a 10M-row Postgres queue table: the winner didn't win for the reason I gave, and one setting turned it into a 1,673x loss.
- Published: 2026-08-23
- Tools & Technologies
- Tags: #PostgreSQL
- https://dev.to/muhammetsafak/dont-pick-a-partial-index-for-speed-what-i-measured-on-a-10m-row-postgres-queue-table-1mb9 (dev.to)

### Meetings, Reporting and Visibility Theater

- The status meeting isn't an information tool, it's an insurance policy. A critique that takes meetings seriously before taking them apart.
- Published: 2026-08-23
- Journal
- Tags: #Career
- https://www.muhammetsafak.com.tr/en/blog/meetings-reporting-and-visibility-theater/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/meetings-reporting-and-visibility-theater.md

### Performance, Promotion and Pay: There's Always a Negotiation

- In a corporate a raise hangs on a spreadsheet; in an owner-run company on a memory. A system doesn't change the outcome, only the language.
- Published: 2026-08-16
- Journal
- Tags: #Career
- https://www.muhammetsafak.com.tr/en/blog/performance-promotion-and-pay-theres-always-a-negotiation/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/performance-promotion-and-pay-theres-always-a-negotiation.md

### Fast from scratch, slow in a live system: the real cost of brownfield in the age of agents

- Work an agent finishes in days takes a week in a system running for years: there the cost isn't producing code, it's finding and proving the rules.
- Published: 2026-08-12
- Journal
- Tags: #PHP, #Career
- https://www.muhammetsafak.com.tr/en/blog/fast-from-scratch-slow-in-a-live-system/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/fast-from-scratch-slow-in-a-live-system.md

### How Knowledge Flows: Hallway or Document?

- Knowledge stuck in one person's head and knowledge buried in a wiki nobody reads end up the same way: the reasoning behind a decision is unreachable.
- Published: 2026-08-09
- Journal
- Tags: #Career
- https://www.muhammetsafak.com.tr/en/blog/how-knowledge-flows-hallway-or-document/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/how-knowledge-flows-hallway-or-document.md

### Same message, different outcome: determinism in event-driven architecture

- Why does the same message produce different outcomes in an event-driven system? The hidden inputs that break determinism — and four moves to win it back.
- Published: 2026-08-05
- Journal
- Tags: #PHP, #RabbitMQ
- https://www.muhammetsafak.com.tr/en/blog/same-message-different-outcome-determinism-in-event-driven-architecture/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/same-message-different-outcome-determinism-in-event-driven-architecture.md

### Packaging and Distributing a CLI Tool Written in Go

- Writing a Go CLI is half the work; versioning it, cross-compiling it and distributing it so others can install it effortlessly is the other half.
- Published: 2026-08-02
- Languages
- Tags: #Go
- https://www.muhammetsafak.com.tr/en/blog/packaging-and-distributing-a-go-cli-tool/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/packaging-and-distributing-a-go-cli-tool.md

### Role Boundaries: Where There's No Job Description, Everyone Does Everything

- A role gap closed by individual sacrifice becomes invisible — and an invisible fault never gets fixed. Drawing a boundary, from three desks.
- Published: 2026-08-02
- Journal
- Tags: #Career
- https://www.muhammetsafak.com.tr/en/blog/role-boundaries-where-there-is-no-job-description-everyone-does-everything/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/role-boundaries-where-there-is-no-job-description-everyone-does-everything.md

### When Is Process Armor, and When Is It a Shackle?

- Process isn't a virtue — it's a coordination tax you pay. When it should be added, why it never gets removed, and how it looks from three different desks.
- Published: 2026-07-26
- Journal
- Tags: #Career
- https://www.muhammetsafak.com.tr/en/blog/when-is-process-armor-and-when-is-it-a-shackle/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/when-is-process-armor-and-when-is-it-a-shackle.md

### How Decisions Get Made: Approval Chain or Single Signature?

- Companies don't fail at going fast or going slow — they fail at matching the speed to the decision. A reversibility frame, and three desks to view it from.
- Published: 2026-07-19
- Journal
- Tags: #Career
- https://www.muhammetsafak.com.tr/en/blog/how-decisions-get-made-approval-chain-or-single-signature/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/how-decisions-get-made-approval-chain-or-single-signature.md

### Corporate or Owner-Run? Size Isn't What Separates Them

- What separates company types isn't headcount but where decisions are made and how much reasoning gets written down. Four axes, three desks.
- Published: 2026-07-12
- Journal
- Tags: #Career
- https://www.muhammetsafak.com.tr/en/blog/corporate-or-owner-run-size-isnt-what-separates-them/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/corporate-or-owner-run-size-isnt-what-separates-them.md

### TypeScript's new compiler and why build speed matters

- TypeScript's compiler ported to Go, and why a fast feedback loop is so valuable for developers.
- Published: 2026-07-05
- Languages
- Tags: #TypeScript
- https://www.muhammetsafak.com.tr/en/blog/typescript-new-compiler-and-build-speed/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/typescript-new-compiler-and-build-speed.md

### From Dual-Write to Outbox: A Log of Idempotent Consumption and Field-Level Encryption

- Lost events pushed me to a transactional outbox and at-least-once delivery to idempotent consumption; then I encrypted GDPR fields at row level.
- Published: 2026-06-22
- Last updated: 2026-09-07
- Journal
- Tags: #PHP, #Laravel, #RabbitMQ, #MySQL
- https://www.muhammetsafak.com.tr/en/blog/from-dual-write-to-outbox-idempotent-consumption-and-field-encryption/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/from-dual-write-to-outbox-idempotent-consumption-and-field-encryption.md

### archlint: Enforcing Architecture Boundaries in CI, Deterministically

- Architecture decisions stay true on the wiki and rot in the code. archlint enforces the boundaries in architecture.json on every commit, no model.
- Published: 2026-06-18
- Journal
- Tags: #Go, #GitHub Actions, #Git
- https://www.muhammetsafak.com.tr/en/blog/archlint-enforcing-architecture-boundaries-in-ci/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/archlint-enforcing-architecture-boundaries-in-ci.md

### One architecture rule, three languages: archlint now does Go + TypeScript + Python

- In a polyglot repo the rule is the same in every language; one architecture.json now enforces Go, TypeScript and Python boundaries in CI.
- Published: 2026-06-18
- Journal
- Tags: #Go, #TypeScript, #Python
- https://www.muhammetsafak.com.tr/en/blog/archlint-one-rule-three-languages/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/archlint-one-rule-three-languages.md

### A Flaky-Test Detector for CommitBrief: Catching AI-Written Flaky Tests at Commit Time

- I added a deterministic flaky-test filter to CommitBrief: it catches hard-coded sleeps and unseeded randomness at commit time, with no model.
- Published: 2026-06-17
- Journal
- Tags: #Testing, #GitHub Actions, #Go, #Git
- https://www.muhammetsafak.com.tr/en/blog/commitbrief-flaky-test-detector/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/commitbrief-flaky-test-detector.md

### CommitBrief Gains summary and remote: Brief a Change, Review a PR from the Terminal

- Two new commands: summary briefs a change and its history, and remote pr reviews a PR from the terminal, leaving comments before the human does.
- Published: 2026-06-13
- Journal
- Tags: #Araçlar, #Git, #Go
- https://www.muhammetsafak.com.tr/en/blog/commitbrief-summary-and-remote/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/commitbrief-summary-and-remote.md

### Vibe Coding vs AI-Assisted Development — and Why You Still Need a Senior

- Vibe coding made shipping easier, but what someone without systems knowledge ships isn't what a senior steering the AI ships. Three levels.
- Published: 2026-06-13
- Journal
- Tags: #Araçlar, #Career
- https://www.muhammetsafak.com.tr/en/blog/vibe-coding-vs-ai-assisted-development/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/vibe-coding-vs-ai-assisted-development.md

### Rediscovering Modern CSS

- The problems we used to solve with JavaScript and preprocessors now have native CSS answers: container queries, :has(), and native nesting.
- Published: 2026-06-07
- Interface
- Tags: #CSS
- https://www.muhammetsafak.com.tr/en/blog/rediscovering-modern-css/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/rediscovering-modern-css.md

### Resolving an Invoice Number Collision in an E-Invoice Integration

- 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.
- Published: 2026-06-03
- Journal
- Tags: #PHP, #Laravel, #RabbitMQ, #MySQL
- https://www.muhammetsafak.com.tr/en/blog/resolving-invoice-number-collision-in-e-invoice-integration/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/resolving-invoice-number-collision-in-e-invoice-integration.md

### AI-assisted self-review — what it speeds up, where it falls short

- Not the 'why' but the 'how much': which workflow layers the tool plugs into, the bug patterns it keeps catching, and where it hits its limits.
- Published: 2026-05-28
- Journal
- Tags: #Araçlar, #Git, #Go
- https://www.muhammetsafak.com.tr/en/blog/ai-self-review-what-it-speeds-up-where-it-falls-short/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/ai-self-review-what-it-speeds-up-where-it-falls-short.md

### Asking a Tool to Review My Own Diff — Why I Built CommitBrief

- One afternoon I hit the limits of self-review, so I wrote a tool that audits my own diff without leaving the terminal: CommitBrief.
- Published: 2026-05-27
- Journal
- Tags: #Araçlar, #Git, #Go
- https://www.muhammetsafak.com.tr/en/blog/asking-a-tool-to-review-my-own-diff-commitbrief/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/asking-a-tool-to-review-my-own-diff-commitbrief.md

### Which Methodology for Which Project? — Notes from an 18-Year Developer

- Waterfall, Agile, or Hybrid? Wrong question. A decision matrix from 18 years of production, three real cases, and a way out of methodology religion.
- Published: 2026-05-27
- Journal
- Tags: #Career
- https://www.muhammetsafak.com.tr/en/blog/which-methodology-for-which-project-decision-matrix/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/which-methodology-for-which-project-decision-matrix.md

### Is PHP Dead? The 2026 Picture, by the Numbers

- A view from 18 years of PHP: the 2026 state of the language through W3Techs, Stack Overflow, JetBrains and Packagist data — weaknesses included.
- Published: 2026-05-24
- Languages
- Tags: #PHP, #Career
- https://www.muhammetsafak.com.tr/en/blog/is-php-dead-2026-the-data/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/is-php-dead-2026-the-data.md

### Git in Production: A Senior Engineer's Practical Guide

- From workflow selection to bug hunting with bisect, rebase discipline, worktrees, and signed commits — things I noticed after years of using Git.
- Published: 2026-05-23
- Tools & Technologies
- Tags: #Git
- https://www.muhammetsafak.com.tr/en/blog/git-in-production-a-senior-engineers-practical-guide/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/git-in-production-a-senior-engineers-practical-guide.md

### PHP Constants, Enums, and Readonly: One Decision Tree for 10 Tools

- From define to asymmetric visibility — a three-axis mental model and a concrete decision matrix for getting immutability right in modern PHP.
- Published: 2026-05-23
- Languages
- Tags: #PHP, #OOP
- https://www.muhammetsafak.com.tr/en/blog/php-constants-enums-readonly-decision-tree/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/php-constants-enums-readonly-decision-tree.md

### Twelve Years of This Journal: Looking Back

- Everything written in this journal from 2014 to 2026, and the story of growth it tells — and a closing.
- Published: 2026-05-03
- Journal
- Tags: #PHP
- https://www.muhammetsafak.com.tr/en/blog/twelve-years-of-this-journal-looking-back/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/twelve-years-of-this-journal-looking-back.md

### Visibility: why writing is a career investment

- Writing sharpens your thinking and compounds over time. On the career value of being visible — not as personal branding, but as an honest record.
- Published: 2026-04-05
- Journal
- Tags: #Career
- https://www.muhammetsafak.com.tr/en/blog/visibility-writing-as-a-career-investment/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/visibility-writing-as-a-career-investment.md

### Being Polyglot Is an Outcome, Not a Goal

- How becoming a multi-language developer turned into a supposed goal, why it never really was one, and how I actually got there.
- Published: 2026-03-01
- Journal
- Tags: #Go, #Python, #PHP
- https://www.muhammetsafak.com.tr/en/blog/being-polyglot-is-an-outcome-not-a-goal/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/being-polyglot-is-an-outcome-not-a-goal.md

### Twelve years with Laravel: growing alongside a framework

- From 2014 to 2026, twelve years with Laravel — a story of maturing with a tool, outgrowing it, and choosing it again.
- Published: 2026-02-01
- Framework & Library
- Tags: #Laravel
- https://www.muhammetsafak.com.tr/en/blog/twelve-years-with-laravel-growing-with-a-framework/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/twelve-years-with-laravel-growing-with-a-framework.md

### Building Applications with PHP in 2026: State of the Ecosystem

- The real state of PHP in 2026: language maturity, ecosystem health, and why the 'it's dead' narrative is still wrong.
- Published: 2026-01-04
- Languages
- Tags: #PHP
- https://www.muhammetsafak.com.tr/en/blog/building-applications-with-php-in-2026-state-of-the-ecosystem/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/building-applications-with-php-in-2026-state-of-the-ecosystem.md

### Eleven Years In: A Developer's Shifting Priorities

- 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.
- Published: 2025-12-07
- Journal
- Tags: #PHP
- https://www.muhammetsafak.com.tr/en/blog/eleven-years-in-a-developers-shifting-priorities/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/eleven-years-in-a-developers-shifting-priorities.md

### The Changing Craft of Writing Code in the Age of AI

- How much of writing code have AI tools taken over, and what is left for the developer? A reflection on the shifting craft.
- Published: 2025-11-02
- Journal
- Tags: #Araçlar
- https://www.muhammetsafak.com.tr/en/blog/the-changing-craft-of-writing-code-in-the-age-of-ai/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/the-changing-craft-of-writing-code-in-the-age-of-ai.md

### Mentorship and knowledge sharing: growing by helping others grow

- A career post on why mentorship is not a sacrifice but one of the most effective tools for a senior developer's own growth.
- Published: 2025-10-05
- Journal
- Tags: #Career
- https://www.muhammetsafak.com.tr/en/blog/mentorship-and-knowledge-sharing-growing-by-helping-others-grow/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/mentorship-and-knowledge-sharing-growing-by-helping-others-grow.md

### From Idea to Three Platforms: My End-to-End Feature Delivery Flow

- The mature, repeatable process I follow when shipping a feature across API, web, and mobile simultaneously.
- Published: 2025-09-07
- Journal
- Tags: #Laravel, #React Native
- https://www.muhammetsafak.com.tr/en/blog/feature-from-idea-to-three-platforms-end-to-end-flow/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/feature-from-idea-to-three-platforms-end-to-end-flow.md

### PHP 8.5 is on the way: the maturing face of the language

- PHP 8.5 isn't out yet, but reading through the proposals on the table reveals how a language evolves over more than a decade.
- Published: 2025-08-03
- Languages
- Tags: #PHP
- https://www.muhammetsafak.com.tr/en/blog/php-85-on-the-way-the-languages-maturing-face/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/php-85-on-the-way-the-languages-maturing-face.md

### How Far Can You Go with Go's Standard Library

- How much mileage Go's rich standard library actually gives you, and a principled way to decide when to reach for an external dependency.
- Published: 2025-07-06
- Languages
- Tags: #Go
- https://www.muhammetsafak.com.tr/en/blog/how-far-can-you-go-with-gos-standard-library/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/how-far-can-you-go-with-gos-standard-library.md

### Specialist or Generalist: A T-Shaped Career

- On the tension between deep specialization and broad generalism, and how the T-shaped career model resolves that equation.
- Published: 2025-06-01
- Journal
- Tags: #Career
- https://www.muhammetsafak.com.tr/en/blog/specialist-vs-generalist-t-shaped-career/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/specialist-vs-generalist-t-shaped-career.md

### Managing Updates in Expo with OTA

- Practical notes on shipping quick fixes without waiting for the app store review cycle, using Expo Updates — including its real limits.
- Published: 2025-05-04
- Journal
- Tags: #React Native
- https://www.muhammetsafak.com.tr/en/blog/managing-expo-ota-updates/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/managing-expo-ota-updates.md

### React 19 and the New Face of Forms: Actions

- I evaluate React 19's stable-release form actions model by comparing it with previous approaches.
- Published: 2025-04-06
- Interface
- Tags: #React
- https://www.muhammetsafak.com.tr/en/blog/react-19-forms-and-actions/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/react-19-forms-and-actions.md

### Maintaining a polyglot codebase: the cost of context switching

- The hidden cognitive overhead of working in multiple languages simultaneously, and how I manage it.
- Published: 2025-03-02
- Journal
- Tags: #Go, #PHP, #TypeScript
- https://www.muhammetsafak.com.tr/en/blog/maintaining-a-polyglot-codebase-the-cost-of-context-switching/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/maintaining-a-polyglot-codebase-the-cost-of-context-switching.md

### Laravel 12: As the Release Cadence Matures

- I evaluate the changes in Laravel 12 and how the framework's annual release tempo affects project planning.
- Published: 2025-02-02
- Framework & Library
- Tags: #Laravel
- https://www.muhammetsafak.com.tr/en/blog/laravel-12-release-cadence-maturing/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/laravel-12-release-cadence-maturing.md

### Tailwind CSS 4: new engine and configuration

- 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.
- Published: 2025-01-05
- Interface
- Tags: #CSS, #Tailwind CSS
- https://www.muhammetsafak.com.tr/en/blog/tailwind-css-4-new-engine-and-configuration/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/tailwind-css-4-new-engine-and-configuration.md

### Building Your Own Product Solo: The Looplio Experience

- An honest journal from a developer running the API, web, and mobile single-handedly — the real trade-offs of solo product development.
- Published: 2024-12-01
- Journal
- Tags: #Laravel
- https://www.muhammetsafak.com.tr/en/blog/building-your-own-product-solo-the-looplio-experience/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/building-your-own-product-solo-the-looplio-experience.md

### PHP 8.4 is coming: property hooks and asymmetric visibility

- Property hooks and asymmetric visibility in PHP 8.4, and how these additions will change the way we model classes.
- Published: 2024-11-03
- Languages
- Tags: #PHP
- https://www.muhammetsafak.com.tr/en/blog/php-8-4-property-hooks-and-asymmetric-visibility/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/php-8-4-property-hooks-and-asymmetric-visibility.md

### Shipping a Feature Across Three Layers: API, Web, and Mobile

- The end-to-end workflow for delivering a single feature simultaneously across API, web, and mobile layers — lessons from building Looplio.
- Published: 2024-10-06
- Journal
- Tags: #Laravel, #React Native
- https://www.muhammetsafak.com.tr/en/blog/shipping-a-feature-across-three-layers-api-web-mobile/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/shipping-a-feature-across-three-layers-api-web-mobile.md

### Home Cloud Server: Raspberry Pi 5 Upgrade

- Building a home cloud server with Raspberry Pi 5: CasaOS, Nextcloud, RAID storage, and Cloudflare Tunnel.
- Published: 2024-09-22
- Journal
- Tags: #Linux
- https://www.muhammetsafak.com.tr/en/blog/home-cloud-server-raspberry-pi5-upgrade/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/home-cloud-server-raspberry-pi5-upgrade.md

### Submitting a Mobile App to the Stores with Expo

- A first-hand account of preparing and submitting a React Native app to the App Store and Google Play with Expo and EAS Build.
- Published: 2024-09-01
- Journal
- Tags: #React Native
- https://www.muhammetsafak.com.tr/en/blog/submitting-a-mobile-app-to-the-stores-with-expo/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/submitting-a-mobile-app-to-the-stores-with-expo.md

### React Native Performance: List Rendering

- Practical techniques for keeping large lists smooth in React Native — real-world experience with FlatList, memo, and keyExtractor.
- Published: 2024-08-04
- Journal
- Tags: #React Native
- https://www.muhammetsafak.com.tr/en/blog/react-native-performance-list-rendering/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/react-native-performance-list-rendering.md

### Did Someone Say GitHub Actions?

- An introduction to CI/CD with GitHub Actions: how to set up workflows and automate your deployment process.
- Published: 2024-07-23
- Last updated: 2026-09-07
- Tools & Technologies
- Tags: #GitHub Actions
- https://www.muhammetsafak.com.tr/en/blog/did-someone-say-github-actions/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/did-someone-say-github-actions.md

### HTTP Basic Authentication

- 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.
- Published: 2024-07-14
- Web Development
- https://www.muhammetsafak.com.tr/en/blog/http-basic-authentication/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/http-basic-authentication.md

### JWT Authentication: How It Works, When It Fits, and Common Pitfalls

- A practical look at JWT authentication — token structure, signing mechanics, and the trade-offs you need to understand before reaching for it.
- Published: 2024-07-13
- Web Development
- Tags: #JWT
- https://www.muhammetsafak.com.tr/en/blog/jwt-authentication-how-it-works/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/jwt-authentication-how-it-works.md

### Idempotency in APIs: Safely Repeating the Same Request

- Designing API operations that produce no side effects when repeated; idempotency keys and practical implementation at the application layer.
- Published: 2024-07-07
- Last updated: 2026-09-07
- Web Development
- Tags: #API
- https://www.muhammetsafak.com.tr/en/blog/idempotency-in-apis-safely-repeating-the-same-request/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/idempotency-in-apis-safely-repeating-the-same-request.md

### Side projects and open source: what they add to your career and their real cost

- 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.
- Published: 2024-06-02
- Journal
- Tags: #Career
- https://www.muhammetsafak.com.tr/en/blog/side-projects-and-open-source-career-value-and-real-cost/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/side-projects-and-open-source-career-value-and-real-cost.md

### Writing Tests in Go: Table-Driven Tests

- A hands-on introduction to Go's standard testing package and the table-driven test pattern, embracing the language's minimal testing philosophy.
- Published: 2024-05-05
- Languages
- Tags: #Go, #Testing
- https://www.muhammetsafak.com.tr/en/blog/table-driven-tests-in-go/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/table-driven-tests-in-go.md

### Feeding mobile and web with the same calendar logic (Looplio diary)

- The practical decisions and lessons learned while consistently serving a single business logic to both React Native and web clients in Looplio.
- Published: 2024-04-07
- Journal
- Tags: #Laravel, #React Native
- https://www.muhammetsafak.com.tr/en/blog/feeding-mobile-and-web-with-the-same-calendar-logic-looplio-diary/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/feeding-mobile-and-web-with-the-same-calendar-logic-looplio-diary.md

### Laravel 11's New Slim Skeleton Structure

- A look at Laravel 11's leaner skeleton, the defaults that were removed, and the concrete impact on everyday development workflows.
- Published: 2024-03-03
- Framework & Library
- Tags: #Laravel
- https://www.muhammetsafak.com.tr/en/blog/laravel-11-slim-skeleton-structure/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/laravel-11-slim-skeleton-structure.md

### Navigation and screen architecture in React Native

- Practical decisions and screen architecture approaches for setting up React Native Navigation Stack, Tab, and Drawer structures in the context of Looplio.
- Published: 2024-02-04
- Journal
- Tags: #React Native
- https://www.muhammetsafak.com.tr/en/blog/react-native-navigation-and-screen-architecture/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/react-native-navigation-and-screen-architecture.md

### The job-change decision: stay or leave

- How to turn a leave-or-stay decision from an emotional reaction into a measurable evaluation, and tell real signals from temporary frustration.
- Published: 2024-01-07
- Journal
- Tags: #Career
- https://www.muhammetsafak.com.tr/en/blog/job-change-decision-stay-or-leave/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/job-change-decision-stay-or-leave.md

### Four Languages in One Year: The Mental Flexibility That Polyglot Practice Brings

- A reflection on how moving between PHP, Go, Python, and TypeScript within a single year shaped the way I think about software.
- Published: 2023-12-03
- Journal
- Tags: #Go, #Python, #TypeScript, #PHP
- https://www.muhammetsafak.com.tr/en/blog/four-languages-in-one-year-mental-flexibility-of-polyglot-practice/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/four-languages-in-one-year-mental-flexibility-of-polyglot-practice.md

### PHP 8.3: Typed Class Constants and What's New

- Typed class constants, json_validate, #[Override], and dynamic constant access in PHP 8.3 — the language's steady steps toward consistency.
- Published: 2023-11-05
- Languages
- Tags: #PHP
- https://www.muhammetsafak.com.tr/en/blog/php-8-3-typed-class-constants-and-new-additions/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/php-8-3-typed-class-constants-and-new-additions.md

### Type-level programming in TypeScript: utility types

- TypeScript's built-in utility types and type transformation mechanisms: using the type system as a first-class tool.
- Published: 2023-10-01
- Languages
- Tags: #TypeScript
- https://www.muhammetsafak.com.tr/en/blog/type-level-programming-in-typescript-utility-types/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/type-level-programming-in-typescript-utility-types.md

### Filtering the hype: you don't have to learn every new technology

- 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.
- Published: 2023-09-03
- Journal
- Tags: #Career
- https://www.muhammetsafak.com.tr/en/blog/filtering-the-hype-you-dont-have-to-learn-every-new-technology/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/filtering-the-hype-you-dont-have-to-learn-every-new-technology.md

### Getting Started with Big Data Using Elasticsearch and Kibana

- An introduction to Elasticsearch and Kibana: the fundamentals of full-text search, data analysis, and visualization at scale.
- Published: 2023-08-10
- Tools & Technologies
- Tags: #ElasticSearch
- https://www.muhammetsafak.com.tr/en/blog/getting-started-with-big-data-using-elasticsearch-and-kibana/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/getting-started-with-big-data-using-elasticsearch-and-kibana.md

### First steps into mobile development with React Native and Expo

- A web developer's experience crossing into mobile: what I learned while setting up Looplio with React Native and Expo, and how my expectations shifted.
- Published: 2023-08-06
- Journal
- Tags: #React Native
- https://www.muhammetsafak.com.tr/en/blog/first-steps-into-mobile-development-with-react-native-and-expo/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/first-steps-into-mobile-development-with-react-native-and-expo.md

### RabbitMQ with PHP

- Using RabbitMQ with PHP: creating a message queue, publishing messages, and consuming them.
- Published: 2023-07-22
- Tools & Technologies
- Tags: #PHP, #RabbitMQ
- https://www.muhammetsafak.com.tr/en/blog/rabbitmq-with-php/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/rabbitmq-with-php.md

### Async Job Processing with Laravel Queue and Supervisor

- How to set up asynchronous job queues in Laravel using the database driver, and keep workers running reliably in production with Supervisor.
- Published: 2023-07-02
- Last updated: 2026-09-07
- Framework & Library
- Tags: #PHP, #Laravel
- https://www.muhammetsafak.com.tr/en/blog/async-job-processing-with-laravel-queue-and-supervisor/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/async-job-processing-with-laravel-queue-and-supervisor.md

### Using Design Patterns in PHP Without Overdoing It

- Design patterns are a tool, not a goal. When to use which pattern in PHP, and when they create unnecessary complexity.
- Published: 2023-07-02
- Languages
- Tags: #PHP, #OOP
- https://www.muhammetsafak.com.tr/en/blog/using-design-patterns-in-php-without-overdoing-it/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/using-design-patterns-in-php-without-overdoing-it.md

### Frontend state management: Pinia in the post-Vuex era

- How Pinia replaced Vuex in the Vue ecosystem: less boilerplate, better TypeScript support, and a more mature approach to state management.
- Published: 2023-06-04
- Interface
- Tags: #Vue.js
- https://www.muhammetsafak.com.tr/en/blog/frontend-state-management-pinia-after-vuex/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/frontend-state-management-pinia-after-vuex.md

### Letter to my 2014 self: advice for the early years

- Looking back at 2014, the year this journal started: what I over-prioritized, what I neglected, and what I would do differently early on.
- Published: 2023-05-07
- Journal
- Tags: #Career
- https://www.muhammetsafak.com.tr/en/blog/letter-to-my-2014-self-advice-for-the-early-years/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/letter-to-my-2014-self-advice-for-the-early-years.md

### Real-time features in Laravel: WebSocket and broadcasting

- Adding live updates with Laravel Broadcasting: event-driven publishing, Pusher integration, and listening on the client side.
- Published: 2023-04-02
- Web Development
- Tags: #Laravel
- https://www.muhammetsafak.com.tr/en/blog/real-time-features-in-laravel-websocket-and-broadcasting/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/real-time-features-in-laravel-websocket-and-broadcasting.md

### Taking AI's Impact on Coding Seriously for the First Time

- I'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.
- Published: 2023-03-05
- Journal
- Tags: #Araçlar
- https://www.muhammetsafak.com.tr/en/blog/taking-ais-impact-on-coding-seriously/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/taking-ais-impact-on-coding-seriously.md

### PHP Traits: What They Are and When to Use Them

- A practical look at PHP traits: why they exist and how to share behavior across unrelated classes without the pitfalls of multiple inheritance.
- Published: 2023-02-17
- Languages
- Tags: #PHP
- https://www.muhammetsafak.com.tr/en/blog/php-traits-what-they-are-and-when-to-use-them/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/php-traits-what-they-are-and-when-to-use-them.md

### Laravel 10: Stricter Types and the Process Layer

- Laravel 10's type discipline and the new Process facade: how the framework's maturing codebase translates into better day-to-day development.
- Published: 2023-02-05
- Framework & Library
- Tags: #Laravel
- https://www.muhammetsafak.com.tr/en/blog/laravel-10-stricter-types-and-the-process-layer/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/laravel-10-stricter-types-and-the-process-layer.md

### Documenting APIs with OpenAPI

- Deriving documentation from code and sharing one source of truth with clients: fitting the OpenAPI specification into a daily workflow.
- Published: 2023-01-01
- Web Development
- Tags: #API
- https://www.muhammetsafak.com.tr/en/blog/documenting-apis-with-openapi/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/documenting-apis-with-openapi.md

### Using ChatGPT for the First Time as a Developer

- Honest first impressions from a developer after a few days with OpenAI's newly released ChatGPT: where it impresses, and where it falls short.
- Published: 2022-12-04
- Journal
- Tags: #Araçlar
- https://www.muhammetsafak.com.tr/en/blog/using-chatgpt-for-the-first-time-as-a-developer/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/using-chatgpt-for-the-first-time-as-a-developer.md

### PHP 8.2 Is Coming: Readonly Classes and New Types

- A look at readonly classes, DNF types, and standalone type declarations in PHP 8.2, and their impact on domain modeling.
- Published: 2022-11-06
- Languages
- Tags: #PHP
- https://www.muhammetsafak.com.tr/en/blog/php-8-2-readonly-classes-and-new-types/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/php-8-2-readonly-classes-and-new-types.md

### Naming in a Codebase: An Architectural Matter

- Why naming is not merely a style choice, but a design decision in its own right — patterns I have observed over the years.
- Published: 2022-10-02
- Languages
- Tags: #OOP
- https://www.muhammetsafak.com.tr/en/blog/naming-in-a-codebase-an-architectural-matter/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/naming-in-a-codebase-an-architectural-matter.md

### End-to-end type safety with TypeScript: from API to UI

- How to carry your type contract from the backend API to the frontend interface without breaking it — and the practical approaches to get there.
- Published: 2022-09-04
- Languages
- Tags: #TypeScript
- https://www.muhammetsafak.com.tr/en/blog/end-to-end-type-safety-with-typescript-from-api-to-ui/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/end-to-end-type-safety-with-typescript-from-api-to-ui.md

### Automating repetitive tasks with Python

- How to move manual workflows into reliable Python scripts: which tasks are worth scripting and how to do it right.
- Published: 2022-08-07
- Languages
- Tags: #Python
- https://www.muhammetsafak.com.tr/en/blog/automating-repetitive-tasks-with-python/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/automating-repetitive-tasks-with-python.md

### Seniority: The Responsibility That Doesn't Come with the Title

- The title often arrives before genuine seniority does. Why seniority isn't technical knowledge but the capacity to decide under ambiguity.
- Published: 2022-07-03
- Journal
- Tags: #Career
- https://www.muhammetsafak.com.tr/en/blog/seniority-the-responsibility-that-doesnt-come-with-the-title/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/seniority-the-responsibility-that-doesnt-come-with-the-title.md

### React 18 and Concurrent Rendering

- How React 18's concurrent render model changes application behavior, and what that means in practice.
- Published: 2022-06-05
- Interface
- Tags: #React
- https://www.muhammetsafak.com.tr/en/blog/react-18-concurrent-rendering/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/react-18-concurrent-rendering.md

### Designing Value Objects in Modern PHP

- Embedding meaning into code instead of relying on primitives: why and how to design value objects in PHP.
- Published: 2022-05-01
- Last updated: 2026-09-07
- Languages
- Tags: #PHP
- https://www.muhammetsafak.com.tr/en/blog/designing-value-objects-in-modern-php/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/designing-value-objects-in-modern-php.md

### Designing APIs the Contract-First Way

- How a contract-first approach aligns expectations across teams before a single line of code is written, and what it looks like in practice.
- Published: 2022-04-03
- Web Development
- Tags: #API
- https://www.muhammetsafak.com.tr/en/blog/contract-first-api-design/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/contract-first-api-design.md

### Go 1.18 Generics: Toward the End of a Long Wait

- Go 1.18's generic support shows how a language can be reshaped thoughtfully. First impressions and trade-offs.
- Published: 2022-03-06
- Languages
- Tags: #Go
- https://www.muhammetsafak.com.tr/en/blog/go-1-18-generics-toward-the-end-of-a-long-wait/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/go-1-18-generics-toward-the-end-of-a-long-wait.md

### Docker containerization: installation and basic usage

- A hands-on beginner's guide to Docker's container architecture, core commands, and the concepts of volumes and networking.
- Published: 2022-02-22
- Last updated: 2026-09-07
- Tools & Technologies
- Tags: #Docker
- https://www.muhammetsafak.com.tr/en/blog/docker-containerization-installation-and-basic-usage/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/docker-containerization-installation-and-basic-usage.md

### Laravel 9: New Release Cadence and PHP 8 Compatibility

- How Laravel 9's annual release cadence affects project planning, and what PHP 8 compatibility means for your codebase.
- Published: 2022-02-06
- Framework & Library
- Tags: #Laravel
- https://www.muhammetsafak.com.tr/en/blog/laravel-9-release-cadence-and-php-8-compatibility/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/laravel-9-release-cadence-and-php-8-compatibility.md

### Being a polyglot developer: choosing the language for the problem

- Personal notes on why mastering multiple programming languages is a matter of tool selection, not identity.
- Published: 2022-01-02
- Journal
- Tags: #Go, #Python, #PHP
- https://www.muhammetsafak.com.tr/en/blog/being-a-polyglot-developer-choosing-the-language-for-the-problem/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/being-a-polyglot-developer-choosing-the-language-for-the-problem.md

### Simplifying My Toolset as a Software Engineer

- Reviewing my tool stack during the transition from senior to staff level, I realized fewer tools lead to clearer decisions.
- Published: 2021-12-05
- Journal
- Tags: #Araçlar
- https://www.muhammetsafak.com.tr/en/blog/simplifying-my-toolset-as-a-software-engineer/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/simplifying-my-toolset-as-a-software-engineer.md

### PHP 8.1 Is Coming: Safer Domain Models with Enums and Readonly Properties

- PHP 8.1 isn't out yet, but I'm already exploring how the upcoming native enum support and readonly properties will reshape domain modelling.
- Published: 2021-11-07
- Languages
- Tags: #PHP
- https://www.muhammetsafak.com.tr/en/blog/php-8-1-safer-domain-models-with-enums-and-readonly/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/php-8-1-safer-domain-models-with-enums-and-readonly.md

### After REST: Trying Out GraphQL

- While solving a real over-fetching problem with GraphQL, I weigh where REST is still sufficient and where GraphQL actually makes sense.
- Published: 2021-10-03
- Web Development
- Tags: #API, #GraphQL
- https://www.muhammetsafak.com.tr/en/blog/trying-graphql-after-rest/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/trying-graphql-after-rest.md

### Type Conversion and Type Coercion in PHP

- A practical look at PHP type conversion and coercion: gettype, settype, var_dump, and why strict_types belongs in every file.
- Published: 2021-09-22
- Languages
- Tags: #PHP
- https://www.muhammetsafak.com.tr/en/blog/php-type-conversion-and-type-coercion/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/php-type-conversion-and-type-coercion.md

### Building a Testing Habit in Laravel: Switching to Pest

- I explain the syntax and structural differences that turned test writing from a chore into a habit when moving from PHPUnit to Pest.
- Published: 2021-09-05
- Tools & Technologies
- Tags: #Laravel, #Testing
- https://www.muhammetsafak.com.tr/en/blog/building-a-testing-habit-in-laravel-switching-to-pest/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/building-a-testing-habit-in-laravel-switching-to-pest.md

### MySQL Storage Engines: InnoDB vs MyISAM

- A practical comparison of MySQL storage engines: the differences between InnoDB and MyISAM, their trade-offs, and which one to choose.
- Published: 2021-08-01
- Tools & Technologies
- Tags: #MySQL
- https://www.muhammetsafak.com.tr/en/blog/mysql-storage-engines-innodb-vs-myisam/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/mysql-storage-engines-innodb-vs-myisam.md

### SEO Problems in Single-Page Applications and SSR Options

- I compare the visibility problem that client-side rendering creates for search engines and evaluate server-side rendering alternatives.
- Published: 2021-08-01
- Interface
- Tags: #JavaScript
- https://www.muhammetsafak.com.tr/en/blog/seo-problems-in-spas-and-ssr-options/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/seo-problems-in-spas-and-ssr-options.md

### Generics and type inference in TypeScript

- Building reusable, type-safe abstractions with generics in TypeScript and making the most of type inference.
- Published: 2021-07-04
- Languages
- Tags: #TypeScript
- https://www.muhammetsafak.com.tr/en/blog/generics-and-type-inference-in-typescript/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/generics-and-type-inference-in-typescript.md

### Laravel Octane: the performance that comes with a persistent process

- How Laravel Octane eliminates per-request bootstrap overhead — and the trade-offs that come with it.
- Published: 2021-06-06
- Last updated: 2026-09-07
- Framework & Library
- Tags: #Laravel
- https://www.muhammetsafak.com.tr/en/blog/laravel-octane-persistent-process-performance/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/laravel-octane-persistent-process-performance.md

### Error handling in Go: living with the error value

- A practical approach to embracing error handling as a language idiom in Go, a language with no exception mechanism.
- Published: 2021-05-02
- Last updated: 2026-09-07
- Languages
- Tags: #Go
- https://www.muhammetsafak.com.tr/en/blog/error-handling-in-go-living-with-the-error-value/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/error-handling-in-go-living-with-the-error-value.md

### The Need for Enums in PHP: Pre-8.1 Solutions

- How we represented fixed value sets before PHP 8.1 introduced native enums, and the trade-offs of each approach.
- Published: 2021-04-04
- Languages
- Tags: #PHP
- https://www.muhammetsafak.com.tr/en/blog/php-enum-need-pre-8-1-solutions/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/php-enum-need-pre-8-1-solutions.md

### API error contract: returning meaningful errors to clients

- How binding API error responses to a consistent contract simplifies client development and debugging.
- Published: 2021-03-07
- Web Development
- Tags: #API
- https://www.muhammetsafak.com.tr/en/blog/api-error-contract-returning-meaningful-errors-to-clients/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/api-error-contract-returning-meaningful-errors-to-clients.md

### Slimming Laravel Controllers with Action Classes

- How to write more testable and maintainable code by moving business logic out of controllers and into single-purpose action classes.
- Published: 2021-02-07
- Framework & Library
- Tags: #Laravel
- https://www.muhammetsafak.com.tr/en/blog/slimming-laravel-controllers-with-action-classes/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/slimming-laravel-controllers-with-action-classes.md

### Cutting dev server startup to seconds with Vite

- Why switching from a Webpack-based dev environment to Vite makes build times dramatically shorter.
- Published: 2021-01-03
- Tools & Technologies
- Tags: #JavaScript, #Vite
- https://www.muhammetsafak.com.tr/en/blog/cutting-dev-server-startup-to-seconds-with-vite/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/cutting-dev-server-startup-to-seconds-with-vite.md

### Coding with PHP 8.0: Attributes and the Nullsafe Operator

- PHP 8.0 is out. I share how I've been using attributes and the nullsafe operator in real projects, and what they've actually delivered.
- Published: 2020-12-06
- Languages
- Tags: #PHP
- https://www.muhammetsafak.com.tr/en/blog/coding-with-php-8-0-attributes-and-nullsafe-operator/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/coding-with-php-8-0-attributes-and-nullsafe-operator.md

### Preparing for PHP 8.0: union types, match, and named arguments

- PHP 8.0 isn't out yet, but the RFCs and beta releases are already readable. Here are my notes on three key features worth understanding before release.
- Published: 2020-11-01
- Languages
- Tags: #PHP
- https://www.muhammetsafak.com.tr/en/blog/preparing-for-php-8-union-types-match-named-arguments/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/preparing-for-php-8-union-types-match-named-arguments.md

### Writing Data Processing Scripts with Python

- The practical case for offloading repetitive transformation tasks to Python, with real script examples.
- Published: 2020-10-04
- Languages
- Tags: #Python
- https://www.muhammetsafak.com.tr/en/blog/writing-data-processing-scripts-with-python/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/writing-data-processing-scripts-with-python.md

### From monolith to modern UI with Inertia.js

- How Inertia.js delivers a single-page-app feel without a separate API, how it integrates with Laravel, and when it's the right choice.
- Published: 2020-09-06
- Framework & Library
- Tags: #Laravel, #Inertia.js
- https://www.muhammetsafak.com.tr/en/blog/from-monolith-to-modern-ui-with-inertia-js/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/from-monolith-to-modern-ui-with-inertia-js.md

### Laravel 8: Model Factories and the New Directory Structure

- A deep dive into Laravel 8's class-based factory system and new directory layout, focused on generating test and seed data.
- Published: 2020-08-02
- Framework & Library
- Tags: #Laravel
- https://www.muhammetsafak.com.tr/en/blog/laravel-8-model-factories-and-new-directory-structure/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/laravel-8-model-factories-and-new-directory-structure.md

### Vue 3 Composition API: Why and When

- I discuss what the Composition API brings over Options API in Vue 3, and when you should prefer it, with concrete examples.
- Published: 2020-07-05
- Interface
- Tags: #Vue.js
- https://www.muhammetsafak.com.tr/en/blog/vue-3-composition-api-why-and-when/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/vue-3-composition-api-why-and-when.md

### Exception and Error Handling in PHP

- A practical guide to PHP exceptions and error handling: try-catch-finally blocks, multiple catch clauses, custom exception classes, and global handlers.
- Published: 2020-07-03
- Languages
- Tags: #PHP
- https://www.muhammetsafak.com.tr/en/blog/exception-and-error-handling-in-php/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/exception-and-error-handling-in-php.md

### Writing HTTP services in Go: is the standard library enough?

- I explore what you get — and what you don't — when building a small HTTP service with Go's net/http package, and where the framework threshold sits.
- Published: 2020-06-07
- Last updated: 2026-09-07
- Languages
- Tags: #Go
- https://www.muhammetsafak.com.tr/en/blog/writing-http-services-in-go-is-the-standard-library-enough/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/writing-http-services-in-go-is-the-standard-library-enough.md

### Getting Started with Python: Why Yet Another Scripting Language

- I explain the gap Python fills in my polyglot practice, my learning journey, and a PHP developer's perspective on Python.
- Published: 2020-05-03
- Journal
- Tags: #Python
- https://www.muhammetsafak.com.tr/en/blog/python-introduction-why-another-scripting-language/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/python-introduction-why-another-scripting-language.md

### Alpine.js: A Lightweight Choice for Small Interactions

- When should you reach for Alpine.js, and when should you not? I discuss the right scale for UI needs that don't require a full framework.
- Published: 2020-04-05
- Interface
- Tags: #JavaScript, #Alpine.js
- https://www.muhammetsafak.com.tr/en/blog/alpine-js-a-lightweight-choice-for-small-interactions/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/alpine-js-a-lightweight-choice-for-small-interactions.md

### SPA Authentication with Laravel 7 and Sanctum

- How Laravel Sanctum solves SPA authentication, and why its cookie-based approach is cleaner than token-based alternatives.
- Published: 2020-03-01
- Web Development
- Tags: #Laravel, #API
- https://www.muhammetsafak.com.tr/en/blog/spa-authentication-with-laravel-7-and-sanctum/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/spa-authentication-with-laravel-7-and-sanctum.md

### Interactive Laravel Apps Without Writing JavaScript: Livewire

- A practical look at Livewire's server-driven interaction model — when it's the right choice, and where its limits lie.
- Published: 2020-02-02
- Framework & Library
- Tags: #Laravel, #Livewire
- https://www.muhammetsafak.com.tr/en/blog/interactive-laravel-apps-without-writing-javascript-livewire/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/interactive-laravel-apps-without-writing-javascript-livewire.md

### Standardizing API responses: a consistent contract

- How returning the same response structure from every endpoint simplifies client code and makes errors predictable.
- Published: 2020-01-05
- Web Development
- Tags: #API
- https://www.muhammetsafak.com.tr/en/blog/standardizing-api-responses-a-consistent-contract/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/standardizing-api-responses-a-consistent-contract.md

### Typed Properties and Arrow Functions in PHP 7.4

- PHP 7.4 was released in November 2019. Typed properties and arrow functions significantly strengthen the language's type system and syntax.
- Published: 2019-12-01
- Languages
- Tags: #PHP
- https://www.muhammetsafak.com.tr/en/blog/php-7-4-typed-properties-and-arrow-functions/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/php-7-4-typed-properties-and-arrow-functions.md

### Concurrency in Go: goroutines and channels in practice

- A hands-on look at Go's concurrency model — goroutines and channels — and what changes when you come from PHP's process model.
- Published: 2019-11-03
- Last updated: 2026-09-07
- Languages
- Tags: #Go
- https://www.muhammetsafak.com.tr/en/blog/concurrency-in-go-goroutines-and-channels-in-practice/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/concurrency-in-go-goroutines-and-channels-in-practice.md

### Testing Vue Components

- A practical approach to automatically verifying Vue component UI behavior: writing real-world tests with Vue Test Utils.
- Published: 2019-10-06
- Tools & Technologies
- Tags: #Vue.js, #Testing
- https://www.muhammetsafak.com.tr/en/blog/testing-vue-components/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/testing-vue-components.md

### Migrating to TypeScript: Type Safety in JavaScript

- My practical experience adopting TypeScript in a growing frontend codebase — what I gained, what I lost, and when it actually proved its worth.
- Published: 2019-09-01
- Languages
- Tags: #TypeScript
- https://www.muhammetsafak.com.tr/en/blog/migrating-to-typescript-type-safety-in-javascript/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/migrating-to-typescript-type-safety-in-javascript.md

### API versioning strategies and trade-offs

- How do you evolve an API without breaking existing clients? A comparison of versioning strategies with their trade-offs, drawn from real-world experience.
- Published: 2019-08-04
- Last updated: 2026-09-07
- Web Development
- Tags: #API
- https://www.muhammetsafak.com.tr/en/blog/api-versioning-strategies-and-tradeoffs/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/api-versioning-strategies-and-tradeoffs.md

### Laravel 6 and What LTS Really Means: Versioning Strategy

- What does the Laravel 6 LTS release actually mean? Weighing long-term support against your project's lifespan, and how to approach versioning.
- Published: 2019-07-07
- Framework & Library
- Tags: #Laravel
- https://www.muhammetsafak.com.tr/en/blog/laravel-6-and-what-lts-really-means-versioning-strategy/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/laravel-6-and-what-lts-really-means-versioning-strategy.md

### Writing My First CLI Tool in Go

- I reinforced my newly learned Go by building a real CLI tool: what the language feels like in practice, and how far the standard library takes you.
- Published: 2019-06-02
- Languages
- Tags: #Go
- https://www.muhammetsafak.com.tr/en/blog/writing-my-first-cli-tool-in-go/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/writing-my-first-cli-tool-in-go.md

### Tailwind CSS: Why I Switched to the Utility-First Approach

- Why I adopted the utility-first CSS paradigm with Tailwind CSS v1.0, the trade-offs I encountered, and when it actually makes sense.
- Published: 2019-05-05
- Interface
- Tags: #CSS, #Tailwind CSS
- https://www.muhammetsafak.com.tr/en/blog/why-i-switched-to-tailwind-css-utility-first/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/why-i-switched-to-tailwind-css-utility-first.md

### First step toward polyglot: why I started learning Go

- After more than a decade with PHP, why did I decide to pick up a second language — and why Go?
- Published: 2019-04-07
- Journal
- Tags: #Go
- https://www.muhammetsafak.com.tr/en/blog/first-step-toward-polyglot-why-i-started-learning-go/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/first-step-toward-polyglot-why-i-started-learning-go.md

### How React Hooks Changed the Way We Write Components

- React 16.8 introduced the Hooks API: how it shifted component authoring from classes to functions, what you gain, and what to watch out for.
- Published: 2019-03-03
- Interface
- Tags: #JavaScript, #React
- https://www.muhammetsafak.com.tr/en/blog/how-react-hooks-changed-the-way-we-write-components/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/how-react-hooks-changed-the-way-we-write-components.md

### Using Service Providers and the Container Correctly in Laravel

- A practical guide to truly understanding Laravel's dependency resolution mechanism: how to use service providers and the IoC container the right way.
- Published: 2019-02-03
- Framework & Library
- Tags: #Laravel
- https://www.muhammetsafak.com.tr/en/blog/using-service-providers-and-the-container-correctly-in-laravel/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/using-service-providers-and-the-container-correctly-in-laravel.md

### PHP 7.3: Flexible Heredoc and List Assignments

- A hands-on look at PHP 7.3's flexible heredoc syntax and list assignment improvements, and how they contribute to better code readability.
- Published: 2019-01-06
- Languages
- Tags: #PHP
- https://www.muhammetsafak.com.tr/en/blog/php-7-3-flexible-heredoc-and-list-assignments/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/php-7-3-flexible-heredoc-and-list-assignments.md

### 2018 Year in Review: Where a PHP Developer Landed

- An honest look at what I learned throughout 2018, how my habits shifted, and what I want to pursue next.
- Published: 2018-12-02
- Journal
- Tags: #PHP
- https://www.muhammetsafak.com.tr/en/blog/2018-year-in-review-where-a-php-developer-landed/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/2018-year-in-review-where-a-php-developer-landed.md

### Consuming APIs with Axios in the Frontend

- Practical notes on keeping the request/response layer clean in the UI using Axios interceptors, error handling, and shared configuration.
- Published: 2018-11-04
- Interface
- Tags: #JavaScript
- https://www.muhammetsafak.com.tr/en/blog/consuming-apis-with-axios-in-the-frontend/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/consuming-apis-with-axios-in-the-frontend.md

### Task Scheduling in Laravel

- How I use Laravel's task scheduler to run many scheduled jobs from a single cron entry, keeping the scheduling logic readable and version-controlled.
- Published: 2018-10-07
- Web Development
- Tags: #Laravel
- https://www.muhammetsafak.com.tr/en/blog/task-scheduling-in-laravel/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/task-scheduling-in-laravel.md

### Multilingual (i18n) Applications in Laravel

- Practical notes on adding multi-language support to Laravel: organizing language files, separating text from code, and managing locale switching.
- Published: 2018-09-02
- Web Development
- Tags: #Laravel
- https://www.muhammetsafak.com.tr/en/blog/multilingual-i18n-in-laravel/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/multilingual-i18n-in-laravel.md

### npm and the Modern JavaScript Package Ecosystem

- Managing JavaScript dependencies with npm, configuring package.json correctly, and handling the practical challenges you run into in the package ecosystem.
- Published: 2018-08-05
- Tools & Technologies
- Tags: #JavaScript, #npm
- https://www.muhammetsafak.com.tr/en/blog/npm-and-the-modern-javascript-package-ecosystem/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/npm-and-the-modern-javascript-package-ecosystem.md

### Building a Calendar Events Feature with Laravel

- How I built a full calendar feature in Laravel from scratch, handling recurrence rules, timezones, and date range queries end to end.
- Published: 2018-07-01
- Journal
- Tags: #Laravel
- https://www.muhammetsafak.com.tr/en/blog/building-a-calendar-events-feature-with-laravel/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/building-a-calendar-events-feature-with-laravel.md

### Writing My First Tests with PHPUnit

- From installing PHPUnit to writing my first unit tests — what worked, what tripped me up, and the lessons learned along the way.
- Published: 2018-06-03
- Tools & Technologies
- Tags: #PHP, #Testing
- https://www.muhammetsafak.com.tr/en/blog/writing-my-first-tests-with-phpunit/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/writing-my-first-tests-with-phpunit.md

### Laravel Notifications: Email and SMS

- How I use Laravel Notification classes to send the same notification logic across multiple channels — email, SMS, and more.
- Published: 2018-05-06
- Web Development
- Tags: #Laravel
- https://www.muhammetsafak.com.tr/en/blog/laravel-notifications-email-and-sms/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/laravel-notifications-email-and-sms.md

### Readable Asynchronous Code with async/await in JavaScript

- How async/await syntax replaced Promise chains and made asynchronous JavaScript genuinely readable — with examples.
- Published: 2018-04-01
- Languages
- Tags: #JavaScript
- https://www.muhammetsafak.com.tr/en/blog/readable-async-code-with-async-await-in-javascript/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/readable-async-code-with-async-await-in-javascript.md

### Transitioning to Component-Based UI Architecture with Vue

- How I shifted from page-centric thinking to component-centric thinking, and how Vue.js makes that shift practical.
- Published: 2018-03-04
- Interface
- Tags: #Vue.js
- https://www.muhammetsafak.com.tr/en/blog/transitioning-to-component-based-ui-architecture-with-vue/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/transitioning-to-component-based-ui-architecture-with-vue.md

### Formatting API Responses with Laravel Resource Classes

- How to produce clean API responses with Laravel Resource classes without leaking your database model directly to clients.
- Published: 2018-02-04
- Web Development
- Tags: #Laravel, #API
- https://www.muhammetsafak.com.tr/en/blog/formatting-api-responses-with-laravel-resource-classes/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/formatting-api-responses-with-laravel-resource-classes.md

### PHP 7.2 and Modern PHP Habits

- What PHP 7.2 introduced and how the direction of the language has shaped my day-to-day coding habits.
- Published: 2018-01-07
- Languages
- Tags: #PHP
- https://www.muhammetsafak.com.tr/en/blog/php-72-and-modern-php-habits/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/php-72-and-modern-php-habits.md

### Git workflow: branching, merging, and pull request discipline

- Branching habits, merge strategies, and how to build a traceable change history with Git and pull requests.
- Published: 2017-12-03
- Tools & Technologies
- Tags: #Git
- https://www.muhammetsafak.com.tr/en/blog/git-workflow-branching-merging-and-pull-request-discipline/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/git-workflow-branching-merging-and-pull-request-discipline.md

### Responsive design: mobile-first CSS

- What the mobile-first CSS approach is and how to use media queries to keep a single interface looking right across different screen sizes.
- Published: 2017-11-05
- Interface
- Tags: #CSS
- https://www.muhammetsafak.com.tr/en/blog/responsive-design-mobile-first-css/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/responsive-design-mobile-first-css.md

### Authorization with Laravel Gates and Policies

- How to centralize authorization logic in Laravel using Gates and Policies, keeping 'who can do what' decisions clean and testable.
- Published: 2017-10-01
- Web Development
- Tags: #Laravel
- https://www.muhammetsafak.com.tr/en/blog/authorization-with-laravel-gates-and-policies/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/authorization-with-laravel-gates-and-policies.md

### Promises and Async Flow in JavaScript

- What Promises are in JavaScript, how to escape callback hell, and the essential patterns for chaining then/catch and managing async flow.
- Published: 2017-09-03
- Languages
- Tags: #JavaScript
- https://www.muhammetsafak.com.tr/en/blog/promises-and-async-flow-in-javascript/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/promises-and-async-flow-in-javascript.md

### Payment Integration with Laravel (iyzico): A Real-World Experience

- Real problems and solutions encountered while integrating iyzico payments into a Laravel project — things not in the documentation.
- Published: 2017-08-06
- Journal
- Tags: #Laravel
- https://www.muhammetsafak.com.tr/en/blog/payment-integration-with-laravel-iyzico-experience/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/payment-integration-with-laravel-iyzico-experience.md

### Consuming Third-Party APIs: HTTP Client with Guzzle

- Connecting to external services in PHP with the Guzzle HTTP client — covering timeouts, error handling, and building a reliable request structure.
- Published: 2017-07-02
- Web Development
- Tags: #PHP
- https://www.muhammetsafak.com.tr/en/blog/consuming-third-party-apis-http-client-with-guzzle/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/consuming-third-party-apis-http-client-with-guzzle.md

### PHP Closures and Variable Capture with use

- What closures (anonymous functions) are in PHP, how variable capture with the use keyword works, and practical everyday examples.
- Published: 2017-06-04
- Languages
- Tags: #PHP
- https://www.muhammetsafak.com.tr/en/blog/php-closures-and-variable-capture-with-use/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/php-closures-and-variable-capture-with-use.md

### Simplifying Asset Compilation with Laravel Mix

- Laravel Mix provides a fluent API that lets you compile JavaScript and CSS assets without writing Webpack configuration from scratch.
- Published: 2017-05-07
- Tools & Technologies
- Tags: #Laravel
- https://www.muhammetsafak.com.tr/en/blog/simplifying-asset-compilation-with-laravel-mix/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/simplifying-asset-compilation-with-laravel-mix.md

### State Management in Vue with Vuex

- Centralizing shared state across components using Vuex: state, mutations, actions, and getters explained.
- Published: 2017-04-02
- Interface
- Tags: #Vue.js
- https://www.muhammetsafak.com.tr/en/blog/state-management-in-vue-with-vuex/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/state-management-in-vue-with-vuex.md

### Sending Emails in Laravel with Mailables and Templates

- Setting up reliable, maintainable transactional emails using Laravel's Mailable class and Blade email templates.
- Published: 2017-03-05
- Web Development
- Tags: #Laravel
- https://www.muhammetsafak.com.tr/en/blog/sending-emails-in-laravel-with-mailables-and-templates/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/sending-emails-in-laravel-with-mailables-and-templates.md

### Thinking in Components with Laravel 5.4 and Blade

- How the @component directive introduced in Laravel 5.4's Blade templating engine lets you split views into reusable, well-defined pieces.
- Published: 2017-02-05
- Framework & Library
- Tags: #Laravel
- https://www.muhammetsafak.com.tr/en/blog/thinking-in-components-with-laravel-5-4-and-blade/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/thinking-in-components-with-laravel-5-4-and-blade.md

### PHP 7.1: Nullable Types and the Void Return Type

- PHP 7.1's nullable type declarations and void return type make function signatures more readable and precise.
- Published: 2017-01-01
- Languages
- Tags: #PHP
- https://www.muhammetsafak.com.tr/en/blog/php-7-1-nullable-types-and-void-return-type/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/php-7-1-nullable-types-and-void-return-type.md

### Writing Maintainable CSS with Sass

- How I bring structure to growing stylesheets using Sass variables, nested rules, and file partials.
- Published: 2016-12-04
- Interface
- Tags: #CSS, #Sass
- https://www.muhammetsafak.com.tr/en/blog/writing-maintainable-css-with-sass/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/writing-maintainable-css-with-sass.md

### Single-page application routing with Vue Router

- A walkthrough of the core concepts and practical setup I encountered while moving page transitions to the client side with Vue Router.
- Published: 2016-11-06
- Interface
- Tags: #Vue.js
- https://www.muhammetsafak.com.tr/en/blog/single-page-application-routing-with-vue-router/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/single-page-application-routing-with-vue-router.md

### Speeding Up API Development with Postman

- Sharing what I learned about testing API endpoints without a browser, building collections, and integrating Postman into my development workflow.
- Published: 2016-10-02
- Tools & Technologies
- Tags: #API
- https://www.muhammetsafak.com.tr/en/blog/speeding-up-api-development-with-postman/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/speeding-up-api-development-with-postman.md

### Pagination, Filtering, and Sorting in REST APIs

- How I design pagination, filtering, and sorting parameters in an API to present growing datasets to clients in a manageable way.
- Published: 2016-09-04
- Last updated: 2026-09-07
- Web Development
- Tags: #API
- https://www.muhammetsafak.com.tr/en/blog/pagination-filtering-and-sorting-in-rest-apis/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/pagination-filtering-and-sorting-in-rest-apis.md

### File upload and image processing with Laravel

- A walkthrough of the end-to-end flow for file uploading, validation, and image resizing in Laravel.
- Published: 2016-08-07
- Web Development
- Tags: #Laravel
- https://www.muhammetsafak.com.tr/en/blog/file-upload-and-image-processing-with-laravel/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/file-upload-and-image-processing-with-laravel.md

### Interfaces and Dependency Injection in PHP

- How I use interface definitions and dependency injection in PHP to build loosely coupled classes, illustrated with practical examples.
- Published: 2016-07-03
- Languages
- Tags: #PHP, #OOP
- https://www.muhammetsafak.com.tr/en/blog/interfaces-and-dependency-injection-in-php/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/interfaces-and-dependency-injection-in-php.md

### Migrating to Webpack: From Gulp to module bundling

- Why I abandoned the build pipeline I built with Gulp, and what I gained — and struggled with — when switching to Webpack.
- Published: 2016-06-05
- Tools & Technologies
- Tags: #JavaScript, #Webpack
- https://www.muhammetsafak.com.tr/en/blog/migrating-to-webpack-from-gulp-to-module-bundling/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/migrating-to-webpack-from-gulp-to-module-bundling.md

### Events and Listeners in Laravel

- How I use Laravel's event system to decouple side effects from the main flow — with practical examples of what you gain.
- Published: 2016-05-01
- Framework & Library
- Tags: #Laravel
- https://www.muhammetsafak.com.tr/en/blog/events-and-listeners-in-laravel/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/events-and-listeners-in-laravel.md

### My first reactive component with Vue.js

- My experience moving from jQuery DOM manipulation to Vue.js's data-driven approach, and how I wrote my first reactive component.
- Published: 2016-04-03
- Interface
- Tags: #JavaScript, #Vue.js
- https://www.muhammetsafak.com.tr/en/blog/first-reactive-component-with-vue-js/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/first-reactive-component-with-vue-js.md

### Putting SOLID into practice in PHP: the Single Responsibility Principle

- How I apply SRP — the S in SOLID — to PHP classes with concrete examples, moving beyond abstract theory.
- Published: 2016-03-06
- Languages
- Tags: #PHP, #OOP
- https://www.muhammetsafak.com.tr/en/blog/putting-solid-into-practice-in-php-single-responsibility-principle/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/putting-solid-into-practice-in-php-single-responsibility-principle.md

### Laravel 5.2: Multiple Authentication Guards and Route Groups

- How I manage multiple user types in a single Laravel 5.2 application using guards and route groups.
- Published: 2016-02-07
- Framework & Library
- Tags: #Laravel
- https://www.muhammetsafak.com.tr/en/blog/laravel-5-2-multiple-auth-guards-and-route-groups/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/laravel-5-2-multiple-auth-guards-and-route-groups.md

### Scalar Type Declarations and Return Types in PHP 7

- A practical look at how I use scalar type declarations and return type definitions introduced in PHP 7.
- Published: 2016-01-03
- Languages
- Tags: #PHP
- https://www.muhammetsafak.com.tr/en/blog/scalar-type-declarations-and-return-types-in-php-7/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/scalar-type-declarations-and-return-types-in-php-7.md

### PHP 7.0: Speed and Type Declarations in the Long-Awaited Release

- PHP 7.0 was released this week. I share my first impressions on the performance gains, scalar type declarations, and return types.
- Published: 2015-12-06
- Languages
- Tags: #PHP
- https://www.muhammetsafak.com.tr/en/blog/php-7-0-the-long-awaited-release-speed-and-type-declarations/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/php-7-0-the-long-awaited-release-speed-and-type-declarations.md

### Publishing Your Own PHP Package on Packagist with Composer

- I configured a PHP package from scratch and published it on Packagist so others could use it — here's how I did it.
- Published: 2015-11-01
- Tools & Technologies
- Tags: #PHP, #Composer
- https://www.muhammetsafak.com.tr/en/blog/publishing-your-own-php-package-on-packagist-with-composer/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/publishing-your-own-php-package-on-packagist-with-composer.md

### Adding shared behavior to requests with Laravel middleware

- What middleware is in Laravel, how to write it, and how to centralize cross-cutting concerns like authentication in one place.
- Published: 2015-10-04
- Framework & Library
- Tags: #Laravel
- https://www.muhammetsafak.com.tr/en/blog/adding-shared-behavior-to-requests-with-laravel-middleware/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/adding-shared-behavior-to-requests-with-laravel-middleware.md

### Eloquent Relationships: hasMany, belongsTo, and Eager Loading

- How to define hasMany and belongsTo relationships in Laravel Eloquent, and how to solve the N+1 query problem with eager loading.
- Published: 2015-09-06
- Last updated: 2026-09-07
- Framework & Library
- Tags: #Laravel
- https://www.muhammetsafak.com.tr/en/blog/eloquent-relationships-hasmany-belongsto-and-eager-loading/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/eloquent-relationships-hasmany-belongsto-and-eager-loading.md

### Building a Front-End Build Pipeline with Gulp

- How I set up a front-end workflow that automates Sass compilation, JavaScript bundling, and browser reloading with Gulp.
- Published: 2015-08-02
- Tools & Technologies
- Tags: #JavaScript, #Gulp
- https://www.muhammetsafak.com.tr/en/blog/building-a-front-end-build-pipeline-with-gulp/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/building-a-front-end-build-pipeline-with-gulp.md

### Getting Started with ES6: let, const, and Arrow Functions

- An introduction to the most impactful ES6 features — let, const, arrow functions, and template literals — with practical examples.
- Published: 2015-07-05
- Languages
- Tags: #JavaScript
- https://www.muhammetsafak.com.tr/en/blog/getting-started-with-es6-let-const-and-arrow-functions/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/getting-started-with-es6-let-const-and-arrow-functions.md

### PHP 5.6 New Features: Variadic Functions and the ** Operator

- An overview of PHP 5.6's variadic argument support and the new exponentiation operator, with practical examples.
- Published: 2015-06-07
- Languages
- Tags: #PHP
- https://www.muhammetsafak.com.tr/en/blog/php-5-6-new-features-variadic-functions-and-exponentiation-operator/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/php-5-6-new-features-variadic-functions-and-exponentiation-operator.md

### Writing JSON API Endpoints with Laravel

- A practical walkthrough of building interface-agnostic JSON API endpoints in Laravel.
- Published: 2015-05-03
- Web Development
- Tags: #Laravel, #API
- https://www.muhammetsafak.com.tr/en/blog/writing-json-api-endpoints-with-laravel/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/writing-json-api-endpoints-with-laravel.md

### Fundamentals of RESTful API Design

- Practical rules for making an API predictable through the triangle of resources, HTTP methods, and status codes.
- Published: 2015-04-05
- Web Development
- Tags: #API
- https://www.muhammetsafak.com.tr/en/blog/fundamentals-of-restful-api-design/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/fundamentals-of-restful-api-design.md

### Consistent Development Environments for Everyone with Laravel Homestead

- A step-by-step walkthrough of setting up Laravel Homestead to eliminate the classic 'it works on my machine' problem across teams.
- Published: 2015-03-01
- Tools & Technologies
- Tags: #Laravel
- https://www.muhammetsafak.com.tr/en/blog/consistent-dev-environment-with-laravel-homestead/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/consistent-dev-environment-with-laravel-homestead.md

### Migrating to Laravel 5: New Directory Structure and .env

- A walkthrough of the key changes when moving from Laravel 4 to 5 — directory layout, .env configuration, and application bootstrapping.
- Published: 2015-02-01
- Framework & Library
- Tags: #Laravel
- https://www.muhammetsafak.com.tr/en/blog/migrating-to-laravel-5-directory-structure-and-env/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/migrating-to-laravel-5-directory-structure-and-env.md

### Understanding MVC for real: stop bloating your controllers

- What each layer of MVC is actually responsible for, and how to keep your controllers thin.
- Published: 2015-01-04
- Languages
- Tags: #PHP
- https://www.muhammetsafak.com.tr/en/blog/understanding-mvc-stop-bloating-your-controllers/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/understanding-mvc-stop-bloating-your-controllers.md

### Traversing Large Datasets with PHP 5.5 Generators and yield

- The language-level approach to building large loops without blowing up memory: PHP 5.5 generators and the yield keyword.
- Published: 2014-12-07
- Languages
- Tags: #PHP
- https://www.muhammetsafak.com.tr/en/blog/traversing-large-datasets-with-php-55-generators-and-yield/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/traversing-large-datasets-with-php-55-generators-and-yield.md

### Laravel Form Validation in Practice

- A repeatable pattern for safely handling user input: Laravel validation rules and error messages.
- Published: 2014-11-02
- Web Development
- Tags: #Laravel
- https://www.muhammetsafak.com.tr/en/blog/laravel-form-validation-in-practice/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/laravel-form-validation-in-practice.md

### Simplifying Database Operations with Eloquent ORM

- From writing raw SQL to model-based access: a practical look at Laravel's Eloquent ORM and how it fits into day-to-day development.
- Published: 2014-10-05
- Framework & Library
- Tags: #Laravel
- https://www.muhammetsafak.com.tr/en/blog/simplifying-database-operations-with-eloquent-orm/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/simplifying-database-operations-with-eloquent-orm.md

### Building Fast, Consistent UIs with Bootstrap 3

- How to produce decent-looking interfaces without a designer: Bootstrap 3's grid system and ready-made components.
- Published: 2014-09-07
- Interface
- Tags: #CSS, #Bootstrap
- https://www.muhammetsafak.com.tr/en/blog/building-fast-consistent-uis-with-bootstrap-3/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/building-fast-consistent-uis-with-bootstrap-3.md

### Switching to Git: Leaving FTP File Uploads Behind

- The confidence that comes with version control: how switching from FTP to Git changed my development habits, and the basics of commits and branches.
- Published: 2014-08-03
- Tools & Technologies
- Tags: #Git
- https://www.muhammetsafak.com.tr/en/blog/switching-to-git-leaving-ftp-behind/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/switching-to-git-leaving-ftp-behind.md

### Blade Template Engine: Eliminating Repetitive HTML

- The practical payoff of separating the view layer from logic: using Blade layouts, sections, and partials.
- Published: 2014-07-06
- Framework & Library
- Tags: #Laravel
- https://www.muhammetsafak.com.tr/en/blog/blade-template-engine-eliminating-repetitive-html/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/blade-template-engine-eliminating-repetitive-html.md

### Getting Started with My First Laravel 4 Project

- The structure that comes from moving beyond raw PHP to a framework: first impressions, installation, and the basics of Laravel 4.
- Published: 2014-06-01
- Framework & Library
- Tags: #PHP, #Laravel
- https://www.muhammetsafak.com.tr/en/blog/getting-started-with-my-first-laravel-4-project/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/getting-started-with-my-first-laravel-4-project.md

### Sending Data Without a Page Reload: jQuery and AJAX

- The 2014 standard for decoupling form submissions from full page loads: practical usage of jQuery's $.ajax method.
- Published: 2014-05-04
- Interface
- Tags: #JavaScript, #jQuery
- https://www.muhammetsafak.com.tr/en/blog/sending-data-without-page-reload-jquery-ajax/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/sending-data-without-page-reload-jquery-ajax.md

### Organizing Code with Namespaces in PHP

- Code organization that eliminates name collisions and fits the modern library ecosystem: PHP namespace usage and the use statement.
- Published: 2014-04-06
- Languages
- Tags: #PHP
- https://www.muhammetsafak.com.tr/en/blog/organizing-code-with-namespaces-in-php/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/organizing-code-with-namespaces-in-php.md

### PSR-4 and Autoloading: Escaping the Include Chain

- Moving away from manual class includes to standard autoloading: the difference between PSR-0 and PSR-4, and Composer integration.
- Published: 2014-03-02
- Languages
- Tags: #PHP
- https://www.muhammetsafak.com.tr/en/blog/psr-4-and-autoloading-escaping-the-include-chain/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/psr-4-and-autoloading-escaping-the-include-chain.md

### Switching to Composer: Stop Managing PHP Dependencies by Hand

- The practical side of moving from a pile of manual requires to modern dependency management: composer.json, autoloading, and installing packages.
- Published: 2014-02-02
- Tools & Technologies
- Tags: #PHP, #Composer
- https://www.muhammetsafak.com.tr/en/blog/switching-to-composer-stop-managing-php-dependencies-by-hand/
- Markdown: https://www.muhammetsafak.com.tr/en/blog/switching-to-composer-stop-managing-php-dependencies-by-hand.md
