<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>MazaFard</title>
    <link>http://blog.fard.pt/</link>
    <description>Recent content on MazaFard</description>
    <image>
      <title>MazaFard</title>
      <url>http://blog.fard.pt/images/papermod-cover.png</url>
      <link>http://blog.fard.pt/images/papermod-cover.png</link>
    </image>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Wed, 29 Apr 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="http://blog.fard.pt/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Uncovering a Massive GitHub Supply Chain Attack: When a Friend&#39;s Repo Bites Back</title>
      <link>http://blog.fard.pt/posts/github-supply-chain-attack/</link>
      <pubDate>Wed, 29 Apr 2026 00:00:00 +0000</pubDate>
      <guid>http://blog.fard.pt/posts/github-supply-chain-attack/</guid>
      <description>&lt;p&gt;During a routine code review of a colleague&amp;rsquo;s GitHub repository, I identified an anomalous, highly obfuscated block of code embedded within a standard Python file. The use of randomized variable names and dense encoding strongly indicated malicious intent. Upon further investigation, this isolated finding revealed a sophisticated, large-scale supply chain attack currently affecting hundreds of repositories across GitHub.&lt;/p&gt;
&lt;p&gt;This article details the discovery, the reverse-engineering process, and actionable mitigation strategies to secure your development pipelines.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Introducing Django AI Validator: When Regex Isn&#39;t Enough</title>
      <link>http://blog.fard.pt/posts/django-ai-validator/</link>
      <pubDate>Mon, 01 Dec 2025 00:00:00 +0000</pubDate>
      <guid>http://blog.fard.pt/posts/django-ai-validator/</guid>
      <description>&lt;p&gt;Regex is perfect for emails, postal codes, and other tidy little strings. It completely falls apart when the requirement sounds like, &amp;ldquo;make sure this bio feels professional&amp;rdquo; or &amp;ldquo;double-check that the listing actually describes a car.&amp;rdquo; You can throw more patterns at it, but you&amp;rsquo;re still judging syntax, not meaning.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Django AI Validator&lt;/strong&gt; is my answer for the semantic gap. It&amp;rsquo;s a fresh PyPI package that lets your Django fields tap into modern LLMs (OpenAI, Anthropic, Gemini, or even local Ollama) for on-the-fly validation and cleaning.&lt;/p&gt;</description>
    </item>
    <item>
      <title>TermForge: Modernizing My Terminal Workflow</title>
      <link>http://blog.fard.pt/posts/termforge/</link>
      <pubDate>Thu, 27 Nov 2025 00:00:00 +0000</pubDate>
      <guid>http://blog.fard.pt/posts/termforge/</guid>
      <description>&lt;p&gt;I’ve always liked the original &lt;a href=&#34;https://github.com/jazik/termenv&#34;&gt;jazik/termenv&lt;/a&gt; project—it’s a clean Ansible playbook that bootstraps a great terminal environment. But after living in it for a while, I found myself wanting tighter macOS support, automatic iTerm2 provisioning, and some Kubernetes-focused tooling. I decided to fork the project and build out those extra pieces. The result is &lt;strong&gt;TermForge&lt;/strong&gt;, my refreshed take on the “terminal in a box” idea.&lt;/p&gt;
&lt;h2 id=&#34;why-fork-instead-of-pr&#34;&gt;Why Fork Instead of PR?&lt;/h2&gt;
&lt;p&gt;Initially, I explored incremental improvements to the upstream repo. Pretty quickly the changes snowballed—new playbooks, an opt-in name change, macOS-only roles, documentation rewrites, and Kubernetes helpers that modify multiple files. Rather than disrupt the original’s scope, I forked it and leaned into a new project identity while crediting the original work.&lt;/p&gt;</description>
    </item>
    <item>
      <title>C&#43;&#43; Resource Management: The Complete Picture</title>
      <link>http://blog.fard.pt/posts/cpp-resource-management/</link>
      <pubDate>Wed, 26 Nov 2025 00:00:00 +0000</pubDate>
      <guid>http://blog.fard.pt/posts/cpp-resource-management/</guid>
      <description>&lt;p&gt;Let&amp;rsquo;s talk about keeping our C++ code clean and safe, specifically focusing on preventing those nasty memory leaks using Smart Pointers.&lt;/p&gt;
