<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title><![CDATA[Ahmed El Gabri | Software Engineer]]></title>
        <description><![CDATA[Ahmed El Gabri is a Software engineer with 15+ years of experience across Product, Platform, and Developer Experience. I focus on clarity, maintainability, and helping teams and individuals grow steadily over time.]]></description>
        <link>https://gabri.me</link>
        <generator>RSS for Node</generator>
        <lastBuildDate>Wed, 13 May 2026 13:52:35 GMT</lastBuildDate>
        <atom:link href="https://gabri.me/feed.xml" rel="self" type="application/rss+xml"/>
        <ttl>60</ttl>
        <skipHours>
            <hour>0</hour>
            <hour>1</hour>
            <hour>2</hour>
            <hour>3</hour>
            <hour>4</hour>
            <hour>5</hour>
            <hour>6</hour>
            <hour>7</hour>
            <hour>8</hour>
            <hour>9</hour>
        </skipHours>
        <item>
            <title><![CDATA[Introducing git-wt: Worktrees Simplified]]></title>
            <description><![CDATA[In my previous post, I explained why the bare repo pattern makes git worktrees actually pleasant to use. But setting it up manually requires 10+ commands. And t...]]></description>
            <link>https://gabri.me/blog/git-wt</link>
            <guid isPermaLink="false">https://gabri.me/blog/git-wt</guid>
            <dc:creator><![CDATA[Ahmed El Gabri]]></dc:creator>
            <pubDate>Wed, 04 Feb 2026 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Git Worktrees Done Right]]></title>
            <description><![CDATA[> Part 2: Introducing git-wt: Worktrees Simplified Picture this: You're knee-deep in a gnarly refactor. Tests are finally passing. You're in the zone. Then Slac...]]></description>
            <link>https://gabri.me/blog/git-worktrees-done-right</link>
            <guid isPermaLink="false">https://gabri.me/blog/git-worktrees-done-right</guid>
            <dc:creator><![CDATA[Ahmed El Gabri]]></dc:creator>
            <pubDate>Mon, 02 Feb 2026 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[RTL on the web, web related tools & maybe more...]]></title>
            <description><![CDATA[Last month @necolas tweeted a thread about localization & RTL support in web apps. It's a very nice thread, you should check it! 	 		Does your team work on a lo...]]></description>
            <link>https://gabri.me/blog/rtl-on-the-web-and-more</link>
            <guid isPermaLink="false">https://gabri.me/blog/rtl-on-the-web-and-more</guid>
            <dc:creator><![CDATA[Ahmed El Gabri]]></dc:creator>
            <pubDate>Wed, 28 Mar 2018 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Death by thousand config files]]></title>
            <description><![CDATA[Today, a couple of hours ago Prettier released version 1.6.0 with support for .prettierrc & .prettierignore files. If you follow me on Twitter you might have no...]]></description>
            <link>https://gabri.me/blog/death-by-thousand-config-files</link>
            <guid isPermaLink="false">https://gabri.me/blog/death-by-thousand-config-files</guid>
            <dc:creator><![CDATA[Ahmed El Gabri]]></dc:creator>
            <pubDate>Sun, 27 Aug 2017 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Multiple files search and replace in vim]]></title>
            <description><![CDATA[Many people assume that vim is a dumb editor after they see it for the first time and they start to ask how can I do X like my current editor is doing it. And t...]]></description>
            <link>https://gabri.me/blog/multiple-files-search-and-replace-in-vim</link>
            <guid isPermaLink="false">https://gabri.me/blog/multiple-files-search-and-replace-in-vim</guid>
            <dc:creator><![CDATA[Ahmed El Gabri]]></dc:creator>
            <pubDate>Sun, 12 Mar 2017 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Analyzing & optimizing your webpack bundle]]></title>
            <description><![CDATA[One of the problems I noticed with many developers that when they use a module bundler like Webpack, Browserify, etc… they tend to think that it will automagica...]]></description>
            <link>https://gabri.me/blog/analyzing-optimizing-your-webpack-bundle</link>
            <guid isPermaLink="false">https://gabri.me/blog/analyzing-optimizing-your-webpack-bundle</guid>
            <dc:creator><![CDATA[Ahmed El Gabri]]></dc:creator>
            <pubDate>Sun, 29 Jan 2017 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Migrating from Evernote]]></title>
            <description><![CDATA[To start, Evernote is nice app. But not for me, I always had this love/hate relationship with it and with note talking apps in general. All I want from a note t...]]></description>
            <link>https://gabri.me/blog/evernote-to-jrnl</link>
            <guid isPermaLink="false">https://gabri.me/blog/evernote-to-jrnl</guid>
            <dc:creator><![CDATA[Ahmed El Gabri]]></dc:creator>
            <pubDate>Sun, 08 Nov 2015 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[DIY Vim statusline]]></title>
            <description><![CDATA[> Update 20 Aug 2017: I'm currently using a new & better version of the > statusline code posted in this post, you can check the code here: > statusline > & > s...]]></description>
            <link>https://gabri.me/blog/diy-vim-statusline</link>
            <guid isPermaLink="false">https://gabri.me/blog/diy-vim-statusline</guid>
            <dc:creator><![CDATA[Ahmed El Gabri]]></dc:creator>
            <pubDate>Mon, 05 Oct 2015 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Making the default gulp task useful]]></title>
            <description><![CDATA[I have been using gulp for a couple of months now &#038; I like how simple it is compared to Grunt also that I'm actually writing code not configurations &#038;...]]></description>
            <link>https://gabri.me/blog/making-the-default-gulp-task-useful</link>
            <guid isPermaLink="false">https://gabri.me/blog/making-the-default-gulp-task-useful</guid>
            <dc:creator><![CDATA[Ahmed El Gabri]]></dc:creator>
            <pubDate>Sat, 26 Jul 2014 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[No more hosts file with dnsmasq]]></title>
            <description><![CDATA[In my search for the best local development setup on my Mac, I wanted to have local domains something like project.dev that can work when I'm working on a proje...]]></description>
            <link>https://gabri.me/blog/no-more-hosts-file-with-dnsmasq</link>
            <guid isPermaLink="false">https://gabri.me/blog/no-more-hosts-file-with-dnsmasq</guid>
            <dc:creator><![CDATA[Ahmed El Gabri]]></dc:creator>
            <pubDate>Fri, 27 Sep 2013 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Global scope, namespacing & CSS]]></title>
            <description><![CDATA[> Update (2022): > > I mainly use https://tailwindcss.com/ at this > point & highly recommend it. > > Update (2016): > > Currently I don't use or recommend usin...]]></description>
            <link>https://gabri.me/blog/global-scope-namespacing-css</link>
            <guid isPermaLink="false">https://gabri.me/blog/global-scope-namespacing-css</guid>
            <dc:creator><![CDATA[Ahmed El Gabri]]></dc:creator>
            <pubDate>Tue, 06 Aug 2013 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Sass mixin for auto-numbering with CSS]]></title>
            <description><![CDATA[While I was working on a project at work I needed to have " table of contents" type of numbering in an  but I wanted the numbers to be nested too like 1. , 1.1,...]]></description>
            <link>https://gabri.me/blog/sass-mixin-for-auto-numbering-with-css</link>
            <guid isPermaLink="false">https://gabri.me/blog/sass-mixin-for-auto-numbering-with-css</guid>
            <dc:creator><![CDATA[Ahmed El Gabri]]></dc:creator>
            <pubDate>Sat, 25 May 2013 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Quick tip: VirtualBox & localhost]]></title>
            <description><![CDATA[This is just a quick tip that I found & I thought it might be useful for others. How many times you are building something locally & you want to test on differe...]]></description>
            <link>https://gabri.me/blog/quick-tip-virtualbox-localhost</link>
            <guid isPermaLink="false">https://gabri.me/blog/quick-tip-virtualbox-localhost</guid>
            <dc:creator><![CDATA[Ahmed El Gabri]]></dc:creator>
            <pubDate>Fri, 19 Apr 2013 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Custom colors in your ZSH prompt]]></title>
            <description><![CDATA[I have been using ZSH as my main shell for nearly a year &amp; I really love it! Most of my days are between iterm2 &amp; Sublime Text 2. So customizing both ar...]]></description>
            <link>https://gabri.me/blog/custom-colors-in-your-zsh-prompt</link>
            <guid isPermaLink="false">https://gabri.me/blog/custom-colors-in-your-zsh-prompt</guid>
            <dc:creator><![CDATA[Ahmed El Gabri]]></dc:creator>
            <pubDate>Thu, 24 Jan 2013 00:00:00 GMT</pubDate>
        </item>
    </channel>
</rss>