<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Uncategorized &#8211; Xtadalafix</title>
	<atom:link href="https://xtadalafix.com/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>https://xtadalafix.com</link>
	<description>Xtadalafix</description>
	<lastBuildDate>Sat, 25 Apr 2026 21:38:38 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>How to Enable or Disable Inline AutoComplete in File Explorer, in Windows 11</title>
		<link>https://xtadalafix.com/how-to-enable-or-disable-inline-autocomplete-in-file-explorer-in-windows-11/</link>
					<comments>https://xtadalafix.com/how-to-enable-or-disable-inline-autocomplete-in-file-explorer-in-windows-11/#respond</comments>
		
		<dc:creator><![CDATA[xtadalafix]]></dc:creator>
		<pubDate>Sat, 25 Apr 2026 21:38:38 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://xtadalafix.com/how-to-enable-or-disable-inline-autocomplete-in-file-explorer-in-windows-11/</guid>

					<description><![CDATA[Key Points Turn Inline AutoComplete on or off in Windows 11 File Explorer and Run via Control Panel, or Group Policy. Inline AutoComplete autofills previously used commands and file paths to speed up navigation, but may expose Run history on shared PCs; disabling it does not clear File Explorer history. Deploy at scale using PowerShell, [&#8230;]]]></description>
										<content:encoded><![CDATA[<div>
<div class="in-context-cta">
<h2>Key Points</h2>
<ul>
<li>Turn Inline AutoComplete on or off in Windows 11 File Explorer and Run via Control Panel, or Group Policy.</li>
<li>Inline AutoComplete autofills previously used commands and file paths to speed up navigation, but may expose Run history on shared PCs; disabling it does not clear File Explorer history.</li>
<li>Deploy at scale using PowerShell, Registry scripts, or Active Directory Group Policy; settings are per-user, require Explorer restart or reboot, and may work inconsistently across some Windows 11 builds.</li>
</ul>
</div>
<p>Inline AutoComplete automatically fills (autofills) in previously used commands and paths in the Run dialog and File Explorer. This article explains how to <strong>enable or disable Inline AutoComplete</strong> on Windows 11 devices, with step-by-step instructions for using the Settings app as well as the Windows Registry and Group Policy.</p>
<h2>Why enable or disable Inline AutoComplete?</h2>
<p>Inline AutoComplete applies to the Run dialog in Windows File Explorer in older versions of Windows 11.</p>
<p>When AutoComplete is enabled, if the text you enter matches a previous command or path, Windows will suggest it to you, so that you can autofill and execute it by pressing tab or clicking on the suggestion.</p>
<p><img loading="lazy" data-opt-id="49669315" decoding="async" class="aligncenter size-full wp-image-796304" src="https://mlfk3cv5yvnx.i.optimole.com/cb:HA53.300ea/w:399/h:206/q:mauto/f:best/https://www.ninjaone.com/wp-content/uploads/2026/04/unnamed-55.png" alt="Run dialog" width="399" height="206" srcset="https://mlfk3cv5yvnx.i.optimole.com/cb:HA53.300ea/w:399/h:206/q:mauto/f:best/https://mlfk3cv5yvnx.i.optimole.com/cb:HA53.300ea/w:399/h:206/q:mauto/f:best/https://www.ninjaone.com/wp-content/uploads/2026/04/unnamed-55.png 399w, https://mlfk3cv5yvnx.i.optimole.com/cb:HA53.300ea/w:300/h:155/q:mauto/f:best/https://mlfk3cv5yvnx.i.optimole.com/cb:HA53.300ea/w:399/h:206/q:mauto/f:best/https://www.ninjaone.com/wp-content/uploads/2026/04/unnamed-55.png 300w, https://mlfk3cv5yvnx.i.optimole.com/cb:HA53.300ea/w:399/h:206/q:mauto/f:best/dpr:2/https://mlfk3cv5yvnx.i.optimole.com/cb:HA53.300ea/w:399/h:206/q:mauto/f:best/https://www.ninjaone.com/wp-content/uploads/2026/04/unnamed-55.png 2x" sizes="auto, (max-width: 399px) 100vw, 399px"/><br />AutoComplete is sometimes discouraged on shared PCs as it can reveal information about previously used commands or files that you may not want to share. Enabling it, however, is often preferable for convenience as it saves you from typing out repetitive commands and lets you access previously visited paths without having to navigate to them.</p>
<p>Note that disabling Inline AutoComplete doesn’t clear the address bar, run history, or recent files.</p>
<h2>What you need to configure Inline AutoComplete in Windows 11</h2>
<p>The Inline AutoComplete setting described in this article is disabled by default in Windows 11. Note that currently, the application of this setting is inconsistent across Windows 11 builds, and not supported in the most recent versions of the Windows File Explorer, which is configured separately.</p>
<p>Inline AutoComplete settings are applied per-user, so no administrative privileges are required unless the setting is enforced on your enterprise network or through mobile device management (MDM).</p>
<p>If you are deploying these settings using Group Policy or scripting, you’ll need administrative access.</p>
<h2>How to enable or disable Inline AutoComplete using the Windows Control Panel</h2>
<p>Inline AutoComplete is configured from the Internet Options in the legacy Control Panel:</p>
<ul>
<li>Right-click on the Start button and select <strong>Run</strong></li>
<li>In the run dialog, type <strong>control</strong> and press the <strong>Enter</strong> key to launch the legacy Windows Control Panel</li>
<li>Change the <strong>View By:</strong> option in the top-left of the Control Panel to <strong>Large icons</strong></li>
<li>Click <strong>Internet Options</strong></li>
</ul>
<ul>
<li>In the <strong>Internet Properties</strong> dialog, click the <strong>Advanced</strong> Tab</li>
<li>Scroll down to <strong>Browsing</strong></li>
<li>Check or uncheck <strong>Use inline AutoComplete</strong></li>
<li>Click <strong>OK</strong> to close the dialog and apply the change</li>
</ul>
<p><img loading="lazy" data-opt-id="155467404" data-opt-src="https://mlfk3cv5yvnx.i.optimole.com/cb:HA53.300ea/w:391/h:512/q:mauto/f:best/https://www.ninjaone.com/wp-content/uploads/2026/04/unnamed-57.png" decoding="async" class="aligncenter size-full wp-image-796322" src="data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20391%20512%22%20width%3D%22391%22%20height%3D%22512%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22391%22%20height%3D%22512%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E" alt="Use inline AutoComplete" width="391" height="512"/><img loading="lazy" data-opt-id="155467404" decoding="async" class="aligncenter size-full wp-image-796322" src="https://mlfk3cv5yvnx.i.optimole.com/cb:HA53.300ea/w:391/h:512/q:mauto/f:best/https://www.ninjaone.com/wp-content/uploads/2026/04/unnamed-57.png" alt="Use inline AutoComplete" width="391" height="512" srcset="https://mlfk3cv5yvnx.i.optimole.com/cb:HA53.300ea/w:391/h:512/q:mauto/f:best/https://mlfk3cv5yvnx.i.optimole.com/cb:HA53.300ea/w:391/h:512/q:mauto/f:best/https://www.ninjaone.com/wp-content/uploads/2026/04/unnamed-57.png 391w, https://mlfk3cv5yvnx.i.optimole.com/cb:HA53.300ea/w:229/h:300/q:mauto/f:best/https://mlfk3cv5yvnx.i.optimole.com/cb:HA53.300ea/w:391/h:512/q:mauto/f:best/https://www.ninjaone.com/wp-content/uploads/2026/04/unnamed-57.png 229w, https://mlfk3cv5yvnx.i.optimole.com/cb:HA53.300ea/w:391/h:512/q:mauto/f:best/dpr:2/https://mlfk3cv5yvnx.i.optimole.com/cb:HA53.300ea/w:391/h:512/q:mauto/f:best/https://www.ninjaone.com/wp-content/uploads/2026/04/unnamed-57.png 2x" sizes="auto, (max-width: 391px) 100vw, 391px"/></p>
<h2>How to configure Inline AutoComplete using the Windows Registry Editor</h2>
<p>You can also toggle this setting using the Windows Registry Editor:</p>
<ul>
<li>Right-click on the Start button and click <strong>Run</strong></li>
<li>Type the command <strong>regedit</strong> and click <strong>OK</strong> to launch the Registry Editor</li>
<li>Navigate to the registry key located at <strong>HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\AutoComplete</strong></li>
<li>If the <strong>Append Completion</strong> and <strong>AutoSuggest</strong> string values do not exist in this location, create each in turn by right-clicking on the <strong>AutoComplete</strong> key and then selecting <strong>New &gt; String Value</strong></li>
<li>Change the value of <strong>Append Completion</strong> and <strong>AutoSuggest</strong> by double-clicking on each</li>
<li>Set the values to <strong>yes</strong> or <strong>no</strong> to enable or disable Inline AutoComplete</li>
</ul>
<p>You will need to restart Explorer or reboot to apply the change.</p>
<h2>Automating Inline AutoComplete settings with PowerShell</h2>
<p>You can automate the deployment of these Registry settings using PowerShell:</p>
<p>To disable Inline AutoComplete:</p>
<p><strong>Set-ItemProperty -Path “HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\AutoComplete” -Name “Append Completion” -Value “no”</strong><strong><br /></strong><strong>Set-ItemProperty -Path “HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\AutoComplete” -Name “AutoSuggest” -Value “no”</strong></p>
<p>To enable Inline AutoComplete:</p>
<p><strong>Set-ItemProperty -Path “HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\AutoComplete” -Name “Append Completion” -Value “yes”</strong><strong><br /></strong><strong>Set-ItemProperty -Path “HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\AutoComplete” -Name “AutoSuggest” -Value “yes”</strong></p>
<p>Again, you’ll need to restart the Explorer.exe process or reboot your machine for the changes to take effect.</p>
<p>These settings can be deployed to multiple machines in education and enterprise environments using your remote monitoring and management (RMM) tools.</p>
<h2>Configuring Inline AutoComplete using Group Policy</h2>
<p>Local Group Policy is available on Windows 11 Pro, and Group Policy in Active Directory can be used to deploy settings to multiple machines in enterprise environments:</p>
<ul>
<li>Open the Run dialog and enter the command <strong>gpedit.msc</strong></li>
<li>Navigate to <strong>User Configuration &gt; Administrative Templates &gt; Windows Components &gt; Internet Explorer &gt; Internet Settings &gt; AutoComplete</strong></li>
<li>Double-click on the <strong>Turn on inline AutoComplete in File Explorer</strong> setting and set its value to <strong>enabled</strong> to enable Inline AutoComplete, or <strong>Disabled</strong> or <strong>Not Configured</strong> to turn it off</li>
</ul>
<p>Restart Explorer or reboot to apply the change, as with the other methods.</p>
<h2>How to clear the File Explorer AutoComplete history</h2>
<p>As turning off Inline AutoComplete doesn’t clear the File Explorer history, you’ll need to do the following:</p>
<ul>
<li>Open the File Explorer</li>
<li>Click the menu icon (<strong>…</strong>)</li>
<li>Click <strong>Options</strong></li>
<li>Open the <strong>General</strong> Tab</li>
<li>Under <strong>Privacy</strong>, click the <strong>Clear</strong> button next to <strong>Clear File Explorer History</strong></li>
<li>Optionally uncheck <strong>Show recently used files</strong>, <strong>Show frequently used folders</strong>, <strong>Show recommended section</strong>, and <strong>Show files based on your account and cloud provider activity</strong> to prevent the history from being repopulated</li>
</ul>
<h2>Apply consistent privacy settings across education and enterprise fleets with NinjaOne automation</h2>
<p>NinjaOne automates the process of configuring and enforcing privacy settings (including AutoComplete) across Windows devices, wherever they are located. NinjaOne unifies MDM and RMM with automation, endpoint security, backup, and remote access, along with a suite of additional management and support tools for IT teams and managed service providers (MSPs). This toolchain helps you ensure that every device is configured, patched, and secure, and in full compliance with privacy laws, all while meeting your users’ expectations for fast, effective tech support.</p>
</div>
<p><script id="meta-pixel" type="text/javascript" class="optanon-category-C0004"> window.addEventListener('load', () => { ! function(f, b, e, v, n, t, s) { if (f.fbq) return; n = f.fbq = function() { n.callMethod ? n.callMethod.apply(n, arguments) : n.queue.push(arguments) }; if (!f._fbq) f._fbq = n; n.push = n; n.loaded = !0; n.version = '2.0'; n.queue = []; t = b.createElement(e); t.async = !0; t.src = v; s = b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t, s) }(window, document, 'script', ' fbq('init', '148315452373934'); fbq('track', 'PageView'); var currentURL = window.location.href; if (currentURL.indexOf('thankyou') !== -1 || currentURL.indexOf('thank-you') !== -1) { fbq('track', 'Lead'); } }); </script><br />
</p>
<h2>PakarPBN</h2>
<p></p>
<p>A Private Blog Network (PBN) is a collection of websites that are controlled by a single individual or organization and used primarily to build backlinks to a “money site” in order to influence its ranking in search engines such as Google. The core idea behind a PBN is based on the importance of backlinks in Google’s ranking algorithm. Since Google views backlinks as signals of authority and trust, some website owners attempt to artificially create these signals through a controlled network of sites.</p>
<p>In a typical PBN setup, the owner acquires expired or aged domains that already have existing authority, backlinks, and history. These domains are rebuilt with new content and hosted separately, often using different IP addresses, hosting providers, themes, and ownership details to make them appear unrelated. Within the content published on these sites, links are strategically placed that point to the main website the owner wants to rank higher. By doing this, the owner attempts to pass link equity (also known as “link juice”) from the PBN sites to the target website.</p>
<p>The purpose of a PBN is to give the impression that the target website is naturally earning links from multiple independent sources. If done effectively, this can temporarily improve keyword rankings, increase organic visibility, and drive more traffic from search results.</p>
<p><a href="https://pakarpbn.com">Jasa Backlink</a><br />
<br /><a href="https://drivenime.com">Download Anime Batch</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://xtadalafix.com/how-to-enable-or-disable-inline-autocomplete-in-file-explorer-in-windows-11/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>SemVer vs. CalVer: Choosing the Best Versioning Strategy for Your Project</title>
		<link>https://xtadalafix.com/semver-vs-calver-choosing-the-best-versioning-strategy-for-your-project/</link>
					<comments>https://xtadalafix.com/semver-vs-calver-choosing-the-best-versioning-strategy-for-your-project/#respond</comments>
		
		<dc:creator><![CDATA[xtadalafix]]></dc:creator>
		<pubDate>Thu, 23 Apr 2026 21:28:40 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://xtadalafix.com/semver-vs-calver-choosing-the-best-versioning-strategy-for-your-project/</guid>

					<description><![CDATA[Understanding Software Versioning: SemVer vs. CalVer When managing software projects, choosing the right versioning strategy is critical to maintain stability, communicate changes effectively, and align with the needs of developers and users. Two of the most widely used versioning schemes are Semantic Versioning (SemVer) and Calendar Versioning (CalVer). Understanding the differences between these two can help software teams [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" src="https://sensiolabs.com/f/249a62aece3d6261/1600x900-semantic-vs-calendar-versioning.jpeg" /></p>
<div id="content" data-sticky-nav-target="content">
<h2 id="Understanding-Software-Versioning-SemVer-vs-CalVer">Understanding Software Versioning: SemVer vs. CalVer</h2>
<p>When managing software projects, choosing the right versioning strategy is critical to maintain stability, communicate changes effectively, and align with the needs of developers and users. Two of the most widely used versioning schemes are <strong>Semantic Versioning (SemVer)</strong> and <strong>Calendar Versioning (CalVer)</strong>. Understanding the differences between these two can help software teams implement best practices and improve long-term maintainability.</p>
<p>This article explores the differences between <strong>SemVer and CalVer</strong>, when to use each, and why combining them strategically can benefit your <strong>Symfony applications</strong>, <strong>PHP libraries</strong>, and <strong>enterprise software</strong>.</p>
<h2 id="What-is-Semantic-Versioning-SemVer"><strong>What is Semantic Versioning (SemVer)?</strong></h2>
<p><strong>Semantic Versioning (SemVer)</strong> follows a structured versioning format: <strong>MAJOR.MINOR.PATCH</strong> (e.g., <code class="code">1.4.2</code>). The core principles of SemVer are:</p>
<ul>
<li>
<p><strong>MAJOR</strong> version increases when incompatible API changes are introduced.</p>
</li>
<li>
<p><strong>MINOR</strong> version increases when functionality is added in a backward-compatible manner.</p>
</li>
<li>
<p><strong>PATCH</strong> version increases when bug fixes are made.</p>
</li>
</ul>
<h3><strong>Why is SemVer Important for Libraries and APIs?</strong></h3>
<p>SemVer provides clear guidelines for managing breaking changes, ensuring that users of a library or package understand the impact of updates. It’s widely used for open-source libraries, frameworks, and APIs because:</p>
<ul>
<li>
<p>Developers can trust that a <strong>minor</strong> or <strong>patch</strong> update will not break their implementation.</p>
</li>
<li>
<p>It encourages stable public APIs by enforcing rules for version increments.</p>
</li>
<li>
<p>Dependency management tools (like Composer, NPM, or pip) can safely resolve updates without unexpected issues.</p>
</li>
</ul>
<h3><strong>Best Use Cases for SemVer</strong></h3>
<ul>
<li>
<p><strong>PHP packages &amp; bundles</strong> (e.g., Symfony Components)</p>
</li>
<li>
<p><strong>APIs and SDKs</strong> that require strict backward compatibility</p>
</li>
<li>
<p><strong>Open-source libraries</strong> where structured versioning prevents breaking changes</p>
</li>
<li>
<p><strong>Frameworks</strong> that other applications depend on</p>
</li>
</ul>
<p>For <strong>PHP and Symfony development</strong>, following <strong>SemVer ensures API stability</strong>, making it easier for teams to upgrade dependencies without fear of breaking their projects.</p>
<h2 id="What-is-Calendar-Versioning-CalVer"><strong>What is Calendar Versioning (CalVer)?</strong></h2>
<p><strong>Calendar Versioning (CalVer)</strong> ties version numbers to dates rather than API changes. A common format is <strong>YYYY.MM.PATCH</strong> (e.g., <code class="code">2024.1.0</code>), where:</p>
<ul>
<li>
<p><strong>YYYY</strong> represents the year of release.</p>
</li>
<li>
<p><strong>MM</strong> represents the month (or <code class="code">X</code> for major releases).</p>
</li>
<li>
<p><strong>PATCH</strong> (optional) is an incremental number for patches within a release cycle.</p>
</li>
</ul>
<h3><strong>Possible CalVer Formats and Their Usefulness</strong></h3>
<p>CalVer offers flexibility in structuring version numbers, with several possible outcomes:</p>
<ul>
<li>
<p><strong>YYYY</strong> – Full year (e.g., <code class="code">2006</code>, <code class="code">2016</code>, <code class="code">2106</code>)</p>
</li>
<li>
<p><strong>YY</strong> – Short year (e.g., <code class="code">6</code>, <code class="code">16</code>, <code class="code">106</code>)</p>
</li>
<li>
<p><strong>0Y</strong> – Zero-padded short year (e.g., <code class="code">06</code>, <code class="code">16</code>, <code class="code">106</code>)</p>
</li>
<li>
<p><strong>MM</strong> – Short month (e.g., <code class="code">1</code>, <code class="code">2</code>, <code class="code">11</code>, <code class="code">12</code>)</p>
</li>
<li>
<p><strong>0M</strong> – Zero-padded month (e.g., <code class="code">01</code>, <code class="code">02</code>, <code class="code">11</code>, <code class="code">12</code>)</p>
</li>
<li>
<p><strong>WW</strong> – Short week since start of the year (e.g., <code class="code">1</code>, <code class="code">2</code>, <code class="code">33</code>, <code class="code">52</code>)</p>
</li>
<li>
<p><strong>0W</strong> – Zero-padded week (e.g., <code class="code">01</code>, <code class="code">02</code>, <code class="code">33</code>, <code class="code">52</code>)</p>
</li>
<li>
<p><strong>DD</strong> – Short day of the month (e.g., <code class="code">1</code>, <code class="code">2</code>, <code class="code">30</code>, <code class="code">31</code>)</p>
</li>
<li>
<p><strong>0D</strong> – Zero-padded day (e.g., <code class="code">01</code>, <code class="code">02</code>, <code class="code">30</code>, <code class="code">31</code>)</p>
</li>
</ul>
<h3><strong>Why is CalVer Beneficial for Applications?</strong></h3>
<p>CalVer aligns versioning with release cycles rather than API stability. This is useful for:</p>
<ul>
<li>
<p><strong>Enterprise software</strong> with predictable release cadences.</p>
</li>
<li>
<p><strong>SaaS platforms</strong> that evolve continuously.</p>
</li>
<li>
<p><strong>Internal business applications</strong> that prioritize iteration over API compatibility.</p>
</li>
<li>
<p><strong>Operating systems</strong> (e.g., Ubuntu <code class="code">24.04</code> means April 2024).</p>
</li>
</ul>
<h3><strong>Best Use Cases for CalVer</strong></h3>
<ul>
<li>
<p><strong>Web applications and platforms</strong> (e.g., Symfony-based web applications)</p>
</li>
<li>
<p><strong>Business software</strong> where frequent updates are expected</p>
</li>
<li>
<p><strong>Infrastructure tools</strong> (e.g., Kubernetes, Docker, Terraform)</p>
</li>
<li>
<p><strong>OS distributions</strong> (e.g., Ubuntu, macOS, Windows)</p>
</li>
</ul>
<p>CalVer makes it easy to track when a version was released, helping teams plan and manage upgrades efficiently.</p>
<h2 id="Why-Use-SemVer-for-Libraries-and-CalVer-for-Projects"><strong>Why Use SemVer for Libraries and CalVer for Projects?</strong></h2>
<p>While both strategies have their place, mixing them strategically can enhance software maintainability and improve SEO for software development best practices.</p>
<h3>&#x2705; <strong>Use SemVer for Libraries, Bundles, and Packages</strong></h3>
<ul>
<li>
<p>Guarantees <strong>backward compatibility</strong> and allows developers to manage dependencies effectively.</p>
</li>
<li>
<p>Ensures that package managers can safely resolve updates.</p>
</li>
<li>
<p>Provides a <strong>structured approach</strong> to handling API changes.</p>
</li>
</ul>
<h3>&#x2705; <strong>Use CalVer for Projects and Applications</strong></h3>
<ul>
<li>
<p>Aligns with <strong>release schedules</strong> instead of API stability.</p>
</li>
<li>
<p>Makes it clear when a version was released, aiding in <strong>long-term support (LTS) tracking</strong>.</p>
</li>
<li>
<p>Helps teams plan <strong>upgrade strategies</strong> based on time rather than API changes.</p>
</li>
</ul>
<h3><strong>Example in a Symfony-based Environment</strong></h3>
<p>Imagine you are developing a <strong>Symfony-based platform</strong> with various custom bundles:</p>
<p>This setup ensures that <strong>external dependencies follow stable versioning rules</strong>, while your <strong>application’s versioning aligns with business release cycles</strong>.</p>
<h2 id="SEO-Optimization-How-Versioning-Impacts-Software-Development-Trends"><strong>SEO Optimization: How Versioning Impacts Software Development Trends</strong></h2>
<p>For those looking to optimize software management, using the right <strong>versioning strategy</strong> can improve workflow efficiency and long-term maintainability. Search queries related to <strong>&#8220;SemVer vs CalVer&#8221;</strong>, <strong>&#8220;best versioning strategy for PHP&#8221;</strong>, and <strong>&#8220;how to version Symfony applications&#8221;</strong> often trend among developers.</p>
<p>By structuring your software releases effectively, you ensure your team benefits from:</p>
<h2 id="Conclusion-Which-Versioning-Strategy-Should-You-Choose"><strong>Conclusion: Which Versioning Strategy Should You Choose?</strong></h2>
<p>Choosing the right versioning strategy can make a significant difference in how software is maintained and updated. <strong>SemVer is the gold standard for libraries and packages</strong>, ensuring compatibility and stability for dependent projects. <strong>CalVer is the better choice for applications and internal software</strong>, making releases predictable and easier to manage.</p>
<p>By strategically using <strong>SemVer for reusable components</strong> and <strong>CalVer for evolving applications</strong>, you can balance stability with agility, providing a better experience for both developers and users.</p>
</p></div>
<p></p>
<h2>PakarPBN</h2>
<p></p>
<p>A Private Blog Network (PBN) is a collection of websites that are controlled by a single individual or organization and used primarily to build backlinks to a “money site” in order to influence its ranking in search engines such as Google. The core idea behind a PBN is based on the importance of backlinks in Google’s ranking algorithm. Since Google views backlinks as signals of authority and trust, some website owners attempt to artificially create these signals through a controlled network of sites.</p>
<p>In a typical PBN setup, the owner acquires expired or aged domains that already have existing authority, backlinks, and history. These domains are rebuilt with new content and hosted separately, often using different IP addresses, hosting providers, themes, and ownership details to make them appear unrelated. Within the content published on these sites, links are strategically placed that point to the main website the owner wants to rank higher. By doing this, the owner attempts to pass link equity (also known as “link juice”) from the PBN sites to the target website.</p>
<p>The purpose of a PBN is to give the impression that the target website is naturally earning links from multiple independent sources. If done effectively, this can temporarily improve keyword rankings, increase organic visibility, and drive more traffic from search results.</p>
<p><a href="https://pakarpbn.com">Jasa Backlink</a><br />
<br /><a href="https://drivenime.com">Download Anime Batch</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://xtadalafix.com/semver-vs-calver-choosing-the-best-versioning-strategy-for-your-project/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>The Week in Charts (4/17/26)</title>
		<link>https://xtadalafix.com/the-week-in-charts-4-17-26/</link>
					<comments>https://xtadalafix.com/the-week-in-charts-4-17-26/#respond</comments>
		
		<dc:creator><![CDATA[xtadalafix]]></dc:creator>
		<pubDate>Tue, 21 Apr 2026 21:26:23 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://xtadalafix.com/the-week-in-charts-4-17-26/</guid>

					<description><![CDATA[View the video of this post here. This week’s post is sponsored by YCharts. As tax season wraps up, many advisors shift from filing conversations to decision-making: what to do with cash, how to adjust portfolios, and how to communicate next steps clearly. The challenge isn’t the analysis, it’s turning it into something clients can actually [&#8230;]]]></description>
										<content:encoded><![CDATA[<div>
<p>View the <strong>video of this post here</strong>.</p>
<p><iframe loading="lazy" title="The Greatest Trick the Fed Ever Pulled | The Week in Charts (4/12/26) | Charlie Bilello" width="640" height="360" src="https://www.youtube.com/embed/1Q3qPEr_2a4?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<p>This week’s post is sponsored by <strong>YCharts.</strong></p>
<p>As tax season wraps up, many advisors shift from filing conversations to decision-making: what to do with cash, how to adjust portfolios, and how to communicate next steps clearly.</p>
<p>The challenge isn’t the analysis, it’s turning it into something clients can actually understand.</p>
<p><strong>YCharts makes that part simple.</strong></p>
<p>You can take a portfolio, analyze performance and allocations, and quickly turn it into a clean chart or proposal you can use in a client conversation right away.</p>
<p><strong>Learn more and get 20% off your initial YCharts Professional subscription</strong> (new customers only).</p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<p><strong>The most important charts and themes in markets and investing</strong>…</p>
<p><strong>1)</strong> <strong>Stairs Down, Elevator Up</strong></p>
<p>The old saying in markets “stairs up, elevator down” has been flipped on its head this year.</p>
<p>It took the S&amp;P 500 over two months from its peak in January to fall 10% and less than three weeks to surge back to new all-time highs with a vertical rally of 13%.</p>
<figure class="wp-block-image size-full"></figure>
<p>Today the index crossed above 7,100 for the first time.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="619" height="650" src="https://bilello.blog/wp-content/uploads/2026/04/SP-milestones-4-17-26.png" alt="" class="wp-image-16387" srcset="https://bilello.blog/wp-content/uploads/2026/04/SP-milestones-4-17-26.png 619w, https://bilello.blog/wp-content/uploads/2026/04/SP-milestones-4-17-26-286x300.png 286w" sizes="auto, (max-width: 619px) 100vw, 619px"/></figure>
<p>What’s driving the market higher?</p>
<p>The expectation from investors that the war in Iran has effectively ended and that traffic in the Straight of Hormuz will soon return to normal.</p>
<p>The Energy sector gains and Consumer Discretionary sector losses since the start of the war have been completely erased with investors betting that the price of Oil and Gasoline will soon go back to where they were before the war began.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="840" height="579" src="https://bilello.blog/wp-content/uploads/2026/04/xly-xle-4-17-26.png" alt="" class="wp-image-16388" srcset="https://bilello.blog/wp-content/uploads/2026/04/xly-xle-4-17-26.png 840w, https://bilello.blog/wp-content/uploads/2026/04/xly-xle-4-17-26-300x207.png 300w, https://bilello.blog/wp-content/uploads/2026/04/xly-xle-4-17-26-768x529.png 768w" sizes="auto, (max-width: 840px) 100vw, 840px"/></figure>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="840" height="580" src="https://bilello.blog/wp-content/uploads/2026/04/crude-oil-gasoline-4-17-26.png" alt="" class="wp-image-16389" srcset="https://bilello.blog/wp-content/uploads/2026/04/crude-oil-gasoline-4-17-26.png 840w, https://bilello.blog/wp-content/uploads/2026/04/crude-oil-gasoline-4-17-26-300x207.png 300w, https://bilello.blog/wp-content/uploads/2026/04/crude-oil-gasoline-4-17-26-768x530.png 768w" sizes="auto, (max-width: 840px) 100vw, 840px"/></figure>
<p><strong>2) The Greatest Trick the Fed Ever Pulled</strong></p>
<p>Overall US CPI moved up to 3.3% in March, its highest level since April 2024.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="839" height="588" src="https://bilello.blog/wp-content/uploads/2026/04/cpi-inflation-rate-4-10-26.png" alt="" class="wp-image-16382" srcset="https://bilello.blog/wp-content/uploads/2026/04/cpi-inflation-rate-4-10-26.png 839w, https://bilello.blog/wp-content/uploads/2026/04/cpi-inflation-rate-4-10-26-300x210.png 300w, https://bilello.blog/wp-content/uploads/2026/04/cpi-inflation-rate-4-10-26-768x538.png 768w" sizes="auto, (max-width: 839px) 100vw, 839px"/></figure>
<p>This was the 61st consecutive month that US CPI was above the Fed’s 2% target.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="925" height="536" src="https://bilello.blog/wp-content/uploads/2026/04/cpi-monthly-updated-march-2026.png" alt="" class="wp-image-16377" srcset="https://bilello.blog/wp-content/uploads/2026/04/cpi-monthly-updated-march-2026.png 925w, https://bilello.blog/wp-content/uploads/2026/04/cpi-monthly-updated-march-2026-300x174.png 300w, https://bilello.blog/wp-content/uploads/2026/04/cpi-monthly-updated-march-2026-768x445.png 768w" sizes="auto, (max-width: 925px) 100vw, 925px"/></figure>
<p>The greatest trick the Fed ever pulled was convincing the world 4% inflation didn’t exist.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="758" height="444" src="https://bilello.blog/wp-content/uploads/2026/04/us-cpi-vs.-trend-4-10-26.png" alt="" class="wp-image-16379" srcset="https://bilello.blog/wp-content/uploads/2026/04/us-cpi-vs.-trend-4-10-26.png 758w, https://bilello.blog/wp-content/uploads/2026/04/us-cpi-vs.-trend-4-10-26-300x176.png 300w" sizes="auto, (max-width: 758px) 100vw, 758px"/></figure>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="551" src="https://bilello.blog/wp-content/uploads/2026/04/mallouk-473-price-increases-last-5-years-1024x551.png" alt="" class="wp-image-16398" srcset="https://bilello.blog/wp-content/uploads/2026/04/mallouk-473-price-increases-last-5-years-1024x551.png 1024w, https://bilello.blog/wp-content/uploads/2026/04/mallouk-473-price-increases-last-5-years-300x161.png 300w, https://bilello.blog/wp-content/uploads/2026/04/mallouk-473-price-increases-last-5-years-768x413.png 768w, https://bilello.blog/wp-content/uploads/2026/04/mallouk-473-price-increases-last-5-years.png 1036w" sizes="auto, (max-width: 1024px) 100vw, 1024px"/></figure>
<p><strong>3)</strong> <strong>Consumers Really Hate Inflation</strong></p>
<p>The US consumer sentiment index from the University of Michigan goes back to 1952. Incredibly, it has never been lower than it is today. This is a period that includes the stagflationary 1970s recession, the Global Financial Crisis and the covid downturn.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="838" height="569" src="https://bilello.blog/wp-content/uploads/2026/04/umich-consumer-sentiment-4-10-26.png" alt="" class="wp-image-16381" srcset="https://bilello.blog/wp-content/uploads/2026/04/umich-consumer-sentiment-4-10-26.png 838w, https://bilello.blog/wp-content/uploads/2026/04/umich-consumer-sentiment-4-10-26-300x204.png 300w, https://bilello.blog/wp-content/uploads/2026/04/umich-consumer-sentiment-4-10-26-768x521.png 768w" sizes="auto, (max-width: 838px) 100vw, 838px"/></figure>
<p>What are consumers so gloomy?</p>
<p>Substantial increases in their concerns over high prices. This much is clear: consumers really, really hate inflation. But the question, of course, is do they hate it enough to reduce their discretionary spending? That remains to be seen.</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="632" src="https://bilello.blog/wp-content/uploads/2026/04/image-6-1024x632.png" alt="" class="wp-image-16390" srcset="https://bilello.blog/wp-content/uploads/2026/04/image-6-1024x632.png 1024w, https://bilello.blog/wp-content/uploads/2026/04/image-6-300x185.png 300w, https://bilello.blog/wp-content/uploads/2026/04/image-6-768x474.png 768w, https://bilello.blog/wp-content/uploads/2026/04/image-6-1536x948.png 1536w, https://bilello.blog/wp-content/uploads/2026/04/image-6-2048x1264.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px"/></figure>
<p><strong>4) Booming Big Banks</strong> <strong>Kick Off Earnings Season</strong></p>
<p>The 6 biggest US banks posted a record $45 billion in trading revenue during Q1, up 17% YoY.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="729" height="597" src="https://bilello.blog/wp-content/uploads/2026/04/image-7.png" alt="" class="wp-image-16391" srcset="https://bilello.blog/wp-content/uploads/2026/04/image-7.png 729w, https://bilello.blog/wp-content/uploads/2026/04/image-7-300x246.png 300w" sizes="auto, (max-width: 729px) 100vw, 729px"/></figure>
<p>All 6 posted earnings beats with strong net income growth over the past year:</p>
<ul class="wp-block-list">
<li>Citigroup: +42% increase in net income to $5.8 billion.</li>
<li>Morgan Stanley: +29% increase in net income to $5.6 billion.</li>
<li>Goldman Sachs: +19% increase in net income to $5.6 billion.</li>
<li>Bank of America: +17% increase in net income to $8.6 billion.</li>
<li>JPMorgan Chase: +13% increase in net income to $16.5 billion.</li>
<li>Wells Fargo: +7% increase in net income to $5.3 billion.</li>
</ul>
<p>Overall S&amp;P 500 earnings are expected to hit another record high in Q1, rising 14% YoY.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="729" height="417" src="https://bilello.blog/wp-content/uploads/2026/04/SP-operating-eps-ttm-4-17-26.png" alt="" class="wp-image-16392" srcset="https://bilello.blog/wp-content/uploads/2026/04/SP-operating-eps-ttm-4-17-26.png 729w, https://bilello.blog/wp-content/uploads/2026/04/SP-operating-eps-ttm-4-17-26-300x172.png 300w" sizes="auto, (max-width: 729px) 100vw, 729px"/></figure>
<p><strong>5) A Few Interesting Stats..</strong></p>
<p>a) Since 1949, the S&amp;P 500 has returned +38% on average in the year after bear market lows. And that’s exactly what it gained in the past year after the tariff bear market of 2025. (video discussion)</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="863" height="579" src="https://bilello.blog/wp-content/uploads/2026/04/mallouk-475-returns-from-bear-market-lows-updated-april-2026.png" alt="" class="wp-image-16378" srcset="https://bilello.blog/wp-content/uploads/2026/04/mallouk-475-returns-from-bear-market-lows-updated-april-2026.png 863w, https://bilello.blog/wp-content/uploads/2026/04/mallouk-475-returns-from-bear-market-lows-updated-april-2026-300x201.png 300w, https://bilello.blog/wp-content/uploads/2026/04/mallouk-475-returns-from-bear-market-lows-updated-april-2026-768x515.png 768w" sizes="auto, (max-width: 863px) 100vw, 863px"/></figure>
<p>b) The total Fertility Rate in the US has moved down to 1.57 births per woman, an all-time low.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="789" height="632" src="https://bilello.blog/wp-content/uploads/2026/04/us-fertility-rate-4-9-26.png" alt="" class="wp-image-16383" srcset="https://bilello.blog/wp-content/uploads/2026/04/us-fertility-rate-4-9-26.png 789w, https://bilello.blog/wp-content/uploads/2026/04/us-fertility-rate-4-9-26-300x240.png 300w, https://bilello.blog/wp-content/uploads/2026/04/us-fertility-rate-4-9-26-768x615.png 768w" sizes="auto, (max-width: 789px) 100vw, 789px"/></figure>
<p>c) The majority of US stocks (59%) underperformed Treasury bills over their lifetime and 45% ended with a negative cumulative return. (video discussion)</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="739" height="397" src="https://bilello.blog/wp-content/uploads/2026/04/do-stocks-outperform-treasury-bills-updated-2025.png" alt="" class="wp-image-16393" srcset="https://bilello.blog/wp-content/uploads/2026/04/do-stocks-outperform-treasury-bills-updated-2025.png 739w, https://bilello.blog/wp-content/uploads/2026/04/do-stocks-outperform-treasury-bills-updated-2025-300x161.png 300w" sizes="auto, (max-width: 739px) 100vw, 739px"/></figure>
<p>d) 29% of the wealth creation from US stocks in the past one hundred years came from just 10 stocks. (video discussion)</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="832" height="570" src="https://bilello.blog/wp-content/uploads/2026/04/top-10-stocks-lifetime-wealth-creation.png" alt="" class="wp-image-16394" srcset="https://bilello.blog/wp-content/uploads/2026/04/top-10-stocks-lifetime-wealth-creation.png 832w, https://bilello.blog/wp-content/uploads/2026/04/top-10-stocks-lifetime-wealth-creation-300x206.png 300w, https://bilello.blog/wp-content/uploads/2026/04/top-10-stocks-lifetime-wealth-creation-768x526.png 768w" sizes="auto, (max-width: 832px) 100vw, 832px"/></figure>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<p>And that’s it for this week. Thanks for reading and have a great weekend!</p>
<p>Every week I do a video breaking down the most important charts and themes in markets and investing. <strong>Subscribe to our YouTube channel HERE</strong> for the latest content.</p>
<p>Disclaimer: All information provided is for educational purposes only and does not constitute investment, legal or tax advice, or an offer to buy or sell any security. Read our full disclosures here.</p>
</div>
<p></p>
<h2>PakarPBN</h2>
<p></p>
<p>A Private Blog Network (PBN) is a collection of websites that are controlled by a single individual or organization and used primarily to build backlinks to a “money site” in order to influence its ranking in search engines such as Google. The core idea behind a PBN is based on the importance of backlinks in Google’s ranking algorithm. Since Google views backlinks as signals of authority and trust, some website owners attempt to artificially create these signals through a controlled network of sites.</p>
<p>In a typical PBN setup, the owner acquires expired or aged domains that already have existing authority, backlinks, and history. These domains are rebuilt with new content and hosted separately, often using different IP addresses, hosting providers, themes, and ownership details to make them appear unrelated. Within the content published on these sites, links are strategically placed that point to the main website the owner wants to rank higher. By doing this, the owner attempts to pass link equity (also known as “link juice”) from the PBN sites to the target website.</p>
<p>The purpose of a PBN is to give the impression that the target website is naturally earning links from multiple independent sources. If done effectively, this can temporarily improve keyword rankings, increase organic visibility, and drive more traffic from search results.</p>
<p><a href="https://pakarpbn.com">Jasa Backlink</a><br />
<br /><a href="https://drivenime.com">Download Anime Batch</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://xtadalafix.com/the-week-in-charts-4-17-26/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Audit Readiness Checklist: Ensure Clients Are Prepared</title>
		<link>https://xtadalafix.com/audit-readiness-checklist-ensure-clients-are-prepared/</link>
					<comments>https://xtadalafix.com/audit-readiness-checklist-ensure-clients-are-prepared/#respond</comments>
		
		<dc:creator><![CDATA[xtadalafix]]></dc:creator>
		<pubDate>Sun, 19 Apr 2026 20:43:27 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://xtadalafix.com/audit-readiness-checklist-ensure-clients-are-prepared/</guid>

					<description><![CDATA[Key Points Audit readiness is an ongoing process requiring continuous monitoring and documentation for frameworks like HIPAA, SOC 2, and CMMC. Establish strong security baselines with RBAC, MFA, patching, antivirus, and encryption. Use a structured checklist to verify patching, backups, access controls, and logging. Automate evidence collection and reporting with NinjaOne RMM for faster compliance. [&#8230;]]]></description>
										<content:encoded><![CDATA[<div>
<div class="in-context-cta">
<h2>Key Points</h2>
<ul>
<li>Audit readiness is an ongoing process requiring continuous monitoring and documentation for frameworks like HIPAA, SOC 2, and CMMC.</li>
<li>Establish strong security baselines with RBAC, MFA, patching, antivirus, and encryption.</li>
<li>Use a structured checklist to verify patching, backups, access controls, and logging.</li>
<li>Automate evidence collection and reporting with NinjaOne RMM for faster compliance.</li>
</ul>
</div>
<p>In highly regulated sectors, surprise audits are a common practice to help prevent compliance gaps that can arise from passive approaches to regulatory adherence. Surprise audits can reveal documentation concerns, inconsistent policies, and security weaknesses. That’s why managed service providers (MSPs) must enforce audit readiness in their routine operations and treat it more than an annual checklist.</p>
<p>Through a proactive compliance operations plan, MSPs ensure data, access, and reporting controls are always in place and verifiable. This reduces panic-driven remediation, avoids audit penalties, enhances client trust, and elevates operational maturity. Compliance can be transformed into a proactive service pillar and a strong narrative in quarterly business reviews (QBRs) when robust audit readiness is in place.</p>
<p>In this article, we will walk you through the tasks of preparing clients for a surprise compliance audit to ensure readiness for HIPAA, CMMC, and SOC 2 regulations.</p>
<h2>At a glance</h2>
<table>
<tbody>
<tr>
<td style="text-align:center;vertical-align:middle"><strong>Click a Task to Skip Ahead</strong></td>
<td style="text-align:center"><strong>Purpose</strong></td>
</tr>
<tr>
<td><strong>Task 1: Inventory devices by compliance scope</strong></td>
<td>To classify endpoints by HIPAA, CMMC, or SOC 2 for targeted checks</td>
</tr>
<tr>
<td><strong>Task 2: Validate patch, AV, and encryption status</strong></td>
<td>To confirm systems are patched, protected, and encrypted</td>
</tr>
<tr>
<td><strong>Task 3: Enforce policy baselines</strong></td>
<td>To apply consistent security policies across all devices</td>
</tr>
<tr>
<td><strong>Task 4: Validate logs, retention, and monitoring policies</strong></td>
<td>To ensure the generation, retention, and audit of logs</td>
</tr>
<tr>
<td><strong>Task 5: Verify access control and user tracking</strong></td>
<td>To track accounts, privileges, and remote access</td>
</tr>
<tr>
<td><strong>Task 6: Document backup and recovery proof</strong></td>
<td>To show evidence of successful backups for audit</td>
</tr>
</tbody>
</table>
<h2>Prerequisites for surprise compliance audit readiness</h2>
<p>Before proceeding with preparing clients for a surprise compliance audit, MSPs should ensure the following:</p>
<ul>
<li>Implementation of role-based access control based on least privilege, including enforced MFA.</li>
<li>Standardized patch management, antivirus/EDR, and backup solutions.</li>
<li>Proper configuration of Microsoft 365 or hybrid Active Directory environments.</li>
<li>Maintained scripting capabilities (registry, CMD, and PowerShell).</li>
<li>Deployment of a reliable RMM tool (such as NinjaOne) that is capable of pushing scripts, enforcing policies, and gathering compliance artifacts.</li>
</ul>
<h2 id="task-1">Task 1: Inventory devices by compliance scope</h2>
<p><strong>&#x1f4cc; Use Case:</strong></p>
<p>Tagging devices allows MSPs to filter components in RMM tools (like NinjaOne) to quickly identify which systems fall under the HIPAA, CMMC, or SOC 2 scope. It can also target compliance checks, run specific scripts, and generate audit-specific reports.</p>
<h3>To create compliance tags in the registry:</h3>
<ol>
<li>Open PowerShell as an administrator. Press the<strong> Windows key</strong>, type <strong>PowerShell</strong>, then right-click <strong>Windows PowerShell</strong> and select <strong>Run as administrator</strong>.</li>
<li>Run the following commands, but replace the <strong>“True”</strong> values with either <strong>True</strong> or <strong>False</strong> as appropriate for the endpoint’s compliance category (HIPAA, CMMC, SOC 2):</li>
</ol>
<p style="padding-left:40px"><strong>New-Item -Path “HKLM:\SOFTWARE\Org\ComplianceTags” -Force</strong></p>
<p style="padding-left:40px"><strong>Set-ItemProperty -Path “HKLM:\SOFTWARE\Org\ComplianceTags” -Name “HIPAA” -Value “True”</strong></p>
<p style="padding-left:40px"><strong>Set-ItemProperty -Path “HKLM:\SOFTWARE\Org\ComplianceTags” -Name “CMMC” -Value “True”</strong></p>
<p style="padding-left:40px"><strong>Set-ItemProperty -Path “HKLM:\SOFTWARE\Org\ComplianceTags” -Name “SOC2” -Value “True”</strong></p>
<h3>To manually verify tags:</h3>
<ol>
<li>Open Command Prompt as administrator. Press the <strong>Windows key </strong>+<strong> X</strong>, then select <strong>Command Prompt (Admin)</strong> or <strong>Windows Terminal (Admin)</strong>. If using Windows Terminal, ensure you’re in a <strong>Command Prompt tab</strong>, not PowerShell.</li>
<li>Run the following commands:</li>
</ol>
<p style="padding-left:40px"><strong>reg query HKLM\SOFTWARE\Org\ComplianceTags</strong></p>
<ol start="3">
<li>Alternatively, open the Registry Editor. Press the<strong> Windows key</strong> + <strong>R</strong>. Type <strong>regedit</strong> and press <strong>Enter</strong>.</li>
<li>Navigate to: <strong>HKEY_LOCAL_MACHINE\SOFTWARE\Org\ComplianceTags</strong></li>
<li>Verify that the expected compliance tag values (e.g., keys or string entries used by your organization) are present and match the configured policies. If they are missing or incorrect, the system may not be recognized as compliant during an audit.</li>
</ol>
<h2 id="task-2">Task 2: Validate patch, AV, and encryption status</h2>
<p><strong>&#x1f4cc; Use Case:</strong></p>
<p>This task verifies that systems are patched, antivirus is active, and encryption is enforced.</p>
<ol>
<li>Open PowerShell as an administrator. Press the<strong> Windows key</strong>, type <strong>PowerShell</strong>, then right-click <strong>Windows PowerShell</strong> and select <strong>Run as administrator</strong>.</li>
<li>Verify patch status for Windows Updates by running the following commands:</li>
</ol>
<ul>
<li style="list-style-type:none">
<ul style="list-style-type:disc">
<li>To see the last 5 installed updates:</li>
</ul>
</li>
</ul>
<p style="padding-left:80px"><strong>Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 5</strong></p>
<ul style="list-style-type:disc">
<li style="list-style-type:none">
<ul style="list-style-type:disc">
<li>To check for missing updates:</li>
</ul>
</li>
</ul>
<p style="padding-left:80px"><strong>Get-WindowsUpdateLog</strong></p>
<ul style="list-style-type:disc">
<li style="list-style-type:none">
<ul style="list-style-type:disc">
<li>Or, if the PSWindowsUpdate module is installed:</li>
</ul>
</li>
</ul>
<p style="padding-left:80px"><strong>Get-WindowsUpdate -MicrosoftUpdate -AcceptAll</strong></p>
<ul style="list-style-type:disc">
<li style="list-style-type:none">
<ul style="list-style-type:disc">
<li>To verify patch status for third-party software:</li>
</ul>
</li>
</ul>
<p style="padding-left:40px">Since Windows doesn’t provide a built-in command for these, you can use centralized patch management tools like NinjaOne. You can also check vendor update logs to confirm the latest versions are installed. Many audit teams expect both OS and third-party patches to be documented.</p>
<ol start="3">
<li>To verify AV/Defender status:</li>
</ol>
<p style="padding-left:40px"><strong>Get-MpComputerStatus | Select AMServiceEnabled, AntivirusEnabled, RealTimeProtectionEnabled</strong></p>
<ol start="4">
<li>To verify encryption (BitLocker)</li>
</ol>
<p style="padding-left:40px"><strong>Get-BitLockerVolume | Select MountPoint, ProtectionStatus</strong></p>
<ol start="5">
<li>The results can be exported to CSV and attached to audit prep tickets if needed.</li>
</ol>
<h2 id="task-3">Task 3: Enforce policy baselines</h2>
<p><strong>&#x1f4cc; Use Case:</strong></p>
<p>This task ensures consistent security policies are enforced across all systems, making audits easier to pass. GPOs or scripts can be used to drive compliance configurations, including account lockout policy, password length and complexity, audit object access and logon events, disable guest accounts, and enable security event log retention.</p>
<h3>For domain-joined systems (via Group Policy):</h3>
<ol>
<li>Open the <strong>Group Policy Management Console (GPMC).</strong></li>
<li>Edit or create a GPO.</li>
<li>Navigate to:
<ul style="list-style-type:disc">
<li><strong>Computer</strong> <strong>Configuration</strong> &gt; <strong>Windows</strong> <strong>Settings</strong> &gt; <strong>Security</strong> <strong>Settings</strong> &gt; <strong>Account</strong> <strong>Policies</strong></li>
<li><strong>Computer</strong> <strong>Configuration</strong> &gt; <strong>Windows</strong> <strong>Settings</strong> &gt; <strong>Security</strong> <strong>Settings</strong> &gt; <strong>Advanced</strong> <strong>Audit</strong> <strong>Policy</strong> <strong>Configuration</strong></li>
</ul>
</li>
<li>Configure password policies, account lockouts, screensaver (idle timeout enforcement) and auditing.</li>
</ol>
<h3>For standalone/non-domain systems (via Local Policy or scripts):</h3>
<ol>
<li>Press <strong>Windows key + R</strong>, type <strong>gpedit.msc</strong>, and press <strong>Enter</strong> to open the Local Group Policy Editor.</li>
<li>Configure the same policies locally under <strong>Security Settings</strong>.</li>
<li>If Group Policy is not available (e.g., Windows Home editions), apply registry-based scripts to enforce the same baselines.</li>
</ol>
<h2 id="task-4">Task 4: Validate logs, retention, and monitoring policies</h2>
<p><strong>&#x1f4cc; Use Case:</strong></p>
<p>This task can help you check if event logs are being generated, retained, and not overwritten. This is essential for compliance frameworks requiring log integrity and monitoring.</p>
<h3>To check security log status:</h3>
<ol>
<li>Open PowerShell as an administrator. Press the<strong> Windows key</strong>, type <strong>PowerShell</strong>, then right-click <strong>Windows PowerShell</strong> and select <strong>Run as administrator</strong>.</li>
<li>Run the following command:</li>
</ol>
<p style="padding-left:40px"><strong>Get-WinEvent -LogName Security -MaxEvents 5 | Format-List</strong></p>
<p>This command queries the <strong>Windows Security event log</strong> for the 5 most recent events and sends the output to the console (screen) in a list view<strong>. </strong>The number <strong>“5”</strong> is just for reference and can be changed based on the number of events you want to see.</p>
<p><strong>Running this command</strong> confirms that new events are actively being generated and recorded in the Security log. During an audit, this helps prove that log collection is functioning correctly and that logs aren’t missing or overwritten.</p>
<h3>To check the log retention policy:</h3>
<ol>
<li>Open Command Prompt as administrator. Press the <strong>Windows key </strong>+<strong> X</strong>, then select <strong>Command Prompt (Admin)</strong>.</li>
<li>Run the following command:</li>
</ol>
<p style="padding-left:40px"><strong>wevtutil gl Security | findstr “retention”</strong></p>
<p>This command will show the retention status of the <strong>Windows Security Event Log</strong>:</p>
<ul>
<li><strong>retention: false </strong>means that when full, the retention status of the Windows Security Event Log will be overwritten by the newest events.</li>
<li><strong>retention: true </strong>means that before overwriting, the log will be archived automatically.</li>
</ul>
<h2 id="task-5">Task 5: Verify access control and user tracking</h2>
<p><strong>&#x1f4cc; Use Case:</strong></p>
<p>This task can help MSPs document user accounts, privileged access, and RDP permissions. Demonstrating access reviews satisfies audit requirements for account governance.</p>
<h3>To check local user accounts:</h3>
<ol>
<li>Open Command Prompt as administrator. Press the <strong>Windows key </strong>+<strong> X</strong>, then select <strong>Command Prompt (Admin)</strong>.</li>
<li>Run the following command: <strong>net user &lt;username&gt;</strong></li>
</ol>
<p>This command displays detailed information about the specified account, including:</p>
<ul>
<li>Username and full name</li>
<li>Whether the account is active</li>
<li>Password requirements (expiration, last set, change required)</li>
<li>Group memberships</li>
<li>Profile path and home directory</li>
<li>Permitted logon hours</li>
</ul>
<h3>To list AD users with elevated rights:</h3>
<ol>
<li>Open PowerShell as an administrator. Press the<strong> Windows key</strong>, type <strong>PowerShell</strong>, then right-click <strong>Windows PowerShell</strong> and select <strong>Run as administrator</strong>.</li>
<li>Run the following command:</li>
</ol>
<p style="padding-left:40px"><strong>Get-ADGroupMember -Identity “Domain Admins”</strong></p>
<p>This command retrieves all members of the Domain Admins group in Active Directory, which typically includes accounts with the highest level of privileges. Reviewing this list helps confirm that only authorized users have elevated rights.</p>
<p style="padding-left:40px"><strong>Get-LocalGroupMember -Group “Remote Desktop Users”</strong></p>
<p>This command displays all the accounts that belong to the Remote Desktop Users group on the local machine. Anyone in this group can remotely log in to the system through Remote Desktop Protocol (RDP). Auditors often check this list to ensure that only approved users have remote access, since excessive or unmonitored RDP permissions can create compliance and security risks.</p>
<h2 id="task-6">Task 6: Document backup and recovery proof</h2>
<p><strong>&#x1f4cc; Use Case:</strong></p>
<p>This task can show the last successful backup in the registry for automated RMM scanning. Provides auditors with verifiable evidence that backup and recovery practices are enforced and monitored.</p>
<p>To verify that a last successful backup timestamp entry is created or updated in the registry:</p>
<ol>
<li>Open PowerShell as an administrator. Press the<strong> Windows key</strong>, type <strong>PowerShell</strong>, then right-click <strong>Windows PowerShell</strong> and select <strong>Run as administrator</strong>.</li>
<li>Run the following command:</li>
</ol>
<p style="padding-left:40px"><strong>Set-ItemProperty -Path “HKLM:\SOFTWARE\Org\ComplianceBackup” -Name “LastSuccessfulBackup” -Value (Get-Date).ToString(“u”)</strong></p>
<p style="padding-left:40px">This command creates or updates a custom registry key (ComplianceBackup) under the <strong>HKEY_LOCAL_MACHINE </strong><strong>key</strong>. The <strong>LastSuccessfulBackup</strong> value is set to the current date and time in universal format.</p>
<ol start="3">
<li>Integrate with your RMM system:
<ul style="list-style-type:disc">
<li>Most RMMs let you define <strong>custom fields</strong> or <strong>registry scan rules</strong>.</li>
<li>Configure your RMM to read the value of<strong> HKLM:\SOFTWARE\Org\ComplianceBackup\LastSuccessfulBackup.</strong></li>
<li>This way, the RMM can automatically track when the last successful backup was run and generate compliance evidence reports.</li>
</ul>
</li>
</ol>
<p>To verify that the last successful backup timestamp was recorded in the registry.</p>
<ol>
<li>Open the Registry Editor. Press the<strong> Windows key</strong> + <strong>R</strong>. Type <strong>regedit</strong> and press <strong>Enter</strong>.</li>
<li>Navigate to: <strong>HKEY_LOCAL_MACHINE\SOFTWARE\Org\ComplianceBackup</strong></li>
<li>Confirm that the <strong>LastSuccessfulBackup</strong> value shows the correct timestamp.</li>
</ol>
<p>In addition to registry-based tracking, RMM platforms like NinjaOne can generate detailed backup reports automatically. By applying policies, you can also define backup retention periods to ensure compliance with regulations such as HIPAA, CMMC, or SOC 2.</p>
<h2>&#x26a0;&#xfe0f; Troubleshooting/Things to look out for</h2>
<table>
<tbody>
<tr>
<td style="text-align:center"><strong>Risks</strong></td>
<td style="text-align:center"><strong>Potential Consequences</strong></td>
<td style="text-align:center"><strong>Reversals</strong></td>
</tr>
<tr>
<td>Missing registry tags</td>
<td>Audit evidence of backup or compliance activity may not exist.</td>
<td>Check if scripts are deployed with the SYSTEM context.</td>
</tr>
<tr>
<td>Log retention disabled</td>
<td>Key security and compliance events may be missing, leading to failed audit checks.</td>
<td>Use GPO to enforce min log sizes and retention.</td>
</tr>
<tr>
<td>Inaccurate user lists</td>
<td>Auditors may find discrepancies in access control documentation.</td>
<td>Refresh AD sync or review nested group membership.</td>
</tr>
<tr>
<td>Encryption not enabled</td>
<td>Devices without BitLocker may be flagged as non-compliant, exposing sensitive data.</td>
<td>Check BitLocker policy application and TPM presence.</td>
</tr>
</tbody>
</table>
<h2><strong>Additional considerations for surprise compliance audit preparation</strong></h2>
<p>Beyond the common matters to check, ensure these practices are in place:</p>
<ul>
<li><strong>DLP policies</strong>: Go beyond simply enabling Data Loss Prevention (DLP) in Microsoft 365 or on endpoints. During an audit, you may be asked to show how sensitive data is prevented from leaving the environment and how data retention and archiving rules are enforced. Be ready to demonstrate that backup systems meet required retention periods (for HIPAA, CMMC, or SOC 2) and that archived data is accessible for review.</li>
</ul>
<p>RMM solutions like NinjaOne can simplify this step by generating detailed reports on backup status, retention settings, and endpoint compliance, giving auditors clear evidence that your organization is protecting and retaining data properly.</p>
<ul>
<li><strong>MFA audit</strong>: Ensure all administrators and end-user accounts use Multi-Factor Authentication (MFA).</li>
<li><strong>Offboarding</strong>: Confirm deactivated accounts and asset return logs exist.</li>
<li><strong>Vendor risk tracking</strong>: Maintain an updated list of third-party services with access to data.</li>
<li><strong>Incident response readiness</strong>: Be prepared to explain your process for handling a compromised endpoint, including isolation, reimaging, and reporting procedures.</li>
<li><strong>Vulnerability scan results</strong>: Keep recent vulnerability scan reports for each endpoint to demonstrate proactive risk management.</li>
<li><strong>Device inventory</strong>: Maintain a complete, accurate inventory of all devices accessing organizational data.</li>
</ul>
<div class="in-context-cta">
<p style="text-align:center">To learn more about what NinjaOne can do, check out our FAQ on our RMM solution.</p>
</div>
<h2><strong>NinjaOne services for compliance audit readiness</strong></h2>
<p>NinjaOne and its tools can help prepare clients for a surprise compliance audit by deploying the following tools and capabilities:</p>
<ul>
<li><strong>Endpoint management:</strong> Tagging endpoints based on compliance scope (HIPAA, CMMC, SOC 2).</li>
<li><strong>Scripting:</strong> While NinjaOne provides built-in visibility into AV status, patching, and backups, scripting can be used to run regular checks for more specific compliance requirements, such as verifying encryption status, specific SaaS data, and others.</li>
<li><strong>Alerting:</strong> Alerting on gaps in compliance coverage or agent issues.</li>
<li><strong>Reporting:</strong> Generating pre-audit and QBR reports for internal and client-facing use.</li>
</ul>
<h2><strong>Final thoughts on preparing for surprise compliance audits</strong></h2>
<p>Audit readiness involves a collective effort from MSPs and clients, guaranteeing that the managed IT environment complies with industry regulations. MSPs, in particular, can implement practices such as device tagging, regular validation scripts, policy enforcement, log retention, user tracking, and backup documentation to help their clients prepare for surprise compliance audits.</p>
<p>It’s also ideal to pair these practices with a robust IT solution like NinjaOne. As a comprehensive endpoint management tool, NinjaOne supports scalable audit readiness across tenants, ensuring clients are ready in case independent auditors or regulatory bodies do a surprise compliance check.</p>
<div class="in-context-cta">
<p style="text-align:center">Want to learn more about how NinjaOne RMM simplifies automation and compliance management? Explore the NinjaOne RMM FAQ page.</p>
</div>
<h3><strong>Related topics:</strong></h3>
<div class="quick-start-guide">
<h2><svg xmlns="http://www.w3.org/2000/svg" width="45" height="45" viewbox="0 0 45 45" fill="none"><path d="M41.4822 0H3.51778C1.57496 0 0 1.57496 0 3.51778V41.4822C0 43.425 1.57496 45 3.51778 45H41.4822C43.425 45 45 43.425 45 41.4822V3.51778C45 1.57496 43.425 0 41.4822 0Z" fill="#053856"/><path d="M30.4399 13.9904C28.9161 12.4475 26.9127 11.6737 24.4346 11.6737C23.0721 11.6737 21.8188 11.911 20.6794 12.3858C19.5401 12.8605 18.5859 13.5346 17.8168 14.4129V11.2654L12.2766 13.867V32.562H18.0779V22.4739C18.0779 20.6224 18.5099 19.2267 19.3787 18.2867C20.2474 17.3515 21.4105 16.8815 22.8727 16.8815C24.1877 16.8815 25.1894 17.285 25.8825 18.0968C26.5756 18.9086 26.9222 20.1334 26.9222 21.7808V32.562H32.7234V21.2728C32.7234 18.2393 31.9591 15.5285 30.4399 13.9856V13.9904Z" fill="#04FF88"/></svg>Quick-Start Guide</h2>
<p>NinjaOne offers several features to help prepare clients for compliance audits like HIPAA, CMMC, and SOC 2:</p>
<ol>
<li><b data-stringify-type="bold">Vulnerability Management</b>
<ul>
<li>The Vulnerability Importer allows organizations to:
<ul>
<li>Import and track vulnerabilities from multiple security scanning tools</li>
<li>Centralize vulnerability data in a single dashboard</li>
<li>Prioritize and manage security risks across IT environments</li>
</ul>
</li>
</ul>
</li>
<li><b data-stringify-type="bold">Security Integrations</b>
<ul>
<li>NinjaOne supports integrations with security tools like:
<ul>
<li>CrowdStrike</li>
<li>SentinelOne</li>
<li>Bitdefender</li>
<li>Vulnerability scanners (Qualys, Rapid7, Tenable)</li>
</ul>
</li>
</ul>
</li>
<li><b data-stringify-type="bold">Compliance-Focused Features</b>
<ul>
<li>Patch Management: Automate OS and software patching to address known vulnerabilities</li>
<li>Device Monitoring: Track device health, configurations, and compliance status</li>
<li>Documentation Tools: Create checklists and knowledge bases for standardizing procedures</li>
<li>Encryption Key Management: Monitor BitLocker and FileVault encryption</li>
</ul>
</li>
<li><b data-stringify-type="bold">Access Control and Authentication</b>
<ul>
<li>Multi-Factor Authentication (MFA)</li>
<li>Single Sign-On (SSO) with SAML</li>
<li>Identity Management via SCIM</li>
<li>Granular user permissions and roles</li>
</ul>
</li>
<li><b data-stringify-type="bold">Reporting and Tracking</b>
<ul>
<li>Detailed device inventories</li>
<li>Vulnerability tracking</li>
<li>Compliance status monitoring</li>
</ul>
</li>
</ol>
</div>
</div>
<p><script id="meta-pixel" type="text/javascript" class="optanon-category-C0004"> window.addEventListener('load', () => { ! function(f, b, e, v, n, t, s) { if (f.fbq) return; n = f.fbq = function() { n.callMethod ? n.callMethod.apply(n, arguments) : n.queue.push(arguments) }; if (!f._fbq) f._fbq = n; n.push = n; n.loaded = !0; n.version = '2.0'; n.queue = []; t = b.createElement(e); t.async = !0; t.src = v; s = b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t, s) }(window, document, 'script', ' fbq('init', '148315452373934'); fbq('track', 'PageView'); var currentURL = window.location.href; if (currentURL.indexOf('thankyou') !== -1 || currentURL.indexOf('thank-you') !== -1) { fbq('track', 'Lead'); } }); </script><br />
</p>
<h2>PakarPBN</h2>
<p></p>
<p>A Private Blog Network (PBN) is a collection of websites that are controlled by a single individual or organization and used primarily to build backlinks to a “money site” in order to influence its ranking in search engines such as Google. The core idea behind a PBN is based on the importance of backlinks in Google’s ranking algorithm. Since Google views backlinks as signals of authority and trust, some website owners attempt to artificially create these signals through a controlled network of sites.</p>
<p>In a typical PBN setup, the owner acquires expired or aged domains that already have existing authority, backlinks, and history. These domains are rebuilt with new content and hosted separately, often using different IP addresses, hosting providers, themes, and ownership details to make them appear unrelated. Within the content published on these sites, links are strategically placed that point to the main website the owner wants to rank higher. By doing this, the owner attempts to pass link equity (also known as “link juice”) from the PBN sites to the target website.</p>
<p>The purpose of a PBN is to give the impression that the target website is naturally earning links from multiple independent sources. If done effectively, this can temporarily improve keyword rankings, increase organic visibility, and drive more traffic from search results.</p>
<p><a href="https://pakarpbn.com">Jasa Backlink</a><br />
<br /><a href="https://drivenime.com">Download Anime Batch</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://xtadalafix.com/audit-readiness-checklist-ensure-clients-are-prepared/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Create a Custom Builder &#8211; A GotenbergBundle Story</title>
		<link>https://xtadalafix.com/create-a-custom-builder-a-gotenbergbundle-story/</link>
					<comments>https://xtadalafix.com/create-a-custom-builder-a-gotenbergbundle-story/#respond</comments>
		
		<dc:creator><![CDATA[xtadalafix]]></dc:creator>
		<pubDate>Fri, 17 Apr 2026 20:40:08 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://xtadalafix.com/create-a-custom-builder-a-gotenbergbundle-story/</guid>

					<description><![CDATA[Previous article &#62;&#62; find it here You quickly end up with duplicated configuration, cluttered services, and conditional logic that&#8217;s hard to maintain. This article picks up exactly where we left off. We&#8217;ll build a Custom Builder — a dedicated class that encapsulates all the configuration and logic for a specific PDF type. By the end, [&#8230;]]]></description>
										<content:encoded><![CDATA[<p></p>
<div id="content" data-sticky-nav-target="content">
<p><span><em>Previous article &gt;&gt; find it here</em></span></p>
<p><span>You quickly end up with duplicated configuration, cluttered services, and conditional logic that&#8217;s hard to maintain. This article picks up exactly where we left off. We&#8217;ll build a <strong>Custom Builder</strong> — a dedicated class that encapsulates all the configuration and logic for a specific PDF type. By the end, your controller will be reduced to a single expressive call, and each PDF type will live in its own clean, testable class.</span></p>
<h2 id="What-is-the-purpose-of-a-Custom-Builder"><span>What is the purpose of a Custom Builder?</span></h2>
<p><span>To make life easier, when you generate multiple PDF. If you generate multiple PDFs across your application, the configuration sometimes can’t be shared between all of them—mostly because of differences in styling.</span></p>
<p><span>This is where the Builder pattern comes into play. The Builder pattern is a design pattern that helps you construct complex objects step by step, separating how the object is built from its final representation. In this context, it allows you to encapsulate all the configuration and logic for a specific PDF type into a dedicated builder class.</span></p>
<p><span>By creating a custom Builder, you avoid cluttering your service with conditional logic or duplicating code. Instead, each custom builder handles its own configuration cleanly and efficiently, making your codebase easier to maintain and extend.</span></p>
<h2 id="Step-1-Update-the-dependencies"><span>Step 1: Update the dependencies</span></h2>
<p><span><em>TL;DR see this </em></span><em><span><u>commit</u></span></em></p>
<p><span>First, you need to update your dependencies to get the latest version of GotenbergBundle. To finally get the v1.2 which is not experimental anymore. </span></p>
<p><span>Yeah! </span>&#x1f37e;</p>
<div data-controller="code-highlight" data-code-highlight-target="code" data-code-highlight-language-value="bash">
<pre><code>composer require sensiolabs/gotenberg-bundle:1.2.*</code></pre>
</div>
<h2 id="Step-2-Create-a-custom-builder-Class"><span>Step 2: Create a custom builder Class</span></h2>
<p><span><em>TL;DR see this </em></span><em><span><u>commit</u></span></em></p>
<p><span>Create a custom builder class that extends </span><span><u>AbstractBuilder</u></span><span> and implements </span><span><u>BuilderAssetInterface</u></span><span>.</span></p>
<div data-controller="code-highlight" data-code-highlight-target="code" data-code-highlight-language-value="php">
<pre><code>&lt;?php

namespace App\Pdf;

use Sensiolabs\GotenbergBundle\Builder\AbstractBuilder;
use Sensiolabs\GotenbergBundle\Builder\BuilderAssetInterface;

final class InvoicePdfBuilder extends AbstractBuilder implements BuilderAssetInterface
{
   protected function getEndpoint(): string
   {
       // TODO: Implement getEndpoint() method.
   }

   public function addAsset(string $path): static
   {
       // TODO: Implement addAsset() method.
   }
}</code></pre>
</div>
<p><span>All native builders extend AbstractBuilder which defines the </span><span>generate</span><span> method. It also stores all the configurations you need such as </span><span>margin</span><span>, </span><span>width</span><span>… and prepares the payload before sending it to Gotenberg API.</span></p>
<p><span>Because you add assets into the Twig template you need to implement the BuilderAssetInterface.</span></p>
<p><span>Add the attribute </span><span>#[WithBuilderConfiguration(&#8216;pdf&#8217;, &#8216;invoice&#8217;)]</span><span> on the top of the class. </span></p>
<div data-controller="code-highlight" data-code-highlight-target="code" data-code-highlight-language-value="php">
<pre><code>&lt;?php

namespace App\Pdf;

use Sensiolabs\GotenbergBundle\Builder\AbstractBuilder;
use Sensiolabs\GotenbergBundle\Builder\Attributes\WithBuilderConfiguration;
use Sensiolabs\GotenbergBundle\Builder\BuilderAssetInterface;

#[WithBuilderConfiguration('pdf', 'invoice')]
final class InvoicePdfBuilder extends AbstractBuilder implements BuilderAssetInterface
{
	// rest of the code
}</code></pre>
</div>
<p><span>This attribute will help you to get a semantic configuration for this custom builder.The first argument is to inject this new type of builder into the ‘pdf’ or ‘screenshot’ section. And the second is the naming you want.Let’s implement the methods now. </span></p>
<p><span>About the getEndpoint method, let’s use the existing constant </span><code class="code">HtmlPdfBuilder::ENDPOINT</code><span> since the Gotenberg API endpoint is the same as the one used in </span><code class="code">HtmlPdfBuilder</code><span>.</span></p>
<h3><span>If you want to generate PDF, the available traits are:</span></h3>
<ul>
<li>
<p><code class="code">AssetTrait</code><span> Includes methods to add assets.</span></p>
</li>
<li>
<p><code class="code">ContentTrait</code><span> Includes methods to add different content parts to your PDF.</span></p>
</li>
<li>
<p><code class="code">CookieTrait</code><span> Includes methods to set, add and forward cookies to Gotenberg API.</span></p>
</li>
<li>
<p><code class="code">CustomHttpHeadersTrait</code><span> Includes methods to add header  to Gotenberg API.</span></p>
</li>
<li>
<p><code class="code">EmulatedMediaTypeTrait</code><span> Includes a method to emulate screen or print.</span></p>
</li>
<li>
<p><code class="code">FailOnTrait</code><span> Includes methods to customize behavior on invalid status code.</span></p>
</li>
<li>
<p><code class="code">PdfPagePropertiesTrait</code><span> Includes methods to customize PDF rendering.</span></p>
</li>
<li>
<p><code class="code">PerformanceModeTrait</code><span> Method to not wait for Chromium network to be idle.</span></p>
</li>
<li>
<p><code class="code">WaitBeforeRenderingTrait</code><span> Includes methods to add delay before converting it to PDF.</span></p>
</li>
<li>
<p><code class="code">DownloadFromTrait</code><span> Includes a method to add external resources.</span></p>
</li>
<li>
<p><code class="code">MetadataTrait</code><span> Includes a method to add metadata.</span></p>
</li>
<li>
<p><code class="code">PdfFormatTrait</code><span> Includes methods about PDF formats.</span></p>
</li>
<li>
<p><code class="code">SplitTrait</code><span> Includes methods to split PDF.</span></p>
</li>
<li>
<p><code class="code">WebhookTrait</code><span> Includes methods to use webhooks.</span></p>
</li>
</ul>
<p><span>And all of them are combined into </span><code class="code">ChromiumPdfTrait</code><span>.If you want to make a custom builder about office, screenshot… you can find out all available traitsin the </span><span><u>GotenbergBundle source on GitHub</u></span><span>.So let’s add </span><code class="code">AssetTrait</code><span> that will implement the </span><code class="code">addAsset</code><span> method for us. Under the hood, this method stores for us the assets that come from Twig templates, or the one added on the fly.</span></p>
<p><code class="code">ContentTrait</code><span> is to get the possibility to use the method as </span><code class="code">header</code><span> and </span><code class="code">content</code><span> we use into the controller or footer configured into the configuration file sensiolabs_gotenberg.yaml.</span></p>
<p><span>And </span><code class="code">PdfPagePropertiesTrait</code><span> is for all methods about margins, landscape, paper width … and the PDF render customization.</span></p>
<div data-controller="code-highlight" data-code-highlight-target="code" data-code-highlight-language-value="php">
<pre><code>&lt;?php

namespace App\Pdf;

use Sensiolabs\GotenbergBundle\Builder\AbstractBuilder;
use Sensiolabs\GotenbergBundle\Builder\Attributes\WithBuilderConfiguration;
use Sensiolabs\GotenbergBundle\Builder\Behaviors\Chromium\AssetTrait;
use Sensiolabs\GotenbergBundle\Builder\Behaviors\Chromium\ContentTrait;
use Sensiolabs\GotenbergBundle\Builder\Behaviors\Chromium\PdfPagePropertiesTrait;
use Sensiolabs\GotenbergBundle\Builder\BuilderAssetInterface;
use Sensiolabs\GotenbergBundle\Builder\Pdf\HtmlPdfBuilder;

#[WithBuilderConfiguration('pdf', 'invoice')]
final class InvoicePdfBuilder extends AbstractBuilder implements BuilderAssetInterface
{
   use AssetTrait;
   use ContentTrait;
   use PdfPagePropertiesTrait;

   protected function getEndpoint(): string
   {
       return HtmlPdfBuilder::ENDPOINT;
   }
}</code></pre>
</div>
<h2 id="Step-3-Update-the-configuration-file"><span>Step 3: Update the configuration file</span></h2>
<p><span><em>TL:DR see this </em></span><em><span><u>commit</u></span></em></p>
<p><span>You just need to update the name of the builder. The name is the one you configured in the </span><code class="code">WithBuilderConfiguration</code><span> attribute.</span></p>
<div data-controller="code-highlight" data-code-highlight-target="code" data-code-highlight-language-value="diff">
<pre><code>sensiolabs_gotenberg:
   http_client: 'gotenberg.client'
   default_options:
       pdf:
-          html:
+          invoice:
               footer:
                   template: 'footer.html.twig'
               paper_width: '21cm'
               paper_height: '29.7cm'
               margin_top: '6cm'
               margin_bottom: '2cm'
               landscape: true</code></pre>
</div>
<h2 id="Step-4-Update-the-controller"><span>Step 4: Update the controller</span></h2>
<p><span><em>TL:DR see this </em></span><em><span><u>commit</u></span></em></p>
<p><span>As we did for the configuration, 2 lines have to be updated to use it.</span></p>
<div data-controller="code-highlight" data-code-highlight-target="code" data-code-highlight-language-value="diff">
<pre><code>#[Route('/pdf', 'pdf')]
public function pdf(GotenbergPdfInterface $gotenbergPdf): Response
{
   $invoiceData = $this-&gt;invoiceData();

-   return $gotenbergPdf
-      -&gt;html()
+   return $gotenbergPdf-&gt;get(InvoicePdfBuilder::class)
       -&gt;header('header.html.twig', [
           'invoice' =&gt; $invoiceData['invoice'],
           'client' =&gt; $invoiceData['client'],
       ])
       -&gt;content('content.html.twig', [
           'purchases' =&gt; $invoiceData['purchases'],
           'invoice' =&gt; $invoiceData['invoice'],
       ])
       -&gt;generate()
       -&gt;stream()
   ;
}</code></pre>
</div>
<h2 id="Step-5-Let-s-make-it-work"><span>Step 5: Let’s make it work </span>&#x1f4aa;</h2>
<p><span><em>TL:DR see this </em></span><em><span><u>commit</u></span></em></p>
<p><span>If you have GotenbergBundle lower than v1.2 you need to add the configurator.</span></p>
<div data-controller="code-highlight" data-code-highlight-target="code" data-code-highlight-language-value="yaml">
<pre><code># services.yaml
services:
	App\Pdf\InvoicePdfBuilder:
   configurator: '@sensiolabs_gotenberg.builder_configurator'</code></pre>
</div>
<p><span>Or since the version v1.0.1 you don’t need to do it on your own.Just register it in the </span><code class="code">build</code><span> method of your </span><code class="code">Kernel</code><span> class (</span><span><u>see Symfony&#8217;s kernel documentation if needed</u></span><span>).</span></p>
<p><span>First, we retrieve the </span><code class="code">'sensiolabs_gotenberg'</code><span> extension, then we only need to call </span><code class="code">registerBuilder</code><span> method with the custom builder FQCN as argument. Et voilà!</span></p>
<div data-controller="code-highlight" data-code-highlight-target="code" data-code-highlight-language-value="php">
<pre><code>class Kernel extends BaseKernel
{
   use MicroKernelTrait;

   protected function build(ContainerBuilder $container): void
   {
       /** @var SensiolabsGotenbergExtension $extension */
       $extension = $container-&gt;getExtension('sensiolabs_gotenberg');
       $extension-&gt;registerBuilder(InvoicePdfBuilder::class);
   }
}</code></pre>
</div>
<p><span>And all works like a charm.</span></p>
<h2 id="Step-6-Wait-we-forgot-the-whole-point"><span>Step 6: Wait… we forgot the whole point! </span>&#x1f926;</h2>
<p><span><em>TL:DR see this </em></span><em><span><u>commit</u></span></em></p>
<p><span>Whooo, we&#8217;ve been so focused on creating a new builder we forgot the actual purpose of a custom builder: encapsulating the logic.</span></p>
<p><span>Right now, the controller still knows too much — it fetches the invoice data, passes it to the header, passes it to the content… That&#8217;s exactly the kind of responsibility that should live inside InvoicePdfBuilder.</span></p>
<p><span>Let&#8217;s move all of that.</span></p>
<div data-controller="code-highlight" data-code-highlight-target="code" data-code-highlight-language-value="php">
<pre><code>#[WithBuilderConfiguration('pdf', 'invoice')]
final class InvoicePdfBuilder extends AbstractBuilder implements BuilderAssetInterface
{
    use AssetTrait;
    use ContentTrait;
    use PdfPagePropertiesTrait;

    public function invoice(): self
    {
        $invoiceData = $this-&gt;invoiceData();
        
        $this-&gt;header('header.html.twig', [
            'invoice' =&gt; $invoiceData['invoice'],
            'client' =&gt; $invoiceData['client'],
        ]);
        
        $this-&gt;content('content.html.twig', [
            'purchases' =&gt; $invoiceData['purchases'],
            'invoice' =&gt; $invoiceData['invoice'],
        ]);
        
        return $this;
    }

    protected function getEndpoint(): string
    {
        return HtmlPdfBuilder::ENDPOINT;
    }

    private function invoiceData(): array
    {
        $factory = Factory::create();
        
        $allPurchases = [];
        for ($i = 0; $i &lt; 20; $i++) {
            $allPurchases[] = [
                'orderId' =&gt; $factory-&gt;unixTime(),
                'period' =&gt; $factory-&gt;dateTimeBetween('- 1 week')-&gt;format('Y-m-d') . ' - ' . $factory-&gt;dateTime('now')-&gt;format('Y-m-d'),
                'description' =&gt; $factory-&gt;sentence(),
                'price' =&gt; $factory-&gt;randomFloat(2, 1),
                'quantity' =&gt; $factory-&gt;randomDigitNotZero(),
                'total' =&gt; $factory-&gt;randomFloat(2, 1),
            ];
        }
        
        return [
            'invoice' =&gt; [
                'id' =&gt; $factory-&gt;unixTime(),
                'date' =&gt; $factory-&gt;dateTime()-&gt;format('Y-m-d'),
                'due_date' =&gt; $factory-&gt;dateTime('+1 week')-&gt;format('Y-m-d'),
                'sub_total' =&gt; $factory-&gt;randomFloat(2, 1),
                'total' =&gt; $factory-&gt;randomFloat(2, 1),
            ],
            'client' =&gt; [
                'phone_number' =&gt; $factory-&gt;e164PhoneNumber(),
                'name' =&gt; $factory-&gt;company(),
                'address' =&gt; $factory-&gt;address(),
                'city' =&gt; $factory-&gt;city(),
            ],
            'purchases' =&gt; $allPurchases
        ];
    }
}</code></pre>
</div>
<p><span>Now the controller becomes really simple as wanted in the best practice of Symfony.</span></p>
<div data-controller="code-highlight" data-code-highlight-target="code" data-code-highlight-language-value="diff">
<pre><code>#[Route('/pdf', 'pdf')]
public function pdf(GotenbergPdfInterface $gotenbergPdf): Response
{
-   $invoiceData = $this-&gt;invoiceData();
-
-   return $gotenbergPdf-&gt;get(InvoicePdfBuilder::class)
-       -&gt;header('header.html.twig', [
-           'invoice' =&gt; $invoiceData['invoice'],
-           'client' =&gt; $invoiceData['client'],
-       ])
-       -&gt;content('content.html.twig', [
-           'purchases' =&gt; $invoiceData['purchases'],
-           'invoice' =&gt; $invoiceData['invoice'],
-       ])
-       -&gt;generate()
-       -&gt;stream()
-   ;

+   return $gotenbergPdf-&gt;get(InvoicePdfBuilder::class)
+       -&gt;invoice()
+       -&gt;generate()
+       -&gt;stream()
+   ;
}</code></pre>
</div>
<p><span>The controller no longer knows anything about templates or data structure. It just says &#8220;<em>give me the invoice PDF</em>&#8221; and the builder handles the rest. That&#8217;s the whole point. </span>&#x1f3af;</p>
<h2 id="Conclusion"><span>Conclusion</span></h2>
<p><span>Now when you run </span><code class="code">php bin/console debug:config sensiolabs_gotenberg</code><span>, you&#8217;ll see your custom builder&#8217;s configuration neatly integrated alongside the native ones — a good sign that everything is properly wired.</span></p>
<p><span>More importantly, look at what we&#8217;ve achieved:</span></p>
<ul>
<li>
<p><span><strong>The controller is clean</strong>. It no longer knows anything about templates, data structure, or rendering logic. It simply asks for an invoice PDF and gets one.</span></p>
</li>
<li>
<p><span><strong>The logic is encapsulated.</strong> </span><code class="code">InvoicePdfBuilder</code><span> owns everything related to invoice PDFs: the endpoint, the traits it needs, the templates, the data. If the invoice layout changes tomorrow, you know exactly where to go.</span></p>
</li>
<li>
<p><span><strong>The configuration is semantic</strong>. Thanks to </span><code class="code">#[WithBuilderConfiguration('pdf', 'invoice')]</code><span>, your </span><code class="code">sensiolabs_gotenberg.yaml</code><span> reads naturally, and you can configure margins, footer, or paper size per builder without any workaround.</span></p>
</li>
<li>
<p><span><strong>It scales</strong>. Need a </span><code class="code">ReportPdfBuilder</code><span>? Follow the same steps. Each PDF type gets its own builder, its own configuration block, and zero interference with the others.</span></p>
</li>
</ul>
<p><span>This is the Builder pattern at its best in a Symfony context: predictable, maintainable, and easy to extend. Give it a try in your next project and let us know how it goes </span>&#x1f680;</p>
</p></div>
<p></p>
<h2>PakarPBN</h2>
<p></p>
<p>A Private Blog Network (PBN) is a collection of websites that are controlled by a single individual or organization and used primarily to build backlinks to a “money site” in order to influence its ranking in search engines such as Google. The core idea behind a PBN is based on the importance of backlinks in Google’s ranking algorithm. Since Google views backlinks as signals of authority and trust, some website owners attempt to artificially create these signals through a controlled network of sites.</p>
<p>In a typical PBN setup, the owner acquires expired or aged domains that already have existing authority, backlinks, and history. These domains are rebuilt with new content and hosted separately, often using different IP addresses, hosting providers, themes, and ownership details to make them appear unrelated. Within the content published on these sites, links are strategically placed that point to the main website the owner wants to rank higher. By doing this, the owner attempts to pass link equity (also known as “link juice”) from the PBN sites to the target website.</p>
<p>The purpose of a PBN is to give the impression that the target website is naturally earning links from multiple independent sources. If done effectively, this can temporarily improve keyword rankings, increase organic visibility, and drive more traffic from search results.</p>
<p><a href="https://pakarpbn.com">Jasa Backlink</a><br />
<br /><a href="https://drivenime.com">Download Anime Batch</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://xtadalafix.com/create-a-custom-builder-a-gotenbergbundle-story/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>The Week in Charts (12/24/25)</title>
		<link>https://xtadalafix.com/the-week-in-charts-12-24-25/</link>
					<comments>https://xtadalafix.com/the-week-in-charts-12-24-25/#respond</comments>
		
		<dc:creator><![CDATA[xtadalafix]]></dc:creator>
		<pubDate>Wed, 15 Apr 2026 20:36:34 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://xtadalafix.com/the-week-in-charts-12-24-25/</guid>

					<description><![CDATA[View the video of this post here. This week’s post is sponsored by YCharts. Is the AI Boom the Next Dot-Com Bubble? Watch a replay of our live show on this question (YouTube) and download the slide deck HERE. Get 20% off your YCharts Professional subscription when you initially sign up for the service. The most important [&#8230;]]]></description>
										<content:encoded><![CDATA[<div>
<p>View the <strong>video of this post here</strong>.</p>
<p><iframe loading="lazy" title="The Return of QE | The Week in Charts (12/19/25) | Charlie Bilello | Creative Planning" width="640" height="360" src="https://www.youtube.com/embed/FOZrhkNd1AM?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<p>This week’s post is sponsored by <strong>YCharts.</strong></p>
<p>Is the AI Boom the Next Dot-Com Bubble?</p>
<p>Watch a replay of our live show on this question (<strong><span style="text-decoration: underline;">YouTube</span></strong>) and download the slide deck <strong><span style="text-decoration: underline;">HERE</span></strong>.</p>
<figure class="wp-block-image size-full"></figure>
<p><strong>Get 20% off</strong> your YCharts Professional subscription when you initially sign up for the service.</p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<p><strong>The most important charts and themes in markets and investing</strong>…</p>
<p><strong>1) A Confusing Labor Market</strong></p>
<p>The labor market in the US has perhaps never been more confusing than it is today.</p>
<p>The latest nonfarm payroll report revealed that the US has added an average of 10k jobs per month over the last 4 months, the fewest since the 2020 recession.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="709" height="408" src="https://bilello.blog/wp-content/uploads/2025/12/nonfarm-payrolls-4-month-average-12-16-25.png" alt="" class="wp-image-15931" srcset="https://bilello.blog/wp-content/uploads/2025/12/nonfarm-payrolls-4-month-average-12-16-25.png 709w, https://bilello.blog/wp-content/uploads/2025/12/nonfarm-payrolls-4-month-average-12-16-25-300x173.png 300w" sizes="auto, (max-width: 709px) 100vw, 709px"/></figure>
<p>The total number of jobs in the US increased by 0.6% over the past year, the slowest growth rate since March 2021. In the past 50 years, this type of weakness has preceded a recession and a spike in the Unemployment Rate 100% of the time.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="708" height="434" src="https://bilello.blog/wp-content/uploads/2025/12/payrolls-yoy-12-16-25.png" alt="" class="wp-image-15932" srcset="https://bilello.blog/wp-content/uploads/2025/12/payrolls-yoy-12-16-25.png 708w, https://bilello.blog/wp-content/uploads/2025/12/payrolls-yoy-12-16-25-300x184.png 300w" sizes="auto, (max-width: 708px) 100vw, 708px"/></figure>
<p>But is this time different?</p>
<p>Many are arguing just that, pointing to lower immigration levels as the primary factor leading to the rapid decline in jobs. A Minneapolis Fed analysis found that half of the payroll decline can be attributed to reduced immigration.</p>
<p>But what about the other half?</p>
<p>There’s much debate about that as well, with Fed Chairman Jerome Powell saying recently that the US has been overstating jobs by up to 60k per month. So perhaps part of the decline is merely due to simply reflecting reality as opposed to previously using models that inflated the jobs numbers.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="616" height="125" src="https://bilello.blog/wp-content/uploads/2025/12/image-2.png" alt="" class="wp-image-15954" srcset="https://bilello.blog/wp-content/uploads/2025/12/image-2.png 616w, https://bilello.blog/wp-content/uploads/2025/12/image-2-300x61.png 300w" sizes="auto, (max-width: 616px) 100vw, 616px"/></figure>
<p>“It’s a complicated, unusual, and difficult situation, where the labor market is also under pressure, where job creation may actually be negative,” Powell said. </p>
<p>Indeed, looking at the ADP private payroll numbers over the last 3 months (-4k/month), that appears to be the case.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="711" height="412" src="https://bilello.blog/wp-content/uploads/2025/12/adp-3-month-employment-12-3-25.png" alt="" class="wp-image-15955" srcset="https://bilello.blog/wp-content/uploads/2025/12/adp-3-month-employment-12-3-25.png 711w, https://bilello.blog/wp-content/uploads/2025/12/adp-3-month-employment-12-3-25-300x174.png 300w" sizes="auto, (max-width: 711px) 100vw, 711px"/></figure>
<p>Irrespective of your explanation for the decline in payrolls over the past year, this much is clear: the labor market is cooling. Evidence pointing to this fact includes:</p>
<ul class="wp-block-list">
<li>The US Unemployment Rate moving up to 4.6% in November, the highest level since September 2021.</li>
</ul>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="731" height="470" src="https://bilello.blog/wp-content/uploads/2025/12/ue-rate-12-16-25.png" alt="" class="wp-image-15934" srcset="https://bilello.blog/wp-content/uploads/2025/12/ue-rate-12-16-25.png 731w, https://bilello.blog/wp-content/uploads/2025/12/ue-rate-12-16-25-300x193.png 300w" sizes="auto, (max-width: 731px) 100vw, 731px"/></figure>
<ul class="wp-block-list">
<li>There are now 160k more Unemployed Persons than Job Openings in the US. Excluding the 2020 covid recession, this is the widest spread we’ve seen since 2017.</li>
</ul>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="840" height="504" src="https://bilello.blog/wp-content/uploads/2025/12/unemployed-vs.-job-openings-12-19-25.png" alt="" class="wp-image-15941" srcset="https://bilello.blog/wp-content/uploads/2025/12/unemployed-vs.-job-openings-12-19-25.png 840w, https://bilello.blog/wp-content/uploads/2025/12/unemployed-vs.-job-openings-12-19-25-300x180.png 300w, https://bilello.blog/wp-content/uploads/2025/12/unemployed-vs.-job-openings-12-19-25-768x461.png 768w" sizes="auto, (max-width: 840px) 100vw, 840px"/></figure>
<ul class="wp-block-list">
<li>The percentage of US workers quitting their jobs has moved down to 1.8%, the lowest since May 2020.</li>
</ul>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="838" height="562" src="https://bilello.blog/wp-content/uploads/2025/12/quits-rate-12-9-25.png" alt="" class="wp-image-15933" srcset="https://bilello.blog/wp-content/uploads/2025/12/quits-rate-12-9-25.png 838w, https://bilello.blog/wp-content/uploads/2025/12/quits-rate-12-9-25-300x201.png 300w, https://bilello.blog/wp-content/uploads/2025/12/quits-rate-12-9-25-768x515.png 768w" sizes="auto, (max-width: 838px) 100vw, 838px"/></figure>
<p>But a cooling labor market is not the same thing a recessionary labor market. In a cooling labor market companies slow their rates of hiring whereas in a recessionary labor market companies actively reduce their workforce due to declines in demand.</p>
<p>The best evidence for the cooling scenario continues to be Initial Jobless Claims, which are hovering near their lowest levels of the year. During a recession, we would expect this number to be rising as newly laid off workers would be filing for unemployment.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="839" height="566" src="https://bilello.blog/wp-content/uploads/2025/12/jobless-claims-12-19-25.png" alt="" class="wp-image-15956" srcset="https://bilello.blog/wp-content/uploads/2025/12/jobless-claims-12-19-25.png 839w, https://bilello.blog/wp-content/uploads/2025/12/jobless-claims-12-19-25-300x202.png 300w, https://bilello.blog/wp-content/uploads/2025/12/jobless-claims-12-19-25-768x518.png 768w" sizes="auto, (max-width: 839px) 100vw, 839px"/></figure>
<p>So when it comes to labor market weakness, this time is actually different – at least so far.</p>
<p><strong>2) Distorted Inflation Data</strong></p>
<p>The good news?</p>
<p>CPI moved down to 2.7% in November, well below consensus estimates for a 3.1% increase.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="759" height="448" src="https://bilello.blog/wp-content/uploads/2025/12/cpi-monthly-since-sep-2022.png" alt="" class="wp-image-15957" srcset="https://bilello.blog/wp-content/uploads/2025/12/cpi-monthly-since-sep-2022.png 759w, https://bilello.blog/wp-content/uploads/2025/12/cpi-monthly-since-sep-2022-300x177.png 300w" sizes="auto, (max-width: 759px) 100vw, 759px"/></figure>
<p>The bad news?</p>
<p>The data released by the BLS was missing many important numbers due to the government shutdown (including the entire October CPI level), leading many to question how reliable the 2.7% figure actually is.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="684" height="482" src="https://bilello.blog/wp-content/uploads/2025/12/image-4.png" alt="" class="wp-image-15959" srcset="https://bilello.blog/wp-content/uploads/2025/12/image-4.png 684w, https://bilello.blog/wp-content/uploads/2025/12/image-4-300x211.png 300w" sizes="auto, (max-width: 684px) 100vw, 684px"/></figure>
<p>The decline in Shelter CPI inflation from 3.6% YoY in September to 3.0% YoY in November was the main factor in bringing down overall CPI as Shelter represents over a third of the index. But the question is whether this is a true reading or a downward bias due to the shutdown with the BLS filling in 0% inflation for missing owners’ equivalent rent data. The BLS has yet to comment on this but if it’s a downward bias we could see the inflation rate move back up in the next report.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="721" height="467" src="https://bilello.blog/wp-content/uploads/2025/12/shelter-cpi-vs.-rents-yoy-12-18-25.png" alt="" class="wp-image-15942" srcset="https://bilello.blog/wp-content/uploads/2025/12/shelter-cpi-vs.-rents-yoy-12-18-25.png 721w, https://bilello.blog/wp-content/uploads/2025/12/shelter-cpi-vs.-rents-yoy-12-18-25-300x194.png 300w" sizes="auto, (max-width: 721px) 100vw, 721px"/></figure>
<p><strong>3) More Rate Cuts and the Return of QE</strong></p>
<p>As expected, the Fed cut interest rates once again in December, bringing the Fed Funds Rate down to a new range of 3.50-3.75%.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="837" height="578" src="https://bilello.blog/wp-content/uploads/2025/12/fed-funds-rate-vs.-cpi-inflation-rate-12-19-25.png" alt="" class="wp-image-15948" srcset="https://bilello.blog/wp-content/uploads/2025/12/fed-funds-rate-vs.-cpi-inflation-rate-12-19-25.png 837w, https://bilello.blog/wp-content/uploads/2025/12/fed-funds-rate-vs.-cpi-inflation-rate-12-19-25-300x207.png 300w, https://bilello.blog/wp-content/uploads/2025/12/fed-funds-rate-vs.-cpi-inflation-rate-12-19-25-768x530.png 768w" sizes="auto, (max-width: 837px) 100vw, 837px"/></figure>
<p>Meanwhile, US CPI has risen by nearly 4% per year since the start of 2020 (2x their target inflation rate), meaning the Fed has completely abandoned their mandate to maintain price stability.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="744" height="434" src="https://bilello.blog/wp-content/uploads/2025/12/us-cpi-vs.-trend-12-18-25.png" alt="" class="wp-image-15938" srcset="https://bilello.blog/wp-content/uploads/2025/12/us-cpi-vs.-trend-12-18-25.png 744w, https://bilello.blog/wp-content/uploads/2025/12/us-cpi-vs.-trend-12-18-25-300x175.png 300w" sizes="auto, (max-width: 744px) 100vw, 744px"/></figure>
<p>And after a $2.4 trillion balance-sheet reduction from the peak in April 2022, the Fed has officially flipped the switch. QT ended in November and QE is already back. In their latest meeting, the Fed announced $40 billion per month in Treasury Bill purchases to start.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="838" height="563" src="https://bilello.blog/wp-content/uploads/2025/12/fed-total-assets-12-19-25.png" alt="" class="wp-image-15930" srcset="https://bilello.blog/wp-content/uploads/2025/12/fed-total-assets-12-19-25.png 838w, https://bilello.blog/wp-content/uploads/2025/12/fed-total-assets-12-19-25-300x202.png 300w, https://bilello.blog/wp-content/uploads/2025/12/fed-total-assets-12-19-25-768x516.png 768w" sizes="auto, (max-width: 838px) 100vw, 838px"/></figure>
<p>Where will that money come from? They will create it out of thin air, with accelerating increases in the money supply which continues to hit record highs.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="838" height="565" src="https://bilello.blog/wp-content/uploads/2025/12/money-supply-ath-12-24-25.png" alt="" class="wp-image-15961" srcset="https://bilello.blog/wp-content/uploads/2025/12/money-supply-ath-12-24-25.png 838w, https://bilello.blog/wp-content/uploads/2025/12/money-supply-ath-12-24-25-300x202.png 300w, https://bilello.blog/wp-content/uploads/2025/12/money-supply-ath-12-24-25-768x518.png 768w" sizes="auto, (max-width: 838px) 100vw, 838px"/></figure>
<p>My expectation is that this latest announcement is paving the way for more bond buying in 2026 on the long end of the curve.</p>
<p>Why?</p>
<p>Despite the Fed cutting short-term rates by 175 bps since September 2024, long-term bond yields have risen. The 30-year Treasury yield was below 4% when the Fed started cutting rates and is now above 4.8%. Which means the market is betting on higher long-term inflation.</p>
<p>How do you counteract that?</p>
<p>Either by pursuing policies that lower future inflation (reducing the deficit, raising interest rates, less money printing) or by manipulating the bond market. The most palatable of these options is engaging in yield curve control (more QE) – which is why I believe it’s only a matter of time before the Fed is pressured to do so.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="840" height="567" src="https://bilello.blog/wp-content/uploads/2025/12/30-yr-treasury-yield-12-19-25-1.png" alt="" class="wp-image-15960" srcset="https://bilello.blog/wp-content/uploads/2025/12/30-yr-treasury-yield-12-19-25-1.png 840w, https://bilello.blog/wp-content/uploads/2025/12/30-yr-treasury-yield-12-19-25-1-300x203.png 300w, https://bilello.blog/wp-content/uploads/2025/12/30-yr-treasury-yield-12-19-25-1-768x518.png 768w" sizes="auto, (max-width: 840px) 100vw, 840px"/></figure>
<p><strong>4) The Lower Rates Litmus Test</strong></p>
<p>Speaking of pressure, this much is clear: the next Fed chairman will much more receptive to President Trump’s unrelenting calls for lower interest rates.</p>
<p>How do we know this?</p>
<p>He has said exactly that…</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="758" height="692" src="https://bilello.blog/wp-content/uploads/2025/12/image-1.png" alt="" class="wp-image-15951" srcset="https://bilello.blog/wp-content/uploads/2025/12/image-1.png 758w, https://bilello.blog/wp-content/uploads/2025/12/image-1-300x274.png 300w" sizes="auto, (max-width: 758px) 100vw, 758px"/></figure>
<p>And who is the leading candidate for the chair position? Kevin Hassett, who stated in the past week that the US is “way behind the curve on lowering rates” and that “there’s a lot more room for lower rates.”</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="482" src="https://bilello.blog/wp-content/uploads/2025/12/trump-next-fed-chair-12-22-25-1024x482.png" alt="" class="wp-image-15962" srcset="https://bilello.blog/wp-content/uploads/2025/12/trump-next-fed-chair-12-22-25-1024x482.png 1024w, https://bilello.blog/wp-content/uploads/2025/12/trump-next-fed-chair-12-22-25-300x141.png 300w, https://bilello.blog/wp-content/uploads/2025/12/trump-next-fed-chair-12-22-25-768x362.png 768w, https://bilello.blog/wp-content/uploads/2025/12/trump-next-fed-chair-12-22-25.png 1389w" sizes="auto, (max-width: 1024px) 100vw, 1024px"/></figure>
<p>Say goodbye to the “independent” Fed.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="593" height="349" src="https://bilello.blog/wp-content/uploads/2025/12/image-5.png" alt="" class="wp-image-15963" srcset="https://bilello.blog/wp-content/uploads/2025/12/image-5.png 593w, https://bilello.blog/wp-content/uploads/2025/12/image-5-300x177.png 300w" sizes="auto, (max-width: 593px) 100vw, 593px"/></figure>
<p><strong>5) The Year of the Comeback</strong></p>
<p>On April 8, the S&amp;P 500 was down over 15% on the year, its 4th worst start to a year ever. But after a 38% rally, it’s now up 17% on the year, hitting 38 all-time highs along the way. This has been one of the greatest market comebacks in history.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="449" height="547" src="https://bilello.blog/wp-content/uploads/2025/12/SP-comeback-12-23-25.png" alt="" class="wp-image-15965" srcset="https://bilello.blog/wp-content/uploads/2025/12/SP-comeback-12-23-25.png 449w, https://bilello.blog/wp-content/uploads/2025/12/SP-comeback-12-23-25-246x300.png 246w" sizes="auto, (max-width: 449px) 100vw, 449px"/></figure>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="458" height="505" src="https://bilello.blog/wp-content/uploads/2025/12/SP-500-aths-12-23-25.png" alt="" class="wp-image-15964" srcset="https://bilello.blog/wp-content/uploads/2025/12/SP-500-aths-12-23-25.png 458w, https://bilello.blog/wp-content/uploads/2025/12/SP-500-aths-12-23-25-272x300.png 272w" sizes="auto, (max-width: 458px) 100vw, 458px"/></figure>
<p>The US economy showed a big comeback as well. After a -0.6% downturn in Q1, real GDP snapped back with a +3.8% reading in Q2 and +4.3% in Q3. The Q3 number was over 1% higher than consensus estimates.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="821" height="522" src="https://bilello.blog/wp-content/uploads/2025/12/us-real-gdp-quarterly-12-23-25.png" alt="" class="wp-image-15967" srcset="https://bilello.blog/wp-content/uploads/2025/12/us-real-gdp-quarterly-12-23-25.png 821w, https://bilello.blog/wp-content/uploads/2025/12/us-real-gdp-quarterly-12-23-25-300x191.png 300w, https://bilello.blog/wp-content/uploads/2025/12/us-real-gdp-quarterly-12-23-25-768x488.png 768w" sizes="auto, (max-width: 821px) 100vw, 821px"/></figure>
<p>The US economic expansion is now 65 months in duration and will likely show further growth in Q4 (Atlanta Fed is projecting +3%).</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="567" height="351" src="https://bilello.blog/wp-content/uploads/2025/12/us-econ-expansions-12-23-25.png" alt="" class="wp-image-15968" srcset="https://bilello.blog/wp-content/uploads/2025/12/us-econ-expansions-12-23-25.png 567w, https://bilello.blog/wp-content/uploads/2025/12/us-econ-expansions-12-23-25-300x186.png 300w" sizes="auto, (max-width: 567px) 100vw, 567px"/></figure>
<p><strong>6) All Is Calm Again</strong></p>
<p>Volatility felt high in 2025. But in reality? It wasn’t extreme at all. The $VIX has averaged 19 this year, which is slightly below its historical norm.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="775" height="446" src="https://bilello.blog/wp-content/uploads/2025/12/vix-average-12-23-25.png" alt="" class="wp-image-15966" srcset="https://bilello.blog/wp-content/uploads/2025/12/vix-average-12-23-25.png 775w, https://bilello.blog/wp-content/uploads/2025/12/vix-average-12-23-25-300x173.png 300w, https://bilello.blog/wp-content/uploads/2025/12/vix-average-12-23-25-768x442.png 768w" sizes="auto, (max-width: 775px) 100vw, 775px"/></figure>
<p>Back in April during the “Tariff Tantrum” the Volatility Index ($VIX) briefly crossed above 60. Today, on Christmas Eve, it’s below 14, its lowest level of the year. All is calm again.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="834" height="556" src="https://bilello.blog/wp-content/uploads/2025/12/vix-12-24-25.png" alt="" class="wp-image-15969" srcset="https://bilello.blog/wp-content/uploads/2025/12/vix-12-24-25.png 834w, https://bilello.blog/wp-content/uploads/2025/12/vix-12-24-25-300x200.png 300w, https://bilello.blog/wp-content/uploads/2025/12/vix-12-24-25-768x512.png 768w" sizes="auto, (max-width: 834px) 100vw, 834px"/></figure>
<p><strong>7) A Few Interesting Stats…</strong></p>
<p>a) Gas Prices in the US have moved down to $2.89 per gallon, their lowest level in over 4 years (note: national average).</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="765" height="552" src="https://bilello.blog/wp-content/uploads/2025/12/aaa-gas-prices-12-19-25.png" alt="" class="wp-image-15939" srcset="https://bilello.blog/wp-content/uploads/2025/12/aaa-gas-prices-12-19-25.png 765w, https://bilello.blog/wp-content/uploads/2025/12/aaa-gas-prices-12-19-25-300x216.png 300w" sizes="auto, (max-width: 765px) 100vw, 765px"/></figure>
<p>b) The US Trade Deficit actually <em>widened </em>17% in the first 9 months of this year.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="871" height="561" src="https://bilello.blog/wp-content/uploads/2025/12/us-trade-deficit-in-goods-and-services-as-of-sep-2025.png" alt="" class="wp-image-15943" srcset="https://bilello.blog/wp-content/uploads/2025/12/us-trade-deficit-in-goods-and-services-as-of-sep-2025.png 871w, https://bilello.blog/wp-content/uploads/2025/12/us-trade-deficit-in-goods-and-services-as-of-sep-2025-300x193.png 300w, https://bilello.blog/wp-content/uploads/2025/12/us-trade-deficit-in-goods-and-services-as-of-sep-2025-768x495.png 768w" sizes="auto, (max-width: 871px) 100vw, 871px"/></figure>
<p>c) The US collected a record $246 billion in customs duties over the last 12 months, which was 3x higher than what was collected in the 12 months prior ($81 billion).</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="809" height="456" src="https://bilello.blog/wp-content/uploads/2025/12/us-custom-duties-last-12-months-as-of-nov-2025.png" alt="" class="wp-image-15944" srcset="https://bilello.blog/wp-content/uploads/2025/12/us-custom-duties-last-12-months-as-of-nov-2025.png 809w, https://bilello.blog/wp-content/uploads/2025/12/us-custom-duties-last-12-months-as-of-nov-2025-300x169.png 300w, https://bilello.blog/wp-content/uploads/2025/12/us-custom-duties-last-12-months-as-of-nov-2025-768x433.png 768w" sizes="auto, (max-width: 809px) 100vw, 809px"/></figure>
<p>d) In the first 2 months of the 2026 Fiscal Year the Federal Government took in $740 billion and spent $1.2 trillion. Don’t try this at home.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="846" height="547" src="https://bilello.blog/wp-content/uploads/2025/12/fiscal-deficit-2026-oct-nov-2026.png" alt="" class="wp-image-15945" srcset="https://bilello.blog/wp-content/uploads/2025/12/fiscal-deficit-2026-oct-nov-2026.png 846w, https://bilello.blog/wp-content/uploads/2025/12/fiscal-deficit-2026-oct-nov-2026-300x194.png 300w, https://bilello.blog/wp-content/uploads/2025/12/fiscal-deficit-2026-oct-nov-2026-768x497.png 768w" sizes="auto, (max-width: 846px) 100vw, 846px"/></figure>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<p>And that’s it for this year. Thanks for reading! Have a Merry Christmas and Happy Holidays!</p>
<p>Every week I do a video breaking down the most important charts and themes in markets and investing. <strong>Subscribe to our YouTube channel HERE</strong> for the latest content.</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="489" src="https://bilello.blog/wp-content/uploads/2025/12/asset-class-returns-12-22-25-1024x489.png" alt="" class="wp-image-15949" srcset="https://bilello.blog/wp-content/uploads/2025/12/asset-class-returns-12-22-25-1024x489.png 1024w, https://bilello.blog/wp-content/uploads/2025/12/asset-class-returns-12-22-25-300x143.png 300w, https://bilello.blog/wp-content/uploads/2025/12/asset-class-returns-12-22-25-768x367.png 768w, https://bilello.blog/wp-content/uploads/2025/12/asset-class-returns-12-22-25.png 1155w" sizes="auto, (max-width: 1024px) 100vw, 1024px"/></figure>
<p>Disclaimer: All information provided is for educational purposes only and does not constitute investment, legal or tax advice, or an offer to buy or sell any security. Read our full disclosures here.</p>
</div>
<p></p>
<h2>PakarPBN</h2>
<p></p>
<p>A Private Blog Network (PBN) is a collection of websites that are controlled by a single individual or organization and used primarily to build backlinks to a “money site” in order to influence its ranking in search engines such as Google. The core idea behind a PBN is based on the importance of backlinks in Google’s ranking algorithm. Since Google views backlinks as signals of authority and trust, some website owners attempt to artificially create these signals through a controlled network of sites.</p>
<p>In a typical PBN setup, the owner acquires expired or aged domains that already have existing authority, backlinks, and history. These domains are rebuilt with new content and hosted separately, often using different IP addresses, hosting providers, themes, and ownership details to make them appear unrelated. Within the content published on these sites, links are strategically placed that point to the main website the owner wants to rank higher. By doing this, the owner attempts to pass link equity (also known as “link juice”) from the PBN sites to the target website.</p>
<p>The purpose of a PBN is to give the impression that the target website is naturally earning links from multiple independent sources. If done effectively, this can temporarily improve keyword rankings, increase organic visibility, and drive more traffic from search results.</p>
<p><a href="https://pakarpbn.com">Jasa Backlink</a><br />
<br /><a href="https://drivenime.com">Download Anime Batch</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://xtadalafix.com/the-week-in-charts-12-24-25/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Audit File Access on Shared Drives Without EDR Tools</title>
		<link>https://xtadalafix.com/how-to-audit-file-access-on-shared-drives-without-edr-tools/</link>
					<comments>https://xtadalafix.com/how-to-audit-file-access-on-shared-drives-without-edr-tools/#respond</comments>
		
		<dc:creator><![CDATA[xtadalafix]]></dc:creator>
		<pubDate>Mon, 13 Apr 2026 20:28:08 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://xtadalafix.com/how-to-audit-file-access-on-shared-drives-without-edr-tools/</guid>

					<description><![CDATA[Key Points Enable native Windows auditing to monitor file access on shared drives without investing in EDR or XDR tools. Use built-in file server features like Event Viewer and FSRM to track, control, and report on access activity. Standardize auditing policies across environments to reduce compliance risks and limit insider threats. Prioritize high-value folders such [&#8230;]]]></description>
										<content:encoded><![CDATA[<div>
<div class="in-context-cta">
<h2>Key Points</h2>
<ul>
<li>Enable native Windows auditing to monitor file access on shared drives without investing in EDR or XDR tools.</li>
<li>Use built-in file server features like Event Viewer and FSRM to track, control, and report on access activity.</li>
<li>Standardize auditing policies across environments to reduce compliance risks and limit insider threats.</li>
<li>Prioritize high-value folders such as finance and HR data to minimize log noise and focus on meaningful events.</li>
</ul>
</div>
<p>Shared drives are invaluable for Small and Medium-sized Businesses (SMBs), but they introduce blind spots when file access activity isn’t tracked. A lack of visibility can lead to unauthorized access to sensitive files and undetected data loss.</p>
<p>Endpoint Detection and Response (EDR) and Extended Detection and Response (XDR) can address these issues, but can be expensive for clients. Managed Service Providers (MSPs) can still deliver strong security value by leveraging native auditing tools to track <strong>file access in shared drives</strong> and implementing structured processes for reviewing and responding to access activity.</p>
<h2>Auditing file access on shared drives without EDR tools</h2>
<p>To audit file access on shared drives without EDR tools, you must enable native file system auditing, review event logs, use file server features for SMB environments, standardize auditing policies, and communicate findings to clients.</p>
<p>&#x1f4cc; <strong>Prerequisites:</strong></p>
<ul>
<li>Administrative access to Windows Server or file shares.</li>
<li>Knowledge of file/folder permissions.</li>
<li>Access to client compliance requirements.</li>
<li>Optional: RMM or monitoring tool to centralize alerts.</li>
</ul>
<h3>Method 1: Enable native file system auditing</h3>
<p>This step enables native file system auditing, allowing you to see who accesses, changes, or deletes data.</p>
<p>&#x1f4cc; <strong>Use Case: </strong>A company handling confidential financial or HR records wants to monitor access to specific folders to ensure only authorized personnel interact with those files.</p>
<p>You can enable object access auditing using Group Policy. To do so, follow the steps below:</p>
<ol>
<li>Press <strong>Win + R</strong>, type <strong>gpmc.msc</strong>, then press <strong>Enter</strong>.</li>
<li>Navigate to:
<ul>
<li>Computer Configuration → Windows Settings → Security Settings → Local Policies → Audit Policy</li>
</ul>
</li>
<li>Enable <strong>Audit Object Access </strong>for <strong>Success </strong>and <strong>Failure events</strong>.</li>
</ol>
<h3>Method 2: Review event logs for access activity</h3>
<p>This step lets you monitor logs to provide insight into how sensitive data is used to ensure timely detection.</p>
<p>&#x1f4cc; <strong>Use Case: </strong>A security administrator wants to detect when users attempt to mass-delete client files or modify confidential HR data. By collecting and analyzing Windows Security Event Logs, the organization can identify these incidents early and respond before significant data loss or compliance breaches occur.</p>
<h4>Collect Windows security event logs</h4>
<ol>
<li>Access event logs by pressing <strong>Win</strong>, typing <strong>Event Viewer</strong>, and then pressing <strong>Enter</strong>.</li>
<li>Navigate to:
<ul>
<li>Event Viewer → Windows Logs → Security</li>
</ul>
</li>
<li>Focus on event IDs related to file system access and note down the written info:
<ul>
<li>4663 – Access attempt on an object (e.g., file/folder read/write/delete).</li>
<li>4660 – Object deleted.</li>
<li>4656 – Handle requested for object access.</li>
<li>4670 – Permissions changed on an object.</li>
</ul>
</li>
</ol>
<h4>Forward logs to a central collection point</h4>
<p>Security Information and Event Management (SIEM) tools, such as Microsoft Sentinel, can simplify review and correlation. Centralizing logs helps monitor different systems simultaneously and identify cross-system issues.</p>
<h4>Set up alerts for suspicious activity</h4>
<p>Define alert rules within your SIEM or monitoring system to flag:</p>
<ul>
<li>Mass file deletions</li>
<li>Unauthorized access attempts</li>
<li>Permission escalation</li>
</ul>
<p>For example, an alert triggers if more than 50 delete events (Event ID 4660) happen within a short time period. The alert indicates a potential ransomware or insider threat scenario.</p>
<h3>Method 3: Use file server features for SMB environments</h3>
<p>This step leverages native server management tools to provide deeper control over data access and storage behavior.</p>
<p>&#x1f4cc; <strong>Use Case: </strong>An IT administrator manages multiple shared folders across departments hosted on a central Windows file server. To prevent storage misuse, the administrator implements File Server Resource Manager (FSRM) quotas and access reports to maintain visibility and enforce compliance.</p>
<h4>Leverage FSRM</h4>
<p>Use FSRM quotas to:</p>
<ul>
<li>Limit data stored in specific directories</li>
<li>Trigger email notifications or scripts when users approach storage limits</li>
</ul>
<p>You can also enable File Screening Management to prevent certain file types from being saved in restricted locations.</p>
<h4>Apply permissions auditing for shared drives</h4>
<p>Use Access-Based Enumeration (ABE) and the Advanced Security Settings on shared folders to ensure only authorized users can access specific directories. These audits confirm that access rights align with organizational policies, reducing the risk of privilege creep.</p>
<h4>Regularly review access reports</h4>
<p>Configure Storage Reports Management within FSRM to generate:</p>
<ul>
<li>Access reports</li>
<li>Duplicate file and quota usage reports</li>
</ul>
<p>Review reports periodically to identify unusual access patterns or large file transfers that could indicate misuse.</p>
<h3>Method 4: Standardize auditing policies across clients</h3>
<p>This step standardizes auditing policies to ensure organizations can monitor critical data using the same rules.</p>
<p>&#x1f4cc; <strong>Use Case: </strong>An MSP oversees dozens of client environments, each with varying configurations. To maintain consistent oversight and compliance, the MSP creates a baseline file access auditing policy that is applied across all clients.</p>
<p>Use PowerShell to define a standard audit setting for all client systems. To do so, follow the steps below:</p>
<ol>
<li>Press <strong>Win</strong>, type <strong>PowerShell</strong>, then click <strong>Run as administrator</strong>.</li>
<li>Copy and paste the following script into the prompt, then press <strong>Enter</strong>:</li>
</ol>
<table>
<tbody>
<tr>
<td><code># Enable Object Access Auditing</code></p>
<p><code>auditpol /set /category:"Object Access" /success:enable /failure:enable</code></p>
<p><code># Set log size and retention policy</code></p>
<p><code>wevtutil sl Security /ms:512000 /rt:true</code></p>
<p><code># Verify configuration</code></p>
<p><code>auditpol /get /category:*</code></p>
</td>
</tr>
</tbody>
</table>
<ol start="3">
<li>Note the following folders, as they are high-value data types you should constantly monitor:
<ul>
<li>Finance records</li>
<li>HR or employee data</li>
<li>Legal and compliance documentation</li>
<li>Client and project files</li>
</ul>
</li>
<li>Right-click the folder → Properties → Security → Advanced → Auditing → Add</li>
<li>Choose the Users or Groups to audit, then pick Action to Audit:
<ul>
<li>Read</li>
<li>Write</li>
<li>Delete</li>
<li>Change Permissions</li>
</ul>
</li>
</ol>
<p><strong>&#x1f4a1; Note:</strong> For large-scale environments, you can automate the folder definition by using the following PowerShell script:</p>
<table>
<tbody>
<tr>
<td><code># Example: Add auditing to a folder</code></p>
<p><code>$folder = "C:\Finance"</code></p>
<p><code>$acl = Get-Acl $folder</code></p>
<p><code>$audit = New-Object System.Security.AccessControl.FileSystemAuditRule("Everyone","FullControl","Success,Failure")</code></p>
<p><code>$acl.AddAuditRule($audit)</code></p>
<p><code>Set-Acl $folder $acl</code></p>
</td>
</tr>
</tbody>
</table>
<h3>Method 5: Communicate findings to clients</h3>
<p>This step translates technical audit data into client-friendly summaries to help demonstrate the value of monitoring efforts.</p>
<p>&#x1f4cc; <strong>Use Case: </strong>An MSP delivers monthly compliance reports to clients. Instead of sending dense event logs filled with Event IDs like 4663 and 4660, the MSP summarizes them into plain-language highlights.</p>
<ul>
<li>Translate technical logs into client-friendly summaries.</li>
<li>Highlight successful detections and blocked attempts.</li>
<li>Demonstrate how auditing reduces compliance and insider risk.</li>
</ul>
<h2>Verification</h2>
<p>Once file access auditing is in place, it’s essential to verify that logs are collected, forwarded, and reviewed correctly.</p>
<h3>Validate event collection and forwarding</h3>
<p>Ensure file access events are recorded in the Windows Security Event Log and periodically test the forwarding configuration by generating sample access events and confirming they appear in the centralized dashboard. This process ensures no data loss between endpoints and the monitoring system.</p>
<h3>Ensure audit trails meet compliance and SLA standards</h3>
<p>Compare collected log details against client or regulatory requirements. Confirm that logs include:</p>
<ul>
<li>User identity</li>
<li>Timestamp</li>
<li>Action type</li>
<li>Resource details</li>
</ul>
<p>Regular compliance audits should cross-check this data to ensure records are secured.</p>
<h3>Generate regular access reports</h3>
<p>Schedule monthly or quarterly reports summarizing legitimate and suspicious activity. Deliver reports with summaries and visuals, while retaining logs for auditors or IT analysts.</p>
<h2>Additional considerations</h2>
<ul>
<li><strong>Noise management</strong>: Too much auditing can overwhelm logs, so it’s best to focus on sensitive data.</li>
<li><strong>Storage impact</strong>: Log retention may need dedicated storage for compliance.</li>
<li><strong>User awareness</strong>: Let employees know that activity is monitored to reduce insider risks.</li>
</ul>
<h2>Troubleshooting common file access on shared drives issues</h2>
<p>Address common issues to ensure auditing remains accurate, efficient, and compliant.</p>
<h3>No access events logged</h3>
<p>Confirm that Audit Object Access is enabled in Group Policy. To do so, navigate the following paths:</p>
<ul>
<li>Audit Policy:
<ul>
<li>Computer Configuration → Windows Settings → Security Settings → Local Policies → Audit Policy → Audit Object Access</li>
</ul>
</li>
</ul>
<ul>
<li>Advanced Audit Policy:
<ul>
<li>Computer Configuration → Windows Settings → Security Settings → Advanced Audit Policy Configuration → Object Access → File System</li>
</ul>
</li>
</ul>
<p>Ensure auditing is enabled for Success and Failure events.</p>
<h3>Excessive false positives</h3>
<p>Too many irrelevant logs can obscure risks. Refine the auditing configuration by focusing on sensitive folders.</p>
<h2>NinjaOne services that help audit file access on shared drives</h2>
<p>NinjaOne can document, automate, monitor, and report to make it easier for MSPs to audit file access on shared drives without EDR tools.</p>
<h3>Documentation</h3>
<p>NinjaOne’s documentation feature allows for securely stored credentials, procedures, and environmental details. You can also use documentation templates and checklists to organize and secure IT-specific information properly.</p>
<h3>Automation</h3>
<p>The task feature enables tasks to be set to recur at specific intervals. You can schedule tasks to run every number of hours, daily, weekly, or monthly.</p>
<h3>Monitoring</h3>
<p>NinjaOne has robust alert and monitoring capabilities. You can customize alerts for critical stage changes.</p>
<h3>Reporting</h3>
<p>NinjaOne’s comprehensive reporting features include customizable report cover pages, downloadable PDF reports, shareable reports with configurable permissions, and more.</p>
<h2>Detect data losses by auditing file access on shared drives</h2>
<p>While EDR tools help with file access auditing, the features aren’t necessary. You can leverage native Windows features and standardize policies to deliver meaningful visibility, reduce compliance risks, and strengthen client trust.</p>
<p><strong>Related topics:</strong></p>
</div>
<p><script id="meta-pixel" type="text/javascript" class="optanon-category-C0004"> window.addEventListener('load', () => { ! function(f, b, e, v, n, t, s) { if (f.fbq) return; n = f.fbq = function() { n.callMethod ? n.callMethod.apply(n, arguments) : n.queue.push(arguments) }; if (!f._fbq) f._fbq = n; n.push = n; n.loaded = !0; n.version = '2.0'; n.queue = []; t = b.createElement(e); t.async = !0; t.src = v; s = b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t, s) }(window, document, 'script', ' fbq('init', '148315452373934'); fbq('track', 'PageView'); var currentURL = window.location.href; if (currentURL.indexOf('thankyou') !== -1 || currentURL.indexOf('thank-you') !== -1) { fbq('track', 'Lead'); } }); </script><br />
</p>
<h2>PakarPBN</h2>
<p></p>
<p>A Private Blog Network (PBN) is a collection of websites that are controlled by a single individual or organization and used primarily to build backlinks to a “money site” in order to influence its ranking in search engines such as Google. The core idea behind a PBN is based on the importance of backlinks in Google’s ranking algorithm. Since Google views backlinks as signals of authority and trust, some website owners attempt to artificially create these signals through a controlled network of sites.</p>
<p>In a typical PBN setup, the owner acquires expired or aged domains that already have existing authority, backlinks, and history. These domains are rebuilt with new content and hosted separately, often using different IP addresses, hosting providers, themes, and ownership details to make them appear unrelated. Within the content published on these sites, links are strategically placed that point to the main website the owner wants to rank higher. By doing this, the owner attempts to pass link equity (also known as “link juice”) from the PBN sites to the target website.</p>
<p>The purpose of a PBN is to give the impression that the target website is naturally earning links from multiple independent sources. If done effectively, this can temporarily improve keyword rankings, increase organic visibility, and drive more traffic from search results.</p>
<p><a href="https://pakarpbn.com">Jasa Backlink</a><br />
<br /><a href="https://drivenime.com">Download Anime Batch</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://xtadalafix.com/how-to-audit-file-access-on-shared-drives-without-edr-tools/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>SymfonyLive Paris 2026: AI Revolution and a Peak Reunion for Team SensioLabs</title>
		<link>https://xtadalafix.com/symfonylive-paris-2026-ai-revolution-and-a-peak-reunion-for-team-sensiolabs/</link>
					<comments>https://xtadalafix.com/symfonylive-paris-2026-ai-revolution-and-a-peak-reunion-for-team-sensiolabs/#respond</comments>
		
		<dc:creator><![CDATA[xtadalafix]]></dc:creator>
		<pubDate>Sat, 11 Apr 2026 20:21:56 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://xtadalafix.com/symfonylive-paris-2026-ai-revolution-and-a-peak-reunion-for-team-sensiolabs/</guid>

					<description><![CDATA[A Historic Backdrop for Open Source Celebration The conference took place at the majestic Cité Internationale Universitaire de Paris. This location is highly symbolic, as the institution is celebrating its 100th anniversary. Founded after World War I to foster peace and exchange between people &#x1f30d; through its various international houses, the Cité Universitaire perfectly mirrors [&#8230;]]]></description>
										<content:encoded><![CDATA[<div id="content" data-sticky-nav-target="content">
<h2 id="A-Historic-Backdrop-for-Open-Source-Celebration"><span>A Historic Backdrop for Open Source Celebration</span></h2>
<p><span>The conference took place at the majestic <strong>Cité Internationale Universitaire de Paris</strong>. This location is highly symbolic, as </span><span><u>the institution is celebrating its 100th anniversary</u></span><span>. Founded after World War I to foster peace and exchange between people </span>&#x1f30d;<span> through its various international houses, the Cité Universitaire perfectly mirrors the values of <strong>open source</strong>. Much like this humanist endeavor, Symfony thrives on global collaboration, shared knowledge, and breaking down technological borders.</span></p>
<h2 id="Fabien-Potencier-s-Major-Announcements"><span>Fabien Potencier&#8217;s Major Announcements</span></h2>
<p><span>The technical program featured massive announcements and a crystal-clear vision: Symfony is fully geared up for the era of Artificial Intelligence.</span></p>
<p><span><strong>Fabien Potencier</strong> captivated the audience with two game-changing keynotes:</span></p>
<ul>
<li>
<p><span><strong>The TUI renaissance with Symfony Terminal</strong>: With coding agents shifting from the IDE to the terminal, Text User Interfaces are seeing a second life. Fabien introduced the new <strong>Symfony Terminal</strong> component—a full PHP toolkit for building rich, interactive interfaces. The highlight? Dropping the Pull Request </span>&#x1f525;<span> live on stage.</span></p>
</li>
<li>
<p><span><strong>Behind the scenes of coding agents</strong>: Fabien demonstrated that in a coding agent, the model handles only half the job. The other half relies on the &#8220;harness&#8221; (the underlying infrastructure). Leveraging </span><span><strong><u>PHP fibers</u></strong></span><span>, he proved that our language of choice is perfectly designed to orchestrate these complex feedback loops.</span></p>
</li>
</ul>
<p></p>
<h2 id="Inspiring-Talks-on-Stage"><span>Inspiring Talks on Stage</span></h2>
<p><span>Fabien&#8217;s ideas were amplified by keynotes from:</span></p>
<ul>
<li>
<p><span><strong>Nicolas Grekas</strong>, who demonstrated how to reconfigure Symfony in real-time using <strong>application sidekicks</strong>.</span></p>
</li>
<li>
<p><span><strong><u>Titouan Galopin</u></strong></span><span>, who broke down the <strong>new essential AI design patterns</strong> for our future architectures.</span></p>
</li>
</ul>
<p><span>Beyond the keynotes, the SymfonyLive Paris 2026 stage featured many engaging talks </span>&#x1f3a4;<span> on diverse topics, including AI (naturally), Symfony UX, ClickHouse, JSON, Doctrine, and more.</span></p>
<p><span>One of our team&#8217;s proudest moments was the <strong>lightning talk by Imen Ezzine</strong>. An in-house SensioLabs developer, Imen brilliantly presented <strong>HttpRecorder</strong>, a crucial tool for recording and replaying HTTP interactions during testing. The entire team was there to cheer her on, and we are incredibly proud to actively contribute to knowledge sharing.</span></p>
<p><img decoding="async" src="https://sensiolabs.com/f/a02ad028cb2ec609/1920x1280-developers-at-symfonylive-paris-2026.jpg" alt="3 developers standing in front of a computer at SymfonyLive Paris 2026"/></p>
<h2 id="High-Traffic-at-the-SensioLabs-booth"><span>High Traffic at the SensioLabs booth</span></h2>
<p><span>Our booth was swamped for both days ! So many of you participated in our activities:</span></p>
<ul>
<li>
<p><span><strong>The interactive magic quiz</strong>: Attendees battled it out across several sessions of fun-filled quizzes on PHP and Symfony. The final session gathered over 50 participants—a massive success ! The fastest and sharpest participants won </span>&#x1f9d9;&#x200d;&#x2642;<span> <strong>Harry Potter POP figures</strong>.</span></p>
</li>
<li>
<p><span><strong>Our raffle game</strong>: Congrats to the lucky winner who scored a high-performance <strong>gaming keyboard</strong> !</span></p>
</li>
</ul>
<p><span>On Thursday afternoon, during the break, we handed out <strong>New York rolls</strong>—delicious pastries packed with custard and topped with various goodies. Everyone loved them !</span></p>
<p><span>For our final booth innovation, we teamed up with Imen Ezzine, host of the YouTube podcast </span><span><strong><u>Café Tech avec Imen</u></strong></span><span>, to interview speakers and attendees live. We asked for their impressions of the conference, the talks, etc. It was an excellent way to share the SymfonyLive Paris buzz with everyone who couldn&#8217;t make it physically.</span></p>
<h2 id="SensioLabs-and-Smile-The-Group-s-Strength"><span>SensioLabs and Smile: The Group&#8217;s Strength</span></h2>
<p><span>SymfonyLive Paris 2026 was also a great opportunity to highlight SensioLabs&#8217; integration within the </span><span><strong><u>Smile Group</u></strong></span><span>, a European open-source leader. The <strong>Smile</strong> team was there with their own booth, and it was fantastic to share the event with the group&#8217;s Symfony experts. This synergy boosts our capacity to support companies with their most ambitious PHP projects.</span></p>
<p><span>We were also pleased to greet our partners and key ecosystem players: </span><span><strong><u>Les-Tilleuls.coop</u></strong></span><span>, </span><span><strong><u>Codéin</u></strong></span><span>, </span><span><strong><u>ACSEO</u></strong></span><span>, </span><span><strong><u>Orange Business</u></strong></span><span>, and </span><span><strong><u>Upsun</u></strong></span><span>.</span></p>
<h2 id="Team-Building-Post-Conference-Go-Karting-and-Bowling"><span>Team Building: Post-Conference Go-Karting and Bowling !</span></h2>
<p><span>Because SymfonyLive is also a community fest, we enjoyed the traditional social organized by <strong>JL Recrutement</strong> where the community meets up.</span></p>
<p><span>But the night didn&#8217;t end there for Team SensioLabs. Sticking to our tradition, we followed up with a <strong>team bonding session</strong>. This year&#8217;s agenda: an adrenaline-fueled <strong>go-karting</strong> </span>&#x1f3c1;<span> session alongside some <strong>bowling</strong>. There&#8217;s nothing better for strengthening team connections after two days of intensive tech conferencing !</span></p>
<p><img decoding="async" src="https://sensiolabs.com/f/c5d4143711038e04/1920x1280-sensiolabs-team-symfonylive-paris-2026.jpg" alt="SensioLabs team as a group at SymfonyLive Paris 2026"/></p>
<h2 id="Conclusion-A-New-Chapter-for-Symfony"><span>Conclusion: A New Chapter for Symfony</span></h2>
<p><span><strong>SymfonyLive Paris 2026 confirms that our ecosystem has never been more vibrant</strong>. Between AI and new interfaces, Symfony is entering an exciting new phase. <strong>Thank you </strong></span>&#x2764;<span><strong> to all of you—developers, companies, and contributors—for your warm reception and energy, which makes every edition a success</strong>. We&#8217;ll catch you very soon for new PHP adventures !</span></p>
</p></div>
<p></p>
<h2>PakarPBN</h2>
<p></p>
<p>A Private Blog Network (PBN) is a collection of websites that are controlled by a single individual or organization and used primarily to build backlinks to a “money site” in order to influence its ranking in search engines such as Google. The core idea behind a PBN is based on the importance of backlinks in Google’s ranking algorithm. Since Google views backlinks as signals of authority and trust, some website owners attempt to artificially create these signals through a controlled network of sites.</p>
<p>In a typical PBN setup, the owner acquires expired or aged domains that already have existing authority, backlinks, and history. These domains are rebuilt with new content and hosted separately, often using different IP addresses, hosting providers, themes, and ownership details to make them appear unrelated. Within the content published on these sites, links are strategically placed that point to the main website the owner wants to rank higher. By doing this, the owner attempts to pass link equity (also known as “link juice”) from the PBN sites to the target website.</p>
<p>The purpose of a PBN is to give the impression that the target website is naturally earning links from multiple independent sources. If done effectively, this can temporarily improve keyword rankings, increase organic visibility, and drive more traffic from search results.</p>
<p><a href="https://pakarpbn.com">Jasa Backlink</a><br />
<br /><a href="https://drivenime.com">Download Anime Batch</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://xtadalafix.com/symfonylive-paris-2026-ai-revolution-and-a-peak-reunion-for-team-sensiolabs/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>The Week in Charts (4/8/26)</title>
		<link>https://xtadalafix.com/the-week-in-charts-4-8-26/</link>
					<comments>https://xtadalafix.com/the-week-in-charts-4-8-26/#respond</comments>
		
		<dc:creator><![CDATA[xtadalafix]]></dc:creator>
		<pubDate>Thu, 09 Apr 2026 20:20:11 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://xtadalafix.com/the-week-in-charts-4-8-26/</guid>

					<description><![CDATA[View the video of this post here. &#x1f4ca; Weekly chart breakdowns. &#x1f30e;Big-picture market themes. &#x1f3af;Actionable insights. Subscribe to our YouTube channel HERE to separate the signal from the noise. The most important charts and themes in markets and investing… 1) What Happens When Volatility Spikes? One year ago during the tariff turmoil, the S&#38;P 500 fell [&#8230;]]]></description>
										<content:encoded><![CDATA[<div>
<p>View the <strong>video of this post here</strong>.</p>
<p><iframe loading="lazy" title="What Happens When Volatility Spikes? | The Week in Charts (4/2/26) | Charlie Bilello" width="640" height="360" src="https://www.youtube.com/embed/Nk1CcJrS0wA?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<p>&#x1f4ca; Weekly chart breakdowns.</p>
<p>&#x1f30e;Big-picture market themes.</p>
<p>&#x1f3af;Actionable insights.</p>
<p><strong><span style="text-decoration: underline;">Subscribe to our YouTube channel HERE</span></strong> to separate the signal from the noise.</p>
<figure class="wp-block-image size-full"></figure>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<p><strong>The most important charts and themes in markets and investing</strong>…</p>
<p><strong>1) What Happens When Volatility Spikes?</strong></p>
<p>One year ago during the tariff turmoil, the S&amp;P 500 fell 12% over four trading days, the biggest crash since March 2020 during the covid crisis. At the same time, we saw one of the biggest volatility spikes ever, with the $VIX closing above 50.</p>
<p>What has transpired since then?</p>
<p>The S&amp;P 500 has rallied 38%, adding to the list of times where it paid to be greedy when others were fearful.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="580" height="424" src="https://bilello.blog/wp-content/uploads/2026/04/SP-500-4-day-decline-4-8-26.png" alt="" class="wp-image-16357" srcset="https://bilello.blog/wp-content/uploads/2026/04/SP-500-4-day-decline-4-8-26.png 580w, https://bilello.blog/wp-content/uploads/2026/04/SP-500-4-day-decline-4-8-26-300x219.png 300w" sizes="auto, (max-width: 580px) 100vw, 580px"/></figure>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="803" height="892" src="https://bilello.blog/wp-content/uploads/2026/04/vix-above-50-4-8-26.png" alt="" class="wp-image-16356" srcset="https://bilello.blog/wp-content/uploads/2026/04/vix-above-50-4-8-26.png 803w, https://bilello.blog/wp-content/uploads/2026/04/vix-above-50-4-8-26-270x300.png 270w, https://bilello.blog/wp-content/uploads/2026/04/vix-above-50-4-8-26-768x853.png 768w" sizes="auto, (max-width: 803px) 100vw, 803px"/></figure>
<p>The closing high for the $VIX this year seems calm by comparison at a level of 31 on March 27.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="835" height="557" src="https://bilello.blog/wp-content/uploads/2026/04/vix-march-spike-2026.png" alt="" class="wp-image-16345" srcset="https://bilello.blog/wp-content/uploads/2026/04/vix-march-spike-2026.png 835w, https://bilello.blog/wp-content/uploads/2026/04/vix-march-spike-2026-300x200.png 300w, https://bilello.blog/wp-content/uploads/2026/04/vix-march-spike-2026-768x512.png 768w" sizes="auto, (max-width: 835px) 100vw, 835px"/></figure>
<p>While not nearly as extreme as last year, this was still in highest 10% of historical $VIX readings.</p>
<p>What has happened in the past following similar levels of volatility?</p>
<p>Above-average forward returns for the S&amp;P 500 over the next 1-5 years.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="733" height="493" src="https://bilello.blog/wp-content/uploads/2026/04/highest-10-of-vix-levels-and-future-returns.png" alt="" class="wp-image-16347" srcset="https://bilello.blog/wp-content/uploads/2026/04/highest-10-of-vix-levels-and-future-returns.png 733w, https://bilello.blog/wp-content/uploads/2026/04/highest-10-of-vix-levels-and-future-returns-300x202.png 300w" sizes="auto, (max-width: 733px) 100vw, 733px"/></figure>
<p>Does that mean the S&amp;P 500 will definitely be higher a year from now? No, there are no guarantees in markets, only probabilities. But the higher the volatility index spikes, the higher the odds of a strong positive return going forward.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="879" height="526" src="https://bilello.blog/wp-content/uploads/2026/04/vix-levels-and-forward-returns-3-31-26-1.png" alt="" class="wp-image-16350" srcset="https://bilello.blog/wp-content/uploads/2026/04/vix-levels-and-forward-returns-3-31-26-1.png 879w, https://bilello.blog/wp-content/uploads/2026/04/vix-levels-and-forward-returns-3-31-26-1-300x180.png 300w, https://bilello.blog/wp-content/uploads/2026/04/vix-levels-and-forward-returns-3-31-26-1-768x460.png 768w" sizes="auto, (max-width: 879px) 100vw, 879px"/></figure>
<p><strong>2) The Longest Correction Since 2022</strong></p>
<p>At its low on March 30, the S&amp;P 500 was down 9.8% from its January peak. This is the biggest correction since the tariff turmoil last April and the longest (61 days) since the 2022 bear market.</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="731" src="https://bilello.blog/wp-content/uploads/2026/04/correction-history-updated-3-30-26-1-1024x731.png" alt="" class="wp-image-16349" srcset="https://bilello.blog/wp-content/uploads/2026/04/correction-history-updated-3-30-26-1-1024x731.png 1024w, https://bilello.blog/wp-content/uploads/2026/04/correction-history-updated-3-30-26-1-300x214.png 300w, https://bilello.blog/wp-content/uploads/2026/04/correction-history-updated-3-30-26-1-768x548.png 768w, https://bilello.blog/wp-content/uploads/2026/04/correction-history-updated-3-30-26-1.png 1077w" sizes="auto, (max-width: 1024px) 100vw, 1024px"/></figure>
<p>The 7.3% decline in the first 60 trading days of this year was one of the worst starts to a year in history.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="450" height="546" src="https://bilello.blog/wp-content/uploads/2026/04/worst-starts-SP-3-30-26.png" alt="" class="wp-image-16351" srcset="https://bilello.blog/wp-content/uploads/2026/04/worst-starts-SP-3-30-26.png 450w, https://bilello.blog/wp-content/uploads/2026/04/worst-starts-SP-3-30-26-247x300.png 247w" sizes="auto, (max-width: 450px) 100vw, 450px"/></figure>
<p><strong>3) A Repeat of 2025?</strong></p>
<p>But as we saw in 2025, a bad start to a year doesn’t necessarily mean a bad finish.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="752" height="448" src="https://bilello.blog/wp-content/uploads/2026/04/SP-2026-vs.-2025-4-8-26-1.png" alt="" class="wp-image-16353" srcset="https://bilello.blog/wp-content/uploads/2026/04/SP-2026-vs.-2025-4-8-26-1.png 752w, https://bilello.blog/wp-content/uploads/2026/04/SP-2026-vs.-2025-4-8-26-1-300x179.png 300w" sizes="auto, (max-width: 752px) 100vw, 752px"/></figure>
<p>The S&amp;P 500 has already rallied more than 7% from its March 30 low and is now down less than 1% on the year. At the same point in 2025, the S&amp;P 500 was down 15% before staging its epic comeback to end the year up 18%.</p>
<p>What’s driving the market higher?</p>
<p>Hopes of a resolution to the Iran war, with a 14-day ceasefire now in place. The 2.5% surge in today’s trading marked the 5th biggest gain during President Trump’s second term.</p>
<p>What did the top 8 days all have in common?</p>
<p>They were all so-called “TACO” trade rallies, with sharp reversals from the President on Tariffs driving the biggest gains in 2025 and reversals on the Iran War driving gains in 2026.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="851" height="619" src="https://bilello.blog/wp-content/uploads/2026/04/taco-rallies-4-8-26.png" alt="" class="wp-image-16355" srcset="https://bilello.blog/wp-content/uploads/2026/04/taco-rallies-4-8-26.png 851w, https://bilello.blog/wp-content/uploads/2026/04/taco-rallies-4-8-26-300x218.png 300w, https://bilello.blog/wp-content/uploads/2026/04/taco-rallies-4-8-26-768x559.png 768w" sizes="auto, (max-width: 851px) 100vw, 851px"/></figure>
<p><strong>4) The Inflationary Spike</strong> <strong>Is Already Here</strong></p>
<p>When will the war end and when will the Strait of Hormuz return to normal levels of traffic?</p>
<p>We don’t know the answer to either question which makes forecasting future inflation rates even more difficult than usual.</p>
<p>The positive scenario: the ceasefire endures and the war comes to an end this month with the Strait of Hormuz resuming normal traffic by May.</p>
<p>The negative scenario: the ceasefire is broken and the war escalates, with prices of Crude Oil and other commodities remaining elevated or continuing to spike higher.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="822" height="513" src="https://bilello.blog/wp-content/uploads/2026/04/price-increases-start-of-iran-war-4-4-26.png" alt="" class="wp-image-16359" srcset="https://bilello.blog/wp-content/uploads/2026/04/price-increases-start-of-iran-war-4-4-26.png 822w, https://bilello.blog/wp-content/uploads/2026/04/price-increases-start-of-iran-war-4-4-26-300x187.png 300w, https://bilello.blog/wp-content/uploads/2026/04/price-increases-start-of-iran-war-4-4-26-768x479.png 768w" sizes="auto, (max-width: 822px) 100vw, 822px"/></figure>
<p>Regardless of what happens next, inflation is already on the rise. We get the first read on that this Friday (4/10) with the March CPI report.</p>
<p>What is it expected to show?</p>
<p>An increase of 3.25% according to the Cleveland Fed, up from a 2.4% increase in February.</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="207" src="https://bilello.blog/wp-content/uploads/2026/04/image-3-1024x207.png" alt="" class="wp-image-16358" srcset="https://bilello.blog/wp-content/uploads/2026/04/image-3-1024x207.png 1024w, https://bilello.blog/wp-content/uploads/2026/04/image-3-300x61.png 300w, https://bilello.blog/wp-content/uploads/2026/04/image-3-768x155.png 768w, https://bilello.blog/wp-content/uploads/2026/04/image-3.png 1166w" sizes="auto, (max-width: 1024px) 100vw, 1024px"/></figure>
<p>Gas prices in the US have now risen to $4.16 per gallon, their highest level since August 2022. The 40% increase over the past five weeks is the biggest 5-week spike on record.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="929" height="330" src="https://bilello.blog/wp-content/uploads/2026/04/image-4.png" alt="" class="wp-image-16360" srcset="https://bilello.blog/wp-content/uploads/2026/04/image-4.png 929w, https://bilello.blog/wp-content/uploads/2026/04/image-4-300x107.png 300w, https://bilello.blog/wp-content/uploads/2026/04/image-4-768x273.png 768w" sizes="auto, (max-width: 929px) 100vw, 929px"/></figure>
<p>Fertilizer prices are up 52% YoY to their highest level since May 2022. This is expected to drive up food prices in the coming weeks/months.</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="303" src="https://bilello.blog/wp-content/uploads/2026/04/fertilizer-prices-4-3-26-1024x303.png" alt="" class="wp-image-16361" srcset="https://bilello.blog/wp-content/uploads/2026/04/fertilizer-prices-4-3-26-1024x303.png 1024w, https://bilello.blog/wp-content/uploads/2026/04/fertilizer-prices-4-3-26-300x89.png 300w, https://bilello.blog/wp-content/uploads/2026/04/fertilizer-prices-4-3-26-768x228.png 768w, https://bilello.blog/wp-content/uploads/2026/04/fertilizer-prices-4-3-26.png 1357w" sizes="auto, (max-width: 1024px) 100vw, 1024px"/></figure>
<p><strong>5) No Chance of a Rate Cut in April</strong></p>
<p>The higher levels of inflation are expected to keep the Fed on hold when it meets again on April 29. There’s a 98% chance of the Fed doing nothing (holding rates at 3.50-3.75%) and a 2% chance of a rate hike (to 3.75%-4.00%). The longer inflation stays above 3%, the more pressure the Fed will be under to consider hiking rates again.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="956" height="521" src="https://bilello.blog/wp-content/uploads/2026/04/image-5.png" alt="" class="wp-image-16362" srcset="https://bilello.blog/wp-content/uploads/2026/04/image-5.png 956w, https://bilello.blog/wp-content/uploads/2026/04/image-5-300x163.png 300w, https://bilello.blog/wp-content/uploads/2026/04/image-5-768x419.png 768w" sizes="auto, (max-width: 956px) 100vw, 956px"/></figure>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<p>And that’s it for this week. Thanks for reading!</p>
<p>Every week I do a video breaking down the most important charts and themes in markets and investing. <strong>Subscribe to our YouTube channel HERE</strong> for the latest content.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="985" height="713" src="https://bilello.blog/wp-content/uploads/2026/04/SP-max-drawdown-intra-year-4-8-26.png" alt="" class="wp-image-16367" srcset="https://bilello.blog/wp-content/uploads/2026/04/SP-max-drawdown-intra-year-4-8-26.png 985w, https://bilello.blog/wp-content/uploads/2026/04/SP-max-drawdown-intra-year-4-8-26-300x217.png 300w, https://bilello.blog/wp-content/uploads/2026/04/SP-max-drawdown-intra-year-4-8-26-768x556.png 768w" sizes="auto, (max-width: 985px) 100vw, 985px"/></figure>
<p>Disclaimer: All information provided is for educational purposes only and does not constitute investment, legal or tax advice, or an offer to buy or sell any security. Read our full disclosures here.</p>
</div>
<p></p>
<h2>PakarPBN</h2>
<p></p>
<p>A Private Blog Network (PBN) is a collection of websites that are controlled by a single individual or organization and used primarily to build backlinks to a “money site” in order to influence its ranking in search engines such as Google. The core idea behind a PBN is based on the importance of backlinks in Google’s ranking algorithm. Since Google views backlinks as signals of authority and trust, some website owners attempt to artificially create these signals through a controlled network of sites.</p>
<p>In a typical PBN setup, the owner acquires expired or aged domains that already have existing authority, backlinks, and history. These domains are rebuilt with new content and hosted separately, often using different IP addresses, hosting providers, themes, and ownership details to make them appear unrelated. Within the content published on these sites, links are strategically placed that point to the main website the owner wants to rank higher. By doing this, the owner attempts to pass link equity (also known as “link juice”) from the PBN sites to the target website.</p>
<p>The purpose of a PBN is to give the impression that the target website is naturally earning links from multiple independent sources. If done effectively, this can temporarily improve keyword rankings, increase organic visibility, and drive more traffic from search results.</p>
<p><a href="https://pakarpbn.com">Jasa Backlink</a><br />
<br /><a href="https://drivenime.com">Download Anime Batch</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://xtadalafix.com/the-week-in-charts-4-8-26/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>AI Won’t Replace Your MSP, But Ignoring It Will</title>
		<link>https://xtadalafix.com/ai-wont-replace-your-msp-but-ignoring-it-will/</link>
					<comments>https://xtadalafix.com/ai-wont-replace-your-msp-but-ignoring-it-will/#respond</comments>
		
		<dc:creator><![CDATA[xtadalafix]]></dc:creator>
		<pubDate>Tue, 07 Apr 2026 20:11:03 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://xtadalafix.com/ai-wont-replace-your-msp-but-ignoring-it-will/</guid>

					<description><![CDATA[AI everywhere is not the answer There is no shortage of noise around AI right now. Every vendor is talking about it, every customer is hearing about it, and most MSPs are trying to figure out what they are actually supposed to do about it. Here is where I would start: stop using AI and [&#8230;]]]></description>
										<content:encoded><![CDATA[<div>
<h2>AI everywhere is not the answer</h2>
<p>There is no shortage of noise around AI right now. Every vendor is talking about it, every customer is hearing about it, and most MSPs are trying to figure out what they are actually supposed to do about it.</p>
<p>Here is where I would start: stop using AI and automation as if they are the same thing. They are not, and that confusion is sending a lot of MSPs in the wrong direction.</p>
<h2>Automation has been here for years</h2>
<p>The most valuable automation in a well-run MSP is often not AI-driven at all. Automation efficiency gains come from integrating on work and platform alignment, not from adding new AI features on top of a fragmented environment. The results are cleaner workflows, tighter integrations, better use of APIs, and making the tools already in the stack work together more effectively. AI can be part of the picture, and in some cases, it is a powerful part. I’ve seen teams build automations where AI is approximately 30 to 40 percent of the solution, and the rest is APIs, integrations, and getting the stack to work together the way it should have in the first place. That is why AI itself is not the whole answer. It cannot fix pre-existing disconnected tools, bad workflows, or inefficiencies. If your platforms are not talking to each other, AI won’t magically clean that up; you still have to do the foundational work.</p>
<h2>Focus on outcomes, not the toolbox</h2>
<p>Ultimately, it’s about efficiency. Are tickets moving faster, are technicians getting time back, are repetitive clicks disappearing, are your systems working together in a way that creates measurable efficiency?</p>
<p>If the answer to most of those questions is no, then adding more AI tools is not the fix, because you need to get your operational foundation right first.</p>
<h2>Your tools need to talk to each other</h2>
<p>Most MSPs are already running platforms that could deliver more value if they were better connected, but the problem is fragmentation. Too many tools, too many vendors, too little integration. In that environment, efficiency problems hide in plain sight.</p>
<p>Before chasing every new AI announcement, take a hard look at the stack you have. If a tool does not integrate well with the rest of the environment, you should have a very good reason for keeping it.</p>
<h2>The hardest part is deciding where to start</h2>
<p>A lot of MSPs are not resisting AI because they do not believe in it, they are hesitating because the volume of noise makes it hard to know where to begin. Do you start by helping customers adopt new tools, improving your own internal operations, training your team, or consolidating your stack?</p>
<p>Those are legitimate questions, but uncertainty cannot become an excuse to stand still. The MSPs that make progress will be the ones that educate their teams, clean up their stack, choose tools that actually work together, and lean on partners that help them improve efficiency, reduce risk, and grow their margins.</p>
<h2>Education starts at home</h2>
<p>If your technicians and leaders cannot speak confidently about AI, automation, and workflow efficiency, it is going to be very hard to guide customers through the same conversations. Education has to start internally before it becomes a market advantage externally.</p>
<p>Nobody is going to do that work for you. MSPs need to invest in educating themselves and their teams. Use every resource available, bring in thought leaders, push your vendors to provide real enablement, and build a culture where learning is part of how you operate.</p>
<h2>Your customers are already using AI without you</h2>
<p>One of the biggest underappreciated risks right now is that customers are adopting AI inside their own environments without MSP involvement or visibility. Teams are spinning up tools, building workflows, and making decisions that have real security and governance implications, and many MSPs have no idea it is happening.</p>
<p>Shadow IT has always existed, but AI has made it much easier and much faster. MSPs that assume they still control the pace of technology adoption in their customer environments will be caught off guard.</p>
<h2>Know the difference between a vendor and a partner</h2>
<p>A vendor sells you products. A partner helps you grow, improve efficiency, reduce risk, and build capability over time.</p>
<p>In an AI-heavy market, MSPs need more than features. They need enablement, education, resources, and guidance that help them make smarter decisions for their own operations and for their customers. If your so-called partners are not helping you do that, you should be asking harder questions.</p>
<h2>Cautious adoption is the right mindset</h2>
<p>MSPs should stop being afraid to join business-level conversations with customers about change. Customers do not want to be left alone to sort this out. They need help understanding where automation can create leverage, where AI introduces risk, and how to approach both without creating more problems than they solve.</p>
<p>At the same time, caution still matters. AI can create real business risk when it is misused, misunderstood, or deployed without enough visibility. MSPs still need a human in the loop for judgment in areas where a bad decision can create security, operational, or customer risk. The right move is thoughtful adoption with clear outcomes, stronger internal knowledge, and a healthy respect for the risks.</p>
<p>Automation and AI can absolutely give time back to technicians, improve service delivery, and create room for higher-value work. But the MSPs that benefit most will be the ones that stay grounded in outcomes, educate their teams, and guide customers through change with knowledge.</p>
<p>This article by Paul Redding, head of MSP partnerships at NinjaOne, was originally published on The MSP Summit and is reproduced here with permission.</p>
</div>
<p><script id="meta-pixel" type="text/javascript" class="optanon-category-C0004"> window.addEventListener('load', () => { ! function(f, b, e, v, n, t, s) { if (f.fbq) return; n = f.fbq = function() { n.callMethod ? n.callMethod.apply(n, arguments) : n.queue.push(arguments) }; if (!f._fbq) f._fbq = n; n.push = n; n.loaded = !0; n.version = '2.0'; n.queue = []; t = b.createElement(e); t.async = !0; t.src = v; s = b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t, s) }(window, document, 'script', ' fbq('init', '148315452373934'); fbq('track', 'PageView'); var currentURL = window.location.href; if (currentURL.indexOf('thankyou') !== -1 || currentURL.indexOf('thank-you') !== -1) { fbq('track', 'Lead'); } }); </script><br />
</p>
<h2>PakarPBN</h2>
<p></p>
<p>A Private Blog Network (PBN) is a collection of websites that are controlled by a single individual or organization and used primarily to build backlinks to a “money site” in order to influence its ranking in search engines such as Google. The core idea behind a PBN is based on the importance of backlinks in Google’s ranking algorithm. Since Google views backlinks as signals of authority and trust, some website owners attempt to artificially create these signals through a controlled network of sites.</p>
<p>In a typical PBN setup, the owner acquires expired or aged domains that already have existing authority, backlinks, and history. These domains are rebuilt with new content and hosted separately, often using different IP addresses, hosting providers, themes, and ownership details to make them appear unrelated. Within the content published on these sites, links are strategically placed that point to the main website the owner wants to rank higher. By doing this, the owner attempts to pass link equity (also known as “link juice”) from the PBN sites to the target website.</p>
<p>The purpose of a PBN is to give the impression that the target website is naturally earning links from multiple independent sources. If done effectively, this can temporarily improve keyword rankings, increase organic visibility, and drive more traffic from search results.</p>
<p><a href="https://pakarpbn.com">Jasa Backlink</a><br />
<br /><a href="https://drivenime.com">Download Anime Batch</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://xtadalafix.com/ai-wont-replace-your-msp-but-ignoring-it-will/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