&lt;h2 id=&#34;1-the-headache-raw-pointers-and-leaks&#34;&gt;1. The Headache: Raw Pointers and Leaks&lt;/h2&gt;
&lt;p&gt;The biggest headache with raw pointers (like &lt;code&gt;int* data = new int(10);&lt;/code&gt;) is that you have to clean them up yourself (&lt;code&gt;delete data;&lt;/code&gt;). If your function bails out early because of an error, a return statement, or an exception, that &lt;code&gt;delete&lt;/code&gt; statement gets skipped.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linear Algebra: Beyond Numbers, A Language for Change</title>
      <link>http://blog.fard.pt/posts/personals/linear-algebra/</link>
      <pubDate>Mon, 24 Nov 2025 00:00:00 +0000</pubDate>
      <guid>http://blog.fard.pt/posts/personals/linear-algebra/</guid>
      <description>Exploring Linear Algebra not just as math, but as a language for change and connection in multi-dimensional space.</description>
    </item>
    <item>
      <title>Why Zero and Even Numbers Aren&#39;t Prime?</title>
      <link>http://blog.fard.pt/posts/personals/prime-numbers-logic/</link>
      <pubDate>Mon, 24 Nov 2025 00:00:00 +0000</pubDate>
      <guid>http://blog.fard.pt/posts/personals/prime-numbers-logic/</guid>
      <description>A quick chat about why zero and even numbers (except 2) don&amp;#39;t make the cut as prime numbers.</description>
    </item>
    <item>
      <title>Working with VS Code (Reluctantly!)</title>
      <link>http://blog.fard.pt/posts/personals/working-with-vscode/</link>
      <pubDate>Sat, 22 Nov 2025 00:00:00 +0000</pubDate>
      <guid>http://blog.fard.pt/posts/personals/working-with-vscode/</guid>
      <description>A bit of a rant about VS Code and a tip on separating untracked files from changes.</description>
    </item>
    <item>
      <title>Working with K8s and K9s</title>
      <link>http://blog.fard.pt/posts/personals/working-with-k8s-and-k9s/</link>
      <pubDate>Sat, 22 Nov 2025 00:00:00 +0000</pubDate>
      <guid>http://blog.fard.pt/posts/personals/working-with-k8s-and-k9s/</guid>
      <description>A quick chat about Kubernetes (K8s) and K9s, what they are, and why they&amp;#39;re awesome.</description>
    </item>
    <item>
      <title>How to Become a Hacker</title>
      <link>http://blog.fard.pt/posts/personals/how-become-a-hacker/</link>
      <pubDate>Sat, 14 Sep 2024 00:00:00 +0000</pubDate>
      <guid>http://blog.fard.pt/posts/personals/how-become-a-hacker/</guid>
      <description>A guide to becoming a hacker and understanding hacker culture.</description>
    </item>
    <item>
      <title>Entering Age 36</title>
      <link>http://blog.fard.pt/posts/personals/new-age-35/</link>
      <pubDate>Fri, 06 Sep 2024 00:00:00 +0000</pubDate>
      <guid>http://blog.fard.pt/posts/personals/new-age-35/</guid>
      <description>My experiences and feelings at age 36 after migrating and starting a company.</description>
    </item>
    <item>
      <title>Features / Mods</title>
      <link>http://blog.fard.pt/posts/papermod/papermod-features/</link>
      <pubDate>Wed, 20 Jan 2021 00:00:00 +0000</pubDate>
      <guid>http://blog.fard.pt/posts/papermod/papermod-features/</guid>
      <description>Learn About All Features in PaperMod</description>
    </item>
    <item>
      <title>Article 1 Tax Base</title>
      <link>http://blog.fard.pt/posts/laws/portugal/imposto-rendimento-singulares/artigo-1-base-do-imposto/</link>
      <pubDate>Fri, 06 Sep 2024 00:00:00 +0000</pubDate>
      <guid>http://blog.fard.pt/posts/laws/portugal/imposto-rendimento-singulares/artigo-1-base-do-imposto/</guid>
      <description>&lt;ol&gt;
