rss2
Ahmet ALMAZ
ahmetalmaz.com · English
Full Stack Developer from Türkiye 🇹🇷
rss2 fediverse content atom
https://ahmetalmaz.com/feed.xml
- Last post
- Jun 13, 2026
- Posts in 24 h · 7 days · 30 days
- 0 · 0 · 0
- Our last check
- Answering
- Served from
- United States
- Text score at discovery
- 5,435
- Format
- rss2
- Features in the feed
- content, atom
- Community
- fediverse
Posts
What our queue read from this feed. Open one to read it here, or go to the site that published it.
- Secure SSH Access Using Cloudflare Tunnel With No Open Ports
Jun 13, 2026 · original
I set up Cloudflare Tunnel (cloudflared) , to stop worrying about open SSH ports on my server. No public IP exposed, no ports forwarded, no DDNS to maintain. Instead of opening a port and hoping for the best, I let Cloudflare handle the connection entirely. My server initiates an outbound tunnel to Cloudflare's edge, and all SSH traffic reaches it through that tunnel, not through any open port on my firewall. No port scanners can find me, no brute-force bots can knock, no DDoS can reach my actual server. Every connection is authenticated at Cloudflare's gateway before it ever touches my infrastructure. Paired with Cloudflare Zero Trust policies, this is about as close to "set it and forget it" secure remote access as I've found. Prerequisites A domain managed by Cloudflare Docker installed on your server A Cloudflare Zero Trust account 1. Create Tunnel in Cloudflare Dashboard Open Cloudf - Dotenvx WRONG_PRIVATE_KEY in GitHub Actions Fix
Feb 22, 2026 · original
I recently started using dotenvx to encrypt environment files for the repo of this site. The goal was simple: keep .env files versioned safely in Git while maintaining secure secrets management across local development and CI. On paper, it’s clean. In practice, I hit a breaking issue in my GitHub Actions workflow that cost me time and forced a full Git history rewrite. Here’s exactly what happened, what I tried, why the error didn’t make sense, and how I ultimately fixed it. If you’re seeing WRONG_PRIVATE_KEY in CI even though your key is correct, read this carefully. The Setup I had two environment files: .env.development .env.ci To follow best practices with dotenvx, I encrypted both: dotenvx encrypt -f .env.development dotenvx encrypt -f .env.ci This generated a .env.keys file containing: DOTENV_PRIVATE_KEY_DEVELOPMENT DOTENV_PRIVATE_KEY_CI Everything looked good. The encrypted .env.d - How to Protect Your WordPress Login Page
Jan 28, 2026 · original
If you run a WordPress site, your login page is under attack, whether you notice it or not. The reason is simple: WordPress uses the same login URL on every site. Bots don’t guess. They already know where to go. They hit wp-login.php and wp-admin nonstop, trying stolen credentials and common passwords until something breaks. Protecting your WordPress login page doesn’t require complex security stacks or expensive services. One small change, hiding the login URL, removes the most abused entry point entirely. That’s exactly what WPS Hide Login does. This guide explains why the WordPress login page is vulnerable , how WPS Hide Login protects it , and how to set it up correctly without locking yourself out . Why the WordPress Login Page Needs Protection The default WordPress login page is public, predictable, and identical across millions of sites. That creates a perfect attack surface: Bots - How to Style a Sitemap with Tailwind CSS
Dec 26, 2025 · original
Let’s get this out of the way first: sitemaps are for search engines, not humans . Google reads XML just fine. Bing doesn’t care about fonts. Crawlers don’t need Tailwind CSS. And yet, I still style my sitemap . This article explains how to style a sitemap with Tailwind CSS , why I bother doing it , and how I implemented it using XSL and Astro . I’ve already explored this pattern before in my article on How to Style an RSS Feed with Tailwind CSS , where I used Tailwind and XML transforms to make a machine-readable RSS feed human-friendly. Why Style a Sitemap XML File? Most developers treat /sitemap.xml as a dead file. Generate it, submit it to Google Search Console, forget it exists. That mindset misses a few realities: Humans do open sitemaps SEO audits involve sitemaps Debugging broken URLs is easier when things are readable First impressions still matter, even for technical files Lots - How to Style an RSS Feed with Tailwind CSS
Dec 22, 2025 · original
I’ve been a longtime fan of RSS , since the good old days of Google Reader, because it offers a pleasent reading expeirence across all sites. But most RSS feeds are brutal to look at if you land on them directly in a browser. Raw XML. Angle brackets everywhere. Zero context for newcomers. That changed for me the day I stumbled upon Stefan Judis’s RSS feed . Unlike the typical rss dump, Stefan’s feed was styled , clean, readable, and welcoming. Right at the top, it explained: “This is a web feed…” with a clear call to action for new users. No jargon. No confusion. Just a thoughtful, human-first experience. As someone who loves Tailwind CSS , I immediately thought: “What if I could do this, but with Tailwind?” Turns out, you absolutely can. And in this post, I’ll show you exactly how I combined XSLT + Tailwind CSS CDN to turn my own RSS feed into a branded, responsive, and educational entr - How I Built a WordPress Preview System in Astro for a Headless Blog
Dec 19, 2025 · original
After writing my article “Self-Hosting My Astro Site with Headless WordPress on Hetzner” , I ran into the next real problem every headless WordPress setup eventually hits: previews . Published posts were easy. Astro builds them, WordPress serves the content, life is good. But previews? WordPress editors expect that shiny “Preview” button to just work. In a headless WordPress + Astro setup, it absolutely does not, unless you build it yourself. So I did. This article explains why WordPress previews break in headless setups , how I wired previews into Astro , and the exact steps and files involved . This is practical, no-nonsense, production-ready stuff. Why WordPress Previews Are Hard in Astro In a traditional WordPress theme, previews are trivial. WordPress renders everything server-side, knows who you are, and shows draft content instantly. In a headless WordPress setup, none of that exi - How to Add ntfy Notifications to GitHub Actions for Build Alerts
Dec 14, 2025 · original
In a previous article , I talked about containerizing my Astro site using Docker and deploying it via GitHub Actions. While that setup automated my entire CI/CD pipeline beautifully, I quickly realized a major gap: I had no way of knowing whether my Astro build succeeded or failed unless I manually checked GitHub Actions logs . I recently explained why and how I self-host ntfy . In this post, I’ll show you how to set up real-time build notifications from GitHub Actions to your phone and desktop using ntfy. I’ll cover why I chose this method, how it integrates with GitHub Actions, and the exact steps to implement it. Why Use ntfy with GitHub Actions? Traditional CI/CD pipelines often rely on email or Slack for notifications, but those can be noisy, delayed, or require complex setup. ntfy solves this by offering: Instant push notifications to your phone (iOS/Android), desktop (via browser - How to Deploy Self Hosted Ntfy Notification Server Using Docker
Dec 10, 2025 · original
You’ve probably heard of ntfy . It’s an open-source, self-hosted push notification service that lets you send real-time messages to phones, desktops, and even scripts over simple HTTP/HTTPS requests. In this article, I’ll walk you through exactly how I set up my own self-hosted ntfy server using Docker , including why I chose it, the full Docker Compose configuration I use in production, and the step-by-step process that ensures security, reliability, and performance behind a reverse proxy. Why I Chose Self-Hosted Ntfy Over Cloud Notification Services Before jumping into the ntfy Docker setup , let me explain why I went down this path. Privacy First : Cloud services like Pushover or Telegram log your messages. With self-hosted ntfy , every notification stays on my server. Zero Cost : No subscriptions, no rate limits, just pure, unlimited push notifications. Cross-Platform : The ntfy app - Self-Hosting My Astro Site with Headless WordPress on Hetzner
Dec 2, 2025 · original
I’ve rebuilt my website so many times it’s basically a hobby at this point. The whole thing started as a simple static Astro site running on Cloudflare Workers , and at the time that felt clever enough. But static files get boring. I eventually wanted dynamic content, a real CMS, and full control over where and how everything runs. So I tore the whole thing down and rebuilt it as a Headless WordPress + Astro SSR setup. Then I put the entire system into Docker containers, automated deployments with GitHub Actions, pushed images to GHCR, and hosted the entire stack on a dedicated Hetzner server. Now it’s fast, modular, fully self-hosted, and deploys itself every time I push to main . This wasn’t just an upgrade, it was a complete evolution of the project. Why I ditched Cloudflare Workers and switched to Hetzner Cloudflare Workers are great for low-cost static sites, but they’re too limited - How to Convert Country Code to Flag Emoji in JavaScript
Jan 29, 2024 · original
I recently came across this tutorial by Paul on how to build a custom analytics tool using Astro, Vercel Edge Functions, and Neon. I was impressed by the simplicity of the tutorial and decided to give it a try. In the tutorial, Paul used the @vercel/edge npm package to build the Edge Function. It comes with an easy way to get the country flag emoji. However, I wanted to use the Cloudflare Workers to build the Edge Function and needed a way to get the country flag emoji as well. If you dig deep into Vercel's source code, you will find where the magic happens. They have a function that converts the country code to flag emoji . I did a little bit of research on how to convert country code to flag emoji in JavaScript and found this Dev.to article . In the comment section, people started to compete on who can write the shortest and fastest code to convert country code to flag emoji. I decided - Maestral Review - How to Ignore node_modules in Dropbox with Maestral
Aug 3, 2023 · original
As of June 2026, Maestral is no longer actively maintained. The current version will continue to work until certificates expire. Node.js developers often face challenges when backing up their projects to Dropbox due to the large and frequently updated node_modules folder. However, Maestral provides a seamless solution with its innovative .mignore feature without needing to change to a different cloud storage provider. Info: ICYMI, I recently wrote two articles about how to exclude node_modules from syncing during backup. The first one uses rsync and the second one uses Filen Similar to .gitignore in version control systems, Maestral's .mignore allows developers to exclude the cumbersome node_modules directory from syncing, ensuring faster backups and efficient use of Dropbox storage. In this review, we will discuss the key features of Maestral and how it can help Node.js developers manag - Filen Review - Dropbox alternative with node_modules folder exclusion
Jul 12, 2023 · original
If you're a web developer, use npm packages, and like to back up your projects to Dropbox, then I'm sure you did the following Google search at some point: How can I exclude the node_modules directory from syncing in Dropbox? I've been using a custom bash script for few years now that uses rsync to copy folders from one place to a Dropbox folder and exclude certain files, folders, and everything in a .gitignore file. This solution worked great but it meant that I had to have two copies of everything I needed to backup. Info: ICYMI, I recently wrote two articles about how to exclude node_modules from syncing during backup. The first one uses rsync and the second one uses Maestral Well, with the introduction of Filen , I don't have to worry about this anymore. Filen is a Dropbox alternative that allows you to exclude the node_modules folder from syncing and so much more. Introducing Filen: - Use rsync to Sync Node Project to Dropbox and Ignore node modules Folder
Jun 13, 2023 · original
When working on Node.js projects, it's common to have a large number of dependencies installed in the node_modules folder. This folder can be quite large and can slow down the syncing process when backing up or transferring your project to Dropbox. To overcome this issue, you can use rsync , a powerful command-line tool for synchronizing files and directories, along with a bash script that excludes the node_modules folder and also filter out anything in a .gitignore file that you specify. In this article, I'll guide you through the process of setting up and using this bash script to sync your Node.js project while ignoring the node_modules folder. Info: ICYMI, I recently wrote two articles about how to exclude node_modules from syncing during backup. The first one uses Maestral and the second one uses Filen Step 1: Create the Bash Script To get started, open your favorite text editor and - Real-time page views with Next.js, Turso and Drizzle ORM
May 23, 2023 · original
If you are looking for an easy and efficient way to add simple real-time page views to your Next.js website then you’re reading the perfect how-to article on this subject. Now, I’ll teach you how to add real-time page views to your Next.js website using Turso and Drizzle ORM. What is Turso? Introducing Turso , the SQLite edge database that will revolutionize your website. Built on the powerful libSQL framework, Turso offers a mind-blowing free-forever plan, providing a whopping 8 GB of total storage and the ability to have up to 3 databases in 3 different locations. Prepare to have your expectations shattered! What is Drizzle ORM? Drizzle ORM , a cutting-edge object-relational mapping library designed specifically for Node.js and TypeScript applications. This powerhouse brings support for multiple databases, migrations, and query building. It's like having a supercharged engine under the - Using the Trakt API with Next.js
Mar 28, 2023 · original
Trakt.tv API is a great way to integrate movie and TV show data into your website. This tutorial will show you how to use the API to display what movie or TV show you are currently watching on your Next.js website. Prerequisites Before you begin, you'll need to make sure you have a few things set up: A Next.js website A Trakt.tv account A Client ID from Trakt.tv/settings/applications To create a Trakt application and get a Client ID , follow the steps bellow: Head over to Trakt.tv and sign up for an account or sign in. Go to Trakt.tv/settings/applications and click on the New Application . Fill in the details (use http://localhost:3000 for Redirect URI ) and click on Create Application . You'll be redirected to the application page where you'll find your Client ID and Client Secret . For this tutorial, we'll be using the Client ID to make API calls to Trakt. Making API Calls to Trakt Now - Fish Shell Review
Jul 3, 2019 · original
There's no escape from the fact that I love fish. I try to have fish as much as I can. Whether at home or at a restaurant. But today, I am talking about a different kind of fishes. Fishes brew fish install that are made up of lines of code and live inside your computer instead of water. And no, I'm not talking about ASCIIQuarium . I'm talking about Fish Shell . A shell so good, Apple should've made it the default shell instead of Zsh. In this Fish Shell review, I will talk about all the features that Fish has to offer that makes it different from any other shell out there and a couple of additional Fish Shell related things. Fish Shell Review Fish is a f riendly i nteractive sh ell that comes out of the box with features that make all other shells jealous. Like autosuggestion, tab completion, syntax highlighting and much more. Basically, Fish is a set it and forget it kind of shells sinc - Host Google Analytics Locally In WordPress
Jul 30, 2018 · original
When you start paying attention to the speed of your WordPress site , one of the most important things to look after is all the external requests that your site makes to all kinds of services. A popular external request that many sites make is to Google Analytics. And when you test your site in GTmetrix or Pingdom, you will notice the following message: Leverage browser caching for the following cacheable resources: https://www.google-analytics.com/analytics.js In this tutorial, I will tell you how to host Google Analytics locally in WordPress to Leverage Browser Caching in order to increase the speed and the score of your site in GTmetrix. How To Host Google Analytics Locally In WordPress The solution is very simple and it comes in the form of a plugin. This plugin is called CAOS for Analytics and it's developed by Daan van den Bergh . Daan wrote a 5 pages article back in 2016 titled Ho - Set DNS Automatically Using OpenVPN
Jan 10, 2018 · original
The idea for this article started after hearing TWiT Security Now podcast , episode Quad Nine where Steve Gibson and Leo Laporte talk about what they described as a ‘very appealing and speedy new alternative DNS service, called Quad9 .’ I wanted my DNS on all my devices to be set automatically without me having to re-configure it every time I join a new network. As we all know, in iOS, you need to change your DNS records for each and every network. On Android, you need to change your IP settings first to static then write the IP manually. After that, you’d enter your preferred DNS for each and every network. Well, shit. This is way too much work for something that should be quite easy and simple and more importantly, automatic. As in, set it and forget it. If you use a VPN, as you should, then keep reading to learn How to Set DNS Automatically Using OpenVPN What I did was take advantage - View the Source Code of a Google Chrome Extension
Sep 5, 2017 · original
While writing my previous article about How to Create a Google Chrome Extension , I wanted to make my example easy, so people could learn from it. A Google Chrome extension that isn't complex, but it has a little bit of everything. If you've ever downloaded a .CRX file locally on your browser and then attempted to open it via a text-editor like [Atom by Github][3], you would notice that you can only see gibberish. There's a really simple way to View the Source Code of a Google Chrome Extension. After I picked the extension for my previous tutorial, I wanted to know what code was used for the audio to play. This is how the hunt began to learn how to view google chrome extension source code. It turned out to be too easy. It only takes an extension, a couple of steps and you’ll be able to View the Source Code of a Google Chrome Extension Step 1: Install and activate the Chrome extension sou - ZIGZAG a New Underline Text Decoration by the Bell Brothers
Apr 3, 2017 · original
I can't believe I found another wiggly underline decoration. This time it features a different design and a different file format, but a similar way of implementation. Let's see how the Bell Brothers achieved the wiggly underline text decoration in Jen Lu . They are calling it ZIGZAG. For those of you who don't know what I'm talking about, a few months back, I wrote an article about The Outline website and how they combine SVG and CSS to achieve a wiggly underline text decoration and recently I seen this tweet: View Tweet I was intrigued when I seen the title of the site: {{ pages[currentPage].title }} so I decided to check it out and I'm glad I did. The first thing that caught my eye was the cool clock ticking on the right upper corner, how it changes to date and temperature every time you refresh the page. And the big mouse cursor. Then, the more time I spent on the site the more I dis
Discovered by the rss-feed-index crawler, which checks each feed at most once a month.
Same record as JSON: https://api.agentalog.com/api/feeds/fd_ahmetalmaz_com_95c894bd58ca79cd. More from this site: ahmetalmaz.com in the Feeds tab.