&lt;li&gt;The Personal Income Tax (IRS) is levied on the annual value of income from the following categories, even if derived from illegal activities, after the corresponding deductions and allowances have been made:
&lt;ol&gt;
&lt;li&gt;Category A - Income from dependent work;&lt;/li&gt;
&lt;li&gt;Category B - Business and professional income;&lt;/li&gt;
&lt;li&gt;Category E - Income from capital;&lt;/li&gt;
&lt;li&gt;Category F - Property income;&lt;/li&gt;
&lt;li&gt;Category G - Capital gains;&lt;/li&gt;
&lt;li&gt;Category H - Pensions.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Income, whether in cash or in kind, is subject to taxation regardless of where it is earned, the currency, or the manner in which it is received.&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    <item>
      <title>Markdown Syntax Guide</title>
      <link>http://blog.fard.pt/posts/markdown-syntax/</link>
      <pubDate>Mon, 11 Mar 2019 00:00:00 +0000</pubDate>
      <guid>http://blog.fard.pt/posts/markdown-syntax/</guid>
      <description>Sample article showcasing basic Markdown syntax and formatting for HTML elements.</description>
    </item>
    <item>
      <title>Rich Content and Shortcodes</title>
      <link>http://blog.fard.pt/posts/rich-content/</link>
      <pubDate>Sun, 10 Mar 2019 00:00:00 +0000</pubDate>
      <guid>http://blog.fard.pt/posts/rich-content/</guid>
      <description>A brief description of Hugo Shortcodes</description>
    </item>
    <item>
      <title>Math Typesetting</title>
      <link>http://blog.fard.pt/posts/math-typesetting/</link>
      <pubDate>Fri, 08 Mar 2019 00:00:00 +0000</pubDate>
      <guid>http://blog.fard.pt/posts/math-typesetting/</guid>
      <description>A brief guide to setup KaTeX</description>
    </item>
    <item>
      <title>Hello, World!</title>
      <link>http://blog.fard.pt/posts/hello-world/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>http://blog.fard.pt/posts/hello-world/</guid>
      <description>&lt;h2 id=&#34;hello-world&#34;&gt;Hello World!&lt;/h2&gt;
&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut non lorem diam. Quisque vulputate nibh sodales eros pretium tincidunt. Aenean porttitor efficitur convallis. Nulla sagittis finibus convallis. Phasellus in fermentum quam, eu egestas tortor. Maecenas ac mollis leo. Integer maximus eu nisl vel sagittis.&lt;/p&gt;
&lt;p&gt;Suspendisse facilisis, mi ac scelerisque interdum, ligula ex imperdiet felis, a posuere eros justo nec sem. Nullam laoreet accumsan metus, sit amet tincidunt orci egestas nec. Pellentesque ut aliquet ante, at tristique nunc. Donec non massa nibh. Ut posuere lacus non aliquam laoreet. Fusce pharetra ligula a felis porttitor, at mollis ipsum maximus. Donec quam tortor, vehicula a magna sit amet, tincidunt dictum enim. In hac habitasse platea dictumst. Mauris sit amet ornare ligula, blandit consequat risus. Duis malesuada pellentesque lectus, non feugiat turpis eleifend a. Nullam tempus ante et diam pretium, ac faucibus ligula interdum.&lt;/p&gt;</description>
    </item>
    <item>
      <title>privacy</title>
      <link>http://blog.fard.pt/posts/ponti/privacy/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>http://blog.fard.pt/posts/ponti/privacy/</guid>
      <description>&lt;h3 id=&#34;privacy-policy-for-ponti&#34;&gt;Privacy Policy for Ponti&lt;/h3&gt;
&lt;p&gt;Effective Date: 8 October 2024&lt;/p&gt;
&lt;p&gt;1. Introduction
Ponti (&amp;ldquo;we,&amp;rdquo; &amp;ldquo;our,&amp;rdquo; or &amp;ldquo;us&amp;rdquo;) is committed to protecting your privacy. This Privacy Policy outlines how we collect, use, and safeguard your personal data when you use our app.&lt;/p&gt;
&lt;p&gt;2. Information We Collect&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Personal Data: We may collect personal information such as your name, email address, and language preferences when you sign up for our app or services.&lt;/li&gt;
&lt;li&gt;Usage Data: We automatically collect information on how you use the app, including device information, app interactions, and IP address.&lt;/li&gt;
&lt;li&gt;Children&amp;rsquo;s Privacy: Our app is not intended for children under 13, and we do not knowingly collect personal information from them. If we become aware of any such data, we will delete it immediately.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;3. How We Use Your Data&lt;/p&gt;</description>
    </item>
    <item>
      <title>Terms of Use</title>
      <link>http://blog.fard.pt/posts/ponti/terms-of-use/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>http://blog.fard.pt/posts/ponti/terms-of-use/</guid>
      <description>&lt;h1 id=&#34;terms-of-use&#34;&gt;Terms of Use&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Effective Date:&lt;/strong&gt; October 8, 2024&lt;/p&gt;
&lt;p&gt;Welcome to &lt;strong&gt;Ponti&lt;/strong&gt;! These Terms of Use (“Terms”) govern your use of our app and services. By downloading, installing, or using Ponti, you agree to these Terms, so please read them carefully.&lt;/p&gt;
&lt;h2 id=&#34;1-acceptance-of-terms&#34;&gt;1. Acceptance of Terms&lt;/h2&gt;
&lt;p&gt;By accessing or using Ponti, you agree to be bound by these Terms and our Privacy Policy. If you do not agree, please do not use our app.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
