diff --git a/.config/newsboat/my_urls b/.config/newsboat/my_urls index 80a60b52..3069b4fe 100644 --- a/.config/newsboat/my_urls +++ b/.config/newsboat/my_urls @@ -29,3 +29,4 @@ file://./rss/json_schema.xml file://./rss/brett_langdon.xml file://./rss/corecursive.rss file://./rss/1Upsmanship.rss +file://./rss/chris_titus_tech.xml diff --git a/.config/newsboat/rss/chris_titus_tech.xml b/.config/newsboat/rss/chris_titus_tech.xml new file mode 100644 index 00000000..dbba7388 --- /dev/null +++ b/.config/newsboat/rss/chris_titus_tech.xml @@ -0,0 +1,11628 @@ + + + + Chris Titus Tech | Tech Content Creator + https://christitus.com/ + Recent content on Chris Titus Tech | Tech Content Creator + Hugo -- gohugo.io + Wed, 08 Feb 2023 00:00:00 +0000 + + Im Sorry Netlify + https://christitus.com/im-sorry-netlify/ + Wed, 08 Feb 2023 00:00:00 +0000 + + https://christitus.com/im-sorry-netlify/ + <p>I&rsquo;ve used Netlify for years on my website and it&rsquo;s a fantastic service! As I&rsquo;ve grown it&rsquo;s becoming unaffordable. I submitted a support request and this is what happened&hellip;</p> +<h2 id="excess-bandwidth">Excess Bandwidth</h2> +<p><img src="https://christitus.com/images/2023/im-sorry-netlify/intro.png" alt=""></p> +<p><img src="https://christitus.com/images/2023/im-sorry-netlify/graph.png" alt=""></p> +<p>The statistics on the website have grown with data usage. More Users = More Bandwidth Used. At this rate of growth I&rsquo;m going to be spending well over $100 a month in bandwidth usage. Don&rsquo;t get me wrong for starting a website, Netlify limits won&rsquo;t be a problem. Heck, for the past year I had a 1TB of bandwidth per month for $19! The downside? Over 1TB it starts getting REALLY EXPENSIVE, every 100GB after that is $55! It isn&rsquo;t sustainable.</p> +<h2 id="the-switch">The Switch</h2> +<p>There are many competitors to Netlify launching competing services, but one in particular caught my eye. Cloudflare launched it&rsquo;s &ldquo;Pages&rdquo; service that hooks in with GitHub in 2020. The free tier even gives you UNLIMITED bandwidth! Having used Cloudflare extensively for DNS and DDoS setups in business this is a no brainer. The best part? Analytics are also free!</p> +<p><img src="https://christitus.com/images/2023/im-sorry-netlify/cloudflare.png" alt=""></p> +<h2 id="the-experience">The Experience</h2> +<p>I setup pages and click &ldquo;Connect to GitHub&rdquo; then selected my existing Netlify website to see if it could build the HUGO site. FAILURE.</p> +<p>The stock hugo instance is v0.50 which is old (Netlify does the same thing) so I added an Environmental Variable. Fixed with the following:</p> +<p><img src="https://christitus.com/images/2023/im-sorry-netlify/hugo-variable.png" alt=""></p> +<p>The other downside? Netlify redirect rules do NOT apply. Cloudflare takes a different approach with Page Rules. This might get expensive for anyone doing a LOT of redirects, as you only get 20 rules for free or pro plan.</p> +<p><img src="https://christitus.com/images/2023/im-sorry-netlify/rules.png" alt=""></p> +<p>Overall, I&rsquo;m pretty darn happy with Cloudflare.</p> +<p>They also have a bunch of optimization rules, DDoS prevention, and more, but its about on par with Netlify and haven&rsquo;t noticed any speed or optimization difference.</p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/Cfr4YNbKrB8" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Hardest Game to Play on Steamdeck + https://christitus.com/hardest-game-to-play-on-steamdeck/ + Mon, 06 Feb 2023 00:00:00 +0000 + + https://christitus.com/hardest-game-to-play-on-steamdeck/ + <p>Most games work great on Steamdeck, but Final Fantasy XI is one that doesn&rsquo;t. It requires dotnet, injection of 3rd party tool, and other modifications to make it playable.</p> +<h2 id="launcher-problems">Launcher Problems</h2> +<p>PlayOnline has a TON of problems, as do many other games with independent launchers. This is complicated even more with another tool that makes gearswaps, adds minimaps, and other quality of life tools that aren&rsquo;t in the vanilla game.</p> +<h3 id="workarounds">Workarounds</h3> +<p>Multiple launchers are the kiss of death for most emulation and compatibility layers. To get around this, we need to bypass launchers.</p> +<p>Steam has some fantastic bypass arguments for a LOT of games. Example: Cyberpunk 2077 (Set Launch Options) <code>--launcher-skip -skipStartScreen</code></p> +<p>There is also modding the game files themselves to bypass intro movies and other problematic launches. For FFXI we need to do this.</p> +<h2 id="setting-up-the-environment">Setting up the Environment</h2> +<p>Wine bottles are folders that contain all the operating variables. These folders can be anywhere when using WINE, but for the steamdeck I like using bottles flatpak which isolates them to <code>~/.var/app/com.usebottles.bottles/data/bottles</code>. You&rsquo;d be shocked how far you can get with the stock &ldquo;Gaming&rdquo; bottle.</p> +<p>Bottle Flatpak Install</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">flatpak install flathub com.usebottles.bottles +</span></span></code></pre></div><p><img src="https://christitus.com/images/2023/hardest-game-to-play-on-steamdeck/gaming-bottle.png" alt=""></p> +<p>Set Launch Options</p> +<p><img src="https://christitus.com/images/2023/hardest-game-to-play-on-steamdeck/launch-options.png" alt=""></p> +<p><strong>Bottles Bug: Nothing Happens when selection launch options</strong></p> +<p><img src="https://christitus.com/images/2023/hardest-game-to-play-on-steamdeck/bottle-bug.png" alt=""></p> +<p>If you run into this bug, then you need to manually edit the yml file at the root directory.</p> +<p>Change this section to include <code>arguments=''</code></p> +<p>Example:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">External_Programs: +</span></span><span class="line"><span class="cl"> f43fe6b6-29c6-49b4-88f8-dc724361f3d5: +</span></span><span class="line"><span class="cl"> arguments: horizonxi.ini &lt;-- Added Line +</span></span><span class="line"><span class="cl"> executable: Ashita-cli.exe +</span></span><span class="line"><span class="cl"> folder: /home/titus/Games/horizonxi/drive_c/HorizonXI/Game +</span></span></code></pre></div><p>After this line is added, you will now be able to use the launch options or just add the arguments you need directly in the yml file.</p> +<h3 id="ffxi-injection">FFXI Injection</h3> +<p>Using the new HorizonXI fan made server, we can see that it is using Ashita. Ashita/Windower were the main projects almost every FFXI player uses on PC. These days Ashita is by far my favorite as the lead developer, Atm0s, has been developing and re-writing it for more than 10 years. His dedication has made strides to the community and made HorizonXI launcher possible.</p> +<p>The Official Horizon XI Launcher is written in 2022 Visual C++ and those libraries aren&rsquo;t possible yet, at least to my knowledge. So how do we get the game files? Use Windows with Syncthing if you have another PC or just load up a VM and share the local folder.</p> +<p>Then add that folder in the the bottles directory so it has access to it, and the argument <code>horizonxi.ini</code> using the executable <code>Ashita-cli.exe</code> and we are almost done.</p> +<p>There are two modifications to make: Auto-Login and Controller Support for Steamdeck. The steamdeck uses an XInput (Xbox Style) controller scheme and autologin is just adding a few lines to the ini.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-v" data-lang="v"><span class="line"><span class="cl"><span class="p">[</span><span class="na">ashita</span><span class="err">.</span><span class="na">boot</span><span class="p">]</span> +</span></span><span class="line"><span class="cl"><span class="p">;</span> <span class="nc">Retail</span> <span class="nc">Server</span> <span class="nc">Usage</span> +</span></span><span class="line"><span class="cl"><span class="nv">file</span> <span class="o">=</span> <span class="p">.</span><span class="err">\\</span><span class="nv">bootloader</span><span class="err">\\</span><span class="nv">horizon</span><span class="o">-</span><span class="nv">loader</span><span class="p">.</span><span class="nv">exe</span> +</span></span><span class="line"><span class="cl"><span class="nv">command</span> <span class="o">=</span> <span class="o">--</span><span class="nv">server</span> <span class="nv">betabox</span><span class="p">.</span><span class="nv">horizonxi</span><span class="p">.</span><span class="nv">com</span> <span class="o">--</span><span class="nv">user</span> <span class="nc">USERNAMEHERE</span> <span class="o">--</span><span class="nv">pass</span> <span class="nc">PASSWORDHERE</span> +</span></span><span class="line"><span class="cl"><span class="nv">gamemodule</span> <span class="o">=</span> <span class="nv">ffximain</span><span class="p">.</span><span class="nv">dll</span> +</span></span><span class="line"><span class="cl"><span class="nv">script</span> <span class="o">=</span> <span class="nv">default</span><span class="p">.</span><span class="nv">txt</span> +</span></span></code></pre></div><p>Gamepad config</p> +<p>Change the following lines to mimic these at the end of <code>[ffxi.registry]</code> entry.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">padmode000 = 1,0,0,0,0,1 +</span></span><span class="line"><span class="cl">padsin000 = 8,9,13,12,10,0,1,3,2,15,-1,-1,14,-33,-33,32,32,-36,-36,35,35,6,7,5,4,16,-1 +</span></span></code></pre></div><p>Now when you run the FFXI Bottle it will auto launch into the game WITHOUT ANY LAUNCHER!</p> +<p>_Note: My personal setup is using syncthing on my windows machine and automatically syncing the files directly in the bottle.</p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/DCwGENR5scE" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Youtube Comment Scams + https://christitus.com/youtube-telegram-scams/ + Fri, 03 Feb 2023 00:00:00 +0000 + + https://christitus.com/youtube-telegram-scams/ + <p>YouTube telegram and whatsapp scams are everywhere in the comment section of every YouTube channel.</p> +<p><img src="https://christitus.com/images/2023/youtube-telegram-scams/scam1.png" alt=""></p> +<h2 id="how-the-scam-works">How the scam works</h2> +<p>They impersonate the creator of the channel in a giveaway scam. The end result is to extract money via shipping fees.</p> +<p>Red Flags:</p> +<ul> +<li>Never from an official email or the same name as creator</li> +<li>No creator uses whatsapp or telegram for communication. We&rsquo;d just leave our email in the comment itself. <em>Note: scammers can&rsquo;t do this because it would be caught by spam filters</em></li> +<li>Shipping fees are high</li> +<li>I don&rsquo;t know of a YouTuber that has EVER charged fans for shipping.</li> +<li>Invoice isn&rsquo;t from YouTuber and they request &ldquo;Friends and Family&rdquo; for faster processing because it is NON-REFUNDABLE.</li> +<li>Giveaways are rare and dangerous for the YouTuber. An example of this is &ldquo;The Linux Experiment&rdquo; did a Tuxedo computer giveaway and the entire channel was deleted by YouTube. I will never do a giveaway because of these dangers.</li> +</ul> +<h2 id="do-people-fall-for-these-scams">Do people fall for these scams?</h2> +<p>Yes - Here are screenshots from a victim that contacted me</p> +<p><img src="https://christitus.com/images/2023/youtube-telegram-scams/victim1.png" alt=""></p> +<p>Amount lost - Notice that it was sent via &ldquo;Friends and Family&rdquo; Gift that is NON-REFUNDABLE</p> +<p><img src="https://christitus.com/images/2023/youtube-telegram-scams/victim2.png" alt=""></p> +<p>The trick to give you to gift it? Faster Processing via bogus invoice.</p> +<p><img src="https://christitus.com/images/2023/youtube-telegram-scams/bogus-invoice.png" alt=""></p> +<p>Folks get caught up in the excitement of winning something and ignore these red flags. Emotions are how we all make bad decisions and why you shouldn&rsquo;t rush into these scenarios.</p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/L1QM4blK-54" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Fix Windows Network and Sharing + https://christitus.com/windows-network-and-sharing/ + Wed, 01 Feb 2023 00:00:00 +0000 + + https://christitus.com/windows-network-and-sharing/ + <p>Fixing problems with windows file sharing using the following methods.</p> +<p><em>Note: Check ALL these methods as anyone of them can cause file sharing to fail!</em></p> +<h2 id="network-and-file-sharing">Network and File Sharing</h2> +<p>Launch old control panel with <code>Start -&gt; Run -&gt; control</code> or <code>Windows Key + R</code> and select Network and Sharing Center.</p> +<p>Follow these Steps from Network and Sharing Center</p> +<ul> +<li>Select Advanced Sharing Settings</li> +<li>Turn on network discovery and check Turn on automatic setup of network connected devices.</li> +<li>Turn on file and printer sharing</li> +<li>Optional: If you don&rsquo;t want passwords click &ldquo;All Networks and turn off Password protected sharing&rdquo;</li> +</ul> +<h2 id="check-if-network-is-classified-public">Check if Network is classified Public</h2> +<p>If your network is classified as Public it will NOT allow you to share files or printers! Check it with powershell:</p> +<ul> +<li>Launch Powershell (right-click start menu and select powershell with admin or terminal with admin)</li> +<li>Type <code>Get-NetConnectionProfile</code></li> +<li>Verify NetworkCategory is PRIVATE!</li> +<li>If it is Public Type <code>Set-NetConnectionProfile -Name &quot;Network #&quot; -NetworkCategory Private</code></li> +</ul> +<p><em>Note: Change Network # to the NAME of your Network from <code>Get-NetConnectionProfile</code></em></p> +<h2 id="share-your-folders">Share your folders</h2> +<p>Right-click any folder and select &ldquo;give access to&rdquo; and select your login user. On new Windows 11/10 systems this is often your microsoft account (<a href="mailto:user@outlook.com">user@outlook.com</a>). If you turned off password sharing and want EVERYONE to see those files then type &ldquo;Everyone&rdquo; and give access to them.</p> +<p>Another option is to right-click the folder and select properties. Then select the sharing tab and give access through there.</p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/X4Ba7wYlbMA" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Script for Optimizing Images + https://christitus.com/script-for-optimizing-images/ + Mon, 30 Jan 2023 00:00:00 +0000 + + https://christitus.com/script-for-optimizing-images/ + <p>Optimizing images is easy with this script! Img-optimizer + ImageMagicK leverages multiple CLI tools to give the best results.</p> +<h2 id="dependencies">Dependencies</h2> +<ul> +<li>imagemagick</li> +<li>optipng</li> +<li>jpegoptim</li> +</ul> +<p>Install script</p> +<h3 id="debian-command">Debian Command</h3> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo apt install jpegoptim optipng imagemagick webp -y +</span></span><span class="line"><span class="cl">git clone https://github.com/VirtuBox/img-optimize.git $HOME/.img-optimize +</span></span><span class="line"><span class="cl">sudo ln -s $HOME/.img-optimize/optimize.sh /usr/local/bin/img-optimize +</span></span><span class="line"><span class="cl">sudo chmod +x /usr/local/bin/img-optimize +</span></span></code></pre></div><h3 id="arch-command">Arch Command</h3> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">yay -S jpegoptim optipng imagemagick webp -y +</span></span><span class="line"><span class="cl">git clone https://github.com/VirtuBox/img-optimize.git $HOME/.img-optimize +</span></span><span class="line"><span class="cl">sudo ln -s $HOME/.img-optimize/optimize.sh /usr/local/bin/img-optimize +</span></span><span class="line"><span class="cl">sudo chmod +x /usr/local/bin/img-optimize +</span></span></code></pre></div><h2 id="my-custom-script">My Custom Script</h2> +<p>Change the variables for FOLDER, WIDTH, and HEIGHT.</p> +<p>Current script used on this website: <a href="https://raw.githubusercontent.com/ChrisTitusTech/website/master/content/images/opti">https://raw.githubusercontent.com/ChrisTitusTech/website/master/content/images/opti</a></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="cp">#!/bin/bash +</span></span></span><span class="line"><span class="cl"><span class="cp"></span><span class="c1"># Dependancies</span> +</span></span><span class="line"><span class="cl"><span class="c1"># - img-optimize - https://virtubox.github.io/img-optimize/</span> +</span></span><span class="line"><span class="cl"><span class="c1"># - imagemagick</span> +</span></span><span class="line"><span class="cl"><span class="c1"># - jpegoptim</span> +</span></span><span class="line"><span class="cl"><span class="c1"># - optipng</span> +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl"><span class="nv">FOLDER</span><span class="o">=</span><span class="s2">&#34;/home/titus/github/website/content/images&#34;</span> +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl"><span class="c1"># max width</span> +</span></span><span class="line"><span class="cl"><span class="nv">WIDTH</span><span class="o">=</span><span class="m">800</span> +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl"><span class="c1"># max height</span> +</span></span><span class="line"><span class="cl"><span class="nv">HEIGHT</span><span class="o">=</span><span class="m">600</span> +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl"><span class="c1">#resize png or jpg to either height or width, keeps proportions using imagemagick</span> +</span></span><span class="line"><span class="cl">find <span class="si">${</span><span class="nv">FOLDER</span><span class="si">}</span> -iname <span class="s1">&#39;*.jpg&#39;</span> -o -iname <span class="s1">&#39;*.png&#39;</span> -exec convert <span class="se">\{</span><span class="o">}</span> -verbose -resize <span class="nv">$WIDTHx$HEIGHT</span><span class="se">\&gt;</span> <span class="se">\{</span><span class="o">}</span> <span class="se">\;</span> +</span></span><span class="line"><span class="cl">img-optimize --std --path <span class="si">${</span><span class="nv">FOLDER</span><span class="si">}</span> +</span></span></code></pre></div><h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/Fq3HBk6swuQ" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Theming Windows With Rainmeter + https://christitus.com/theming-windows-with-rainmeter/ + Wed, 25 Jan 2023 00:00:00 +0000 + + https://christitus.com/theming-windows-with-rainmeter/ + <p>Rainmeter has some amazing themes, but this shows you methods to get a TRULY different look!</p> +<h2 id="removing-the-taskbar">Removing the Taskbar</h2> +<p>The taskbar is often in the way of a clean looking desktop and we can remove it for those minimalists out there.</p> +<ul> +<li>Use NirCMD <a href="https://www.nirsoft.net/utils/nircmd.html">https://www.nirsoft.net/utils/nircmd.html</a></li> +<li>Download NirCMD <a href="https://www.nirsoft.net/utils/nircmd-x64.zip">https://www.nirsoft.net/utils/nircmd-x64.zip</a></li> +</ul> +<p>This command line tool allows us to modify Windows in ways that we normally aren&rsquo;t able to. Launch the <code>nircmd.exe</code> file and it will ask to copy itself to the Windows directory.</p> +<p><strong>Note: Auto-hide taskbar BEFORE removing it!</strong></p> +<p>Command to &ldquo;remove&rdquo; the taskbar</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">nircmd.exe win trans class Shell_TrayWnd 256 +</span></span></code></pre></div><p>Command to restore the taskbar</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">nircmd.exe win trans class Shell_TrayWnd 255 +</span></span></code></pre></div><h2 id="install-rainmeter">Install Rainmeter</h2> +<p>Official Site: <a href="https://www.rainmeter.net/">https://www.rainmeter.net/</a></p> +<p>Download and install from mainpage or use Winget (below).</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">winget install -e Rainmeter.Rainmeter +</span></span></code></pre></div><h2 id="rainmeter-skins">Rainmeter Skins</h2> +<p>There are multiple download sites for Rainmeter skins, but these are the two sites I use.</p> +<ul> +<li>VisualSkins <a href="https://visualskins.com/">https://visualskins.com/</a></li> +<li>Deviant Art <a href="https://www.deviantart.com/rainmeter">https://www.deviantart.com/rainmeter</a></li> +</ul> +<h2 id="using-rainmeter-skins">Using Rainmeter Skins</h2> +<p>After you download the skin that includes the <code>*.rmskin</code> file. You install it by opening it. <em>(Note: Some skins are inside zip files and require extraction of the rmskin file.)</em></p> +<p>Enable the components you want and edit the ini files to your needs.</p> +<h2 id="issues">Issues</h2> +<p>Rainmeter has been around since 2001! This means a lot of skins are out of date. A common bug I see with themes is they use the weather.com API which is no longer open. This means most of the weather widgets do NOT work! Keep this in mind when using old skins that haven&rsquo;t been updated in years.</p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/WROzWPK3iw8" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + My New Desktop Hyprland + https://christitus.com/my-new-desktop-hyprland/ + Mon, 23 Jan 2023 00:00:00 +0000 + + https://christitus.com/my-new-desktop-hyprland/ + <p>Hyprland is an amazing desktop that feels amazing. Here is my current setup that is being made.</p> +<p><em>Please Note: This is beta and not for a beginner. You WILL encounter bugs!</em></p> +<h1 id="the-desktop">The Desktop</h1> +<p><img src="https://github.com/ChrisTitusTech/hyprland-titus/raw/main/hyprland-titus.png" alt="Screenshot"></p> +<p>GitHub Project: <a href="https://github.com/ChrisTitusTech/hyprland-titus">https://github.com/ChrisTitusTech/hyprland-titus</a></p> +<h2 id="install">Install</h2> +<h3 id="yay">Yay</h3> +<p>Run as user NOT ROOT!</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">git clone https://aur.archlinux.org/yay-bin +</span></span><span class="line"><span class="cl">cd yay-bin +</span></span><span class="line"><span class="cl">makepkg -si +</span></span></code></pre></div><h3 id="packages">Packages</h3> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">yay -S hyprland-bin polkit-gnome ffmpeg neovim viewnior dunst rofi pavucontrol thunar starship wl-clipboard wf-recorder swaybg grimblast-git ffmpegthumbnailer tumbler playerctl noise-suppression-for-voice thunar-archive-plugin kitty waybar-hyprland wlogout swaylock-effects sddm-git nwg-look-bin nordic-theme papirus-icon-theme pamixer +</span></span></code></pre></div><h2 id="workarounds-that-need-to-be-addressed">Workarounds that need to be addressed</h2> +<ul> +<li>Recommend archinstall with Sway as desktop for base</li> +<li>SDDM-GIT is required or you will run into shutdown bugs and delays</li> +<li>SDDM needs to be configured for autologin (recommend using swaylock on start of script for security)</li> +</ul> +<h2 id="bugs">Bugs</h2> +<ul> +<li>Hyprland is still in beta (0.2) as of the creation of these dot files</li> +<li>Sometimes my RX5700XT goes to sleep and requires a reload, because it is stuck on black screen.</li> +</ul> +<h2 id="work-in-progress">Work In Progress</h2> +<ul> +<li><input disabled="" type="checkbox"> Help Popup with Hotkey</li> +<li><input disabled="" type="checkbox"> Wayland guide for nwg-look, wlr-randr, etc.</li> +<li><input disabled="" type="checkbox"> Synergy Workaround - Looking at waynergy or just using KVM</li> +<li><input disabled="" type="checkbox"> Gamescope Addition - Adding more parity with Steamdeck features</li> +<li><input disabled="" type="checkbox"> More Customizations for Waybar - Battery, Backlight, etc.</li> +<li><input disabled="" type="checkbox"> Auto-configuration - Long term goal</li> +</ul> +<h2 id="sources-used-making-these">Sources used making these</h2> +<ul> +<li>Official Hyprland Github <a href="https://github.com/hyprwm/Hyprland">https://github.com/hyprwm/Hyprland</a></li> +<li>Linux Mobiles Hyprland dot files <a href="https://github.com/linuxmobile/hyprland-dots">https://github.com/linuxmobile/hyprland-dots</a></li> +</ul> +<h2 id="4-hour-live-stream-attempt">4 Hour Live Stream Attempt</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/sDmLCBI9L4E" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/wNL6eIoksd8" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + How to Sync Local Files + https://christitus.com/sync-local-files/ + Fri, 20 Jan 2023 00:00:00 +0000 + + https://christitus.com/sync-local-files/ + <p>A guide over how to set up Syncthing for local sync only.</p> +<h2 id="things-you-need-to-know">Things you NEED to know</h2> +<p>Syncthing by defaults it will sync files through relays across the internet. This is useful when needing to grab a file while you are outside your network, but slow and can cause security issues. While the information is encrypted, it still poses a threat to some. Also, the slowdown is relaying that information outside the network even in a LAN transfer.</p> +<p>The following guide shows you how to make it sync only in a LAN environment. Note: This will make your files NOT sync when outside your own network!</p> +<h2 id="installing-syncthing">Installing Syncthing</h2> +<p>There is a cli service that you can install via syncthing. I prefer to take a GUI approach to the configuration as it helps when troubleshooting. Here are the following tools I recommend based on the operating system.</p> +<h3 id="windows-and-linux">Windows and Linux</h3> +<p>Syncthing-GTK is a proven companion I&rsquo;ve used with syncthing for years. It is open source and you can download the latest releases here: <a href="https://github.com/kozec/syncthing-gtk/releases">https://github.com/kozec/syncthing-gtk/releases</a></p> +<p>During the install process choose the default selections and manage via localhost.</p> +<p>Installing on Steamdeck? Checkout it&rsquo;s flatpak: <a href="https://flathub.org/apps/details/me.kozec.syncthingtk">https://flathub.org/apps/details/me.kozec.syncthingtk</a></p> +<h3 id="macos">MacOS</h3> +<p>Syncthing for MacOS is a great open source project @ <a href="https://github.com/syncthing/syncthing-macos">https://github.com/syncthing/syncthing-macos</a></p> +<p>Homebrew install method:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">brew install --cask syncthing +</span></span></code></pre></div><h2 id="configuration">Configuration</h2> +<p><img src="https://christitus.com/images/2023/sync-local-files/config.png" alt=""></p> +<p>With multiple syncthing clients you can connect one using &ldquo;Connect Remote Device&rdquo; this is what the server interface looks like.</p> +<p><img src="https://christitus.com/images/2023/sync-local-files/server.png" alt=""></p> +<p>On the other system it will prompt to connect the two.</p> +<p><img src="https://christitus.com/images/2023/sync-local-files/client.png" alt=""></p> +<p>I generally always have a main server that manages all the connects and hosts the share. You don&rsquo;t have to do this, but it&rsquo;s easier to manage. To start syncing -&gt; Create a folder -&gt; Edit Folder -&gt; Click Sharing Options -&gt; Check the other syncthing computers to share it to!</p> +<p><img src="https://christitus.com/images/2023/sync-local-files/share.png" alt=""></p> +<p>On the client computers click add and watch the sync happen. This is the final result of the sync:</p> +<p><img src="https://christitus.com/images/2023/sync-local-files/final-sync.png" alt=""></p> +<h3 id="disable-external-access">Disable External Access</h3> +<p><img src="https://christitus.com/images/2023/sync-local-files/settings.png" alt=""></p> +<p>This simple configuration will set everything to LAN only. Making sure anon usage and Global Discovery are disabled will work for most.</p> +<p>However, for a deeper dive for those security minded and configuration junkies, here is another tidbit. (Advanced Users Only)</p> +<ul> +<li>Sync Listen Address - This is where the incoming sync is and can be set to be IPv4 or a specific address if you want. It&rsquo;s a bit overkill but by default it runs on 22000. Adjusting this value isn&rsquo;t recommended and can cause headaches in a dynamic environment. Highly recommend using hostnames to resolve instead of IPs unless they are static!</li> +<li>GUI Listen Address - Syncthings web interface runs on port 8080 and typically only listens from localhost (local connections).</li> +</ul> +<h2 id="syncthing-backups">Syncthing Backups</h2> +<p>Here is Syncthing&rsquo;s wonderful backup system. I always use this for the times I delete something or need to recover from a bad sync. The options are: simple, trash can, staggered, and external. If you want basic backups, choose simple. Trash can is good for deleted files and often you want to grab an older version of an existing file when using sync. Personally, I do the overkill option of staggered versioning. This hold all the different version in a hour, day, week, month format til the end of the retention period. This will use a TON of space where the folder is synced from, so be CAREFUL!</p> +<p><img src="https://christitus.com/images/2023/sync-local-files/backup.png" alt=""></p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/dBVTedUWbfg" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Replace Windows Search + https://christitus.com/everything-toolbar/ + Wed, 18 Jan 2023 00:00:00 +0000 + + https://christitus.com/everything-toolbar/ + <p>Everything Search is faster, more efficient, and a better Windows Search. This guide shows you how to setup everything and a toolbar for quick access.</p> +<h2 id="installation">Installation</h2> +<p>Everything Search Official Download Site: <a href="https://www.voidtools.com/downloads/">https://www.voidtools.com/downloads/</a></p> +<p>Powershell Install:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">choco install Everything +</span></span></code></pre></div><p>OR</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">winget install voidtools.Everything +</span></span></code></pre></div><h3 id="everything-toolbar">Everything Toolbar</h3> +<p>Getting the right version of everything toolbar is important. Version 0.8+ (Currently Beta ONLY) is compatible with Windows 11 and The official everything toolbar version 0.7.4 or earlier will ONLY work with Windows 10.</p> +<p>Download the beta at: <a href="https://github.com/stnkl/EverythingToolbar/releases">https://github.com/stnkl/EverythingToolbar/releases</a></p> +<p>OR</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">winget install stnkl.EverythingToolbar.Beta +</span></span></code></pre></div><p>For earlier versions (Windows 10 ONLY)</p> +<p>Download the stable release at: <a href="https://github.com/stnkl/EverythingToolbar/releases">https://github.com/stnkl/EverythingToolbar/releases</a></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">choco install everythingtoolbar +</span></span></code></pre></div><p>OR</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">winget install stnkl.EverythingToolbar +</span></span></code></pre></div><h2 id="disable-windows-indexer">Disable Windows Indexer</h2> +<p>Easiest way to disable indexing and the performance hog that it is. Disable the service!</p> +<p>Open Run command: Right-click start button and select run</p> +<p><img src="https://christitus.com/images/2023/everything-toolbar/run.png" alt=""></p> +<p>Disable the Service by stopping and disabling it</p> +<p><img src="https://christitus.com/images/2023/everything-toolbar/service.png" alt=""></p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/6Xg-BRA3rgQ" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Steamdeck as a Desktop + https://christitus.com/steamdeck-as-a-desktop/ + Mon, 16 Jan 2023 00:00:00 +0000 + + https://christitus.com/steamdeck-as-a-desktop/ + <p>No, do NOT modify the system. This guide shows you how to retain the system while adding package management and the things you need to make the steamdeck your desktop!</p> +<h2 id="adding-nix-as-your-package-manager">Adding NIX as your Package Manager</h2> +<p>NIX is an amazing package manager and far better than the flatpak and other solutions I&rsquo;ve seen. We create a home directory called nix and map it&rsquo;s package manager to it, so on updates all our installed packages still work! Not familiar with NIX? Check out this article: <a href="https://christitus.com/nix-package-manager/">https://christitus.com/nix-package-manager/</a></p> +<h3 id="install-nix-on-steamdeck">Install NIX on Steamdeck</h3> +<p>You may need to make the system writeable with <code>steamos-readonly disable</code>, but <strong>DO NOT MODIFY EXISTING FILES!</strong>. When steam updates, you could lose your customizations! We will only be making new files.</p> +<p>Credit for this idea comes from <a href="https://determinate.systems/posts/nix-on-the-steam-deck#enabling-an-install">https://determinate.systems/posts/nix-on-the-steam-deck#enabling-an-install</a></p> +<p>Create <code>/etc/systemd/system/nix-directory.service</code></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">[Unit] +</span></span><span class="line"><span class="cl">Description=Create a `/nix` directory to be used for bind mounting +</span></span><span class="line"><span class="cl">PropagatesStopTo=nix-daemon.service +</span></span><span class="line"><span class="cl">PropagatesStopTo=nix.mount +</span></span><span class="line"><span class="cl">DefaultDependencies=no +</span></span><span class="line"><span class="cl">After=grub-recordfail.service +</span></span><span class="line"><span class="cl">After=steamos-finish-oobe-migration.service +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl">[Service] +</span></span><span class="line"><span class="cl">Type=oneshot +</span></span><span class="line"><span class="cl">ExecStart=steamos-readonly disable +</span></span><span class="line"><span class="cl">ExecStart=mkdir -vp /nix +</span></span><span class="line"><span class="cl">ExecStart=chmod -v 0755 /nix +</span></span><span class="line"><span class="cl">ExecStart=chown -v root /nix +</span></span><span class="line"><span class="cl">ExecStart=chgrp -v root /nix +</span></span><span class="line"><span class="cl">ExecStart=steamos-readonly enable +</span></span><span class="line"><span class="cl">ExecStop=steamos-readonly disable +</span></span><span class="line"><span class="cl">ExecStop=rmdir /nix +</span></span><span class="line"><span class="cl">ExecStop=steamos-readonly enable +</span></span><span class="line"><span class="cl">RemainAfterExit=true +</span></span></code></pre></div><p>Create <code>/etc/systemd/system/nix.mount</code></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">[Unit] +</span></span><span class="line"><span class="cl">Description=Mount `/home/nix` on `/nix` +</span></span><span class="line"><span class="cl">PropagatesStopTo=nix-daemon.service +</span></span><span class="line"><span class="cl">PropagatesStopTo=nix-directory.service +</span></span><span class="line"><span class="cl">After=nix-directory.service +</span></span><span class="line"><span class="cl">Requires=nix-directory.service +</span></span><span class="line"><span class="cl">ConditionPathIsDirectory=/nix +</span></span><span class="line"><span class="cl">DefaultDependencies=no +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl">[Mount] +</span></span><span class="line"><span class="cl">What=/home/nix +</span></span><span class="line"><span class="cl">Where=/nix +</span></span><span class="line"><span class="cl">Type=none +</span></span><span class="line"><span class="cl">DirectoryMode=0755 +</span></span><span class="line"><span class="cl">Options=bind +</span></span></code></pre></div><p>Create <code>/etc/systemd/system/ensure-symlinked-units-resolve.service</code></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">[Unit] +</span></span><span class="line"><span class="cl">Description=Ensure Nix related units which are symlinked resolve +</span></span><span class="line"><span class="cl">After=nix.mount +</span></span><span class="line"><span class="cl">Requires=nix-directory.service +</span></span><span class="line"><span class="cl">Requires=nix.mount +</span></span><span class="line"><span class="cl">PropagatesStopTo=nix-directory.service +</span></span><span class="line"><span class="cl">PropagatesStopTo=nix.mount +</span></span><span class="line"><span class="cl">DefaultDependencies=no +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl">[Service] +</span></span><span class="line"><span class="cl">Type=oneshot +</span></span><span class="line"><span class="cl">RemainAfterExit=yes +</span></span><span class="line"><span class="cl">ExecStart=/usr/bin/systemctl daemon-reload +</span></span><span class="line"><span class="cl">ExecStart=/usr/bin/systemctl restart --no-block sockets.target timers.target multi-user.target +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl">[Install] +</span></span><span class="line"><span class="cl">WantedBy=sysinit.target +</span></span></code></pre></div><p>Enable and start it all with:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo systemctl enable --now ensure-symlinked-units-resolve.service +</span></span></code></pre></div><p>Install NIX</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sh &lt;(curl -L https://nixos.org/nix/install) --daemon +</span></span></code></pre></div><h3 id="searching-and-installing-packages">Searching and Installing Packages</h3> +<p>Search for packages @ <a href="https://search.nixos.org/packages">https://search.nixos.org/packages</a> Or you can use this from terminal: <code>nix search nixpkgs packagename</code></p> +<p><em>Note: Look under nix-env and &ldquo;On Non NixOS&rdquo;</em></p> +<p>Install packages with <code>nix-env -iA nixpkgs.packagename</code></p> +<h2 id="improving-performance">Improving Performance</h2> +<p>Change Swappiness 100 to 10 (Reduces use of Swap file)</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">echo &#34;vm.swappiness=10&#34; | sudo tee /etc/sysctl.d/99-custom-swappiness.conf +</span></span></code></pre></div><p>Change Swap File Size from 1G to 10G (<em>Note:This will take up more space!</em>)</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">echo 0 +</span></span><span class="line"><span class="cl">echo &#34;# Disabling swap...&#34; +</span></span><span class="line"><span class="cl">sudo swapoff -a +</span></span><span class="line"><span class="cl">echo 25 +</span></span><span class="line"><span class="cl">echo &#34;# Creating new 8 GB swapfile (be patient, this can take between 10 seconds and 30 minutes)...&#34; +</span></span><span class="line"><span class="cl">sudo dd if=/dev/zero of=/home/swapfile bs=1G count=&#34;8&#34; status=none +</span></span><span class="line"><span class="cl">echo 50 +</span></span><span class="line"><span class="cl">echo &#34;# Setting permissions on swapfile...&#34; +</span></span><span class="line"><span class="cl">sudo chmod 0600 /home/swapfile +</span></span><span class="line"><span class="cl">echo 75 +</span></span><span class="line"><span class="cl">echo &#34;# Initializing new swapfile...&#34; +</span></span><span class="line"><span class="cl">sudo mkswap /home/swapfile +</span></span><span class="line"><span class="cl">sudo swapon /home/swapfile +</span></span></code></pre></div><h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/ttOs5iWgNzk" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Dism++ + https://christitus.com/dism-plus/ + Fri, 13 Jan 2023 00:00:00 +0000 + + https://christitus.com/dism-plus/ + <p>Dism++ enables users to modify Windows images before installing them, as well as providing tools to address and repair common issues like missing or corrupted files.</p> +<h2 id="before-using">Before Using</h2> +<p>DISM++ is an open source github project located @ <a href="https://github.com/Chuyu-Team/Dism-Multi-language/tree/master/www.chuyu.me">https://github.com/Chuyu-Team/Dism-Multi-language/tree/master/www.chuyu.me</a> but is a bit dated. The last activity on the project was February 2022, but the main site is down.</p> +<p>It is created by Chuyu, which is a Chinese developer and I&rsquo;d recommend NOT using this tool for secure environments. In short, if you use TikTok or Discord, then is a giant nothing burger for you and use away.</p> +<h2 id="download">Download</h2> +<h2 id="usage-and-features">Usage and Features</h2> +<h3 id="disk-cleanup">Disk Cleanup</h3> +<p>Advanced cleanup of Windows updates and misc. files.</p> +<p><img src="https://christitus.com/images/2023/dism-plus/cleanup.png" alt=""></p> +<h3 id="startup-check">Startup Check</h3> +<p>See what programs are starting and what programs will get installed when a new user is created.</p> +<p><img src="https://christitus.com/images/2023/dism-plus/startup.png" alt=""></p> +<h3 id="appx-uninstaller">Appx Uninstaller</h3> +<p>Bulk uninstall Microsoft Store Apps.</p> +<p><img src="https://christitus.com/images/2023/dism-plus/appx.png" alt=""></p> +<h3 id="updates">Updates</h3> +<p>Uninstalled Built-In Updates? Use the DISM++ Updates tab to scan and install new updates.</p> +<p><img src="https://christitus.com/images/2023/dism-plus/updates.png" alt=""></p> +<h3 id="the-rest---toolbox-deploy-drivers-etc">The Rest - Toolbox, Deploy, Drivers, etc.</h3> +<p>Since this is seeing less and less updates, I wouldn&rsquo;t use these tools. Microsoft is constantly updating and modifying Windows, hence using the less targeted tools is NOT Recommended.</p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/2hEde5WuCSY" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Ext4 in Windows + https://christitus.com/ext4-in-windows/ + Wed, 11 Jan 2023 00:00:00 +0000 + + https://christitus.com/ext4-in-windows/ + <p>Pulling in EXT4 drives is easy now with Windows WSL2. There are a few tricks that you need to know about though!</p> +<h2 id="requirements">Requirements</h2> +<ul> +<li>Any version of Windows 11</li> +<li>Any version of Windows 10 (Build 22000+) <em>Note: check with <code>winver</code> from Run</em></li> +<li>Powershell as Admin and WSL 2 installed</li> +<li>ONLY Internal drives are supported. No USB Drives.</li> +</ul> +<p>Syntax pulled from <a href="https://learn.microsoft.com/en-us/windows/wsl/wsl2-mount-disk">https://learn.microsoft.com/en-us/windows/wsl/wsl2-mount-disk</a></p> +<h2 id="determine-partition-to-mount">Determine Partition to Mount</h2> +<h3 id="powershell-as-admin">PowerShell as Admin</h3> +<p>List Drives</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">GET-CimInstance -query &#34;SELECT * from Win32_DiskDrive&#34; +</span></span></code></pre></div><p>Mount and list Drive Partitions</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">wsl --mount &lt;DiskPath&gt; --bare +</span></span><span class="line"><span class="cl">wsl +</span></span></code></pre></div><h3 id="linux-wsl2-instance">Linux WSL2 Instance</h3> +<p>List Drive Partitions from WSL Instance</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">lsblk +</span></span></code></pre></div><p>List Drive Types and IDs</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo blkid +</span></span></code></pre></div><h3 id="powershell-as-admin-1">PowerShell as Admin</h3> +<p><em>Note: By default Windows will always assume it is EXT4, unless the <code>-t vfat</code> option is used.</em></p> +<p>From Windows PowerShell</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">wsl --mount \\.\PhysicalDrive1 --partition 2 +</span></span></code></pre></div><p>This will make it available in both Windows Explorer and WSL <code>/mnt/wsl/PhysicalDrive1</code> path.</p> +<h4 id="unmount">Unmount</h4> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">wsl --unmount \\.\PhysicalDrive1 +</span></span></code></pre></div><h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/aX1vH1j7m7U" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Why Open Source? + https://christitus.com/why-open-source/ + Mon, 09 Jan 2023 00:00:00 +0000 + + https://christitus.com/why-open-source/ + <p>Why is open source done? The developer gives up all his code and potential for profit from the code.</p> +<h2 id="the-reason">The Reason</h2> +<p>The main reason for open source is for collaboration and standardization. Without open source, you are reliant on a team of developers you hire and you are responsible for maintenance and all development. Hire less talented people? You have less development with a high cost. You also don&rsquo;t have the ability to learn past what skills the people on the project has. One man band? You can&rsquo;t learn much because you have no contributions and are reliant on your abilities.</p> +<p>On the flip side, you can learn and collaborate with thousands of people around the world WITH open source. What about the loss of money from sales? I remind myself that I&rsquo;m not John Carmack, which was one of the first commercial open source successes with Quake and making it&rsquo;s engine open source. He did close source the content of the Game, but is a gifted individual. The game made millions while also being open source at its core. When I open source all my projects, I do so with the intent of learning something. The knowledge I pickup is MORE valuable to me than if I sold the project as a closed source tool.</p> +<h2 id="making-profit">Making Profit</h2> +<p>Let&rsquo;s analyse how I make a million dollars off a project:</p> +<ul> +<li>Closed Source - Project requires a purchase and little longer development time to put in DRM so it can&rsquo;t be copied or stolen. The software can only be as good as the developer. Even with a gifted developer, the chances of success are slim to even make $1000. However, if the program has a successful launch with massive adoption making a million dollars off a $50 sale price is easy. The main issue is marketing, which can be solved with social media. The downside is the programmer learns just what is needed for project completion if anything at all. The only person that should consider this option is the truly elite or companies that hire teams of people to complete the program.</li> +<li>Open Source - Project can develop at a rapid pace with issues coming in from users, collaboration happening with pull requests from other programmers that have different knowledge sets than you. The amount of knowledge you gain by doing this is vast. I value the knowledge gained greater than the possibilities of closed source development. Also, since there are more eyeballs on the project the program itself will be more complete and feature rich. Instead of making with profit in mind, you are programming with the end user experience at the forefront.</li> +</ul> +<h2 id="open-source-myths">Open Source Myths</h2> +<ul> +<li>Crowdfunding - Doesn&rsquo;t work or rarely works in many instances. If you need a paycheck from a program, you need to go punch a clock somewhere. Every project I follow needs VC or private funding to see it to the finish line when time and money are priorities.</li> +<li>Everything should be FREE - Quake is a perfect example of a properly monetized project. Engine was open source, but the content was not. Just because something is open source doesn&rsquo;t mean the compiled project needs to be.</li> +<li>Less Secure - This is a strange belief that some subscribe to the security by obscurity line of thought. Popular open source projects have its code reviewed almost daily and security holes plugged quicker than closed source that might never even have an independent code review!</li> +<li>Hard to Maintain - Since more people are pushing requests and issues it becomes harder to maintain as a few have said. Any project that I stopped maintaining or it just became unwieldy was my fault. The person in charge of the open source project has to be willing to deny and refuse MANY pull requests. It is up to the project maintainer to be vigilant, clean the code, and have strict rules for contribution. Anytime I&rsquo;ve failed to maintain a project, it was because of a poor understanding of a PR or GitHub in general.</li> +</ul> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/dhox4jNrBQM" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Thumbnails in Windows + https://christitus.com/thumbnails-in-windows/ + Fri, 06 Jan 2023 00:00:00 +0000 + + https://christitus.com/thumbnails-in-windows/ + <p>The thumbnail system in Windows has 4 major configuration areas dating back to 2000. From thumbs.db files, checkboxes, group policy, and registry edits, the Windows thumbnail system is, like everything in Windows, old and layered.</p> +<h2 id="where-are-thumbnails-stored">Where are thumbnails stored?</h2> +<p><strong>thumbs.db</strong></p> +<p>EVERY folder has this hidden file. It is a database of small images for that given directory. Delete it and it will replicate itself if there are files in that folder and you have NOT disabled thumbnails.</p> +<h2 id="how-do-i-configure-thumbnails">How do I configure thumbnails?</h2> +<blockquote> +<p>&ldquo;Oh, how do I count the ways&hellip;&rdquo;</p> +</blockquote> +<p>Any one of the following options will cause thumbnails NOT to work. Genius design&hellip;</p> +<h3 id="file-options-in-file-explorer">File Options in File explorer</h3> +<p>Make sure this option is UNCHECKED &ldquo;Always show icons, never thumbnails&rdquo; to DISPLAY thumbnails.</p> +<p><img src="https://christitus.com/images/2023/thumbnails-in-windows/file-options.png" alt=""></p> +<h3 id="system-performance-options">System Performance Options</h3> +<p>Open up this old hidden panel <code>sysdm.cpl</code> using run and you can configure it here as well!</p> +<p>Make sure this one is CHECKED! &ldquo;Show Thumbnails instead of icons&rdquo;.</p> +<p><img src="https://christitus.com/images/2023/thumbnails-in-windows/system-options.png" alt=""></p> +<h3 id="group-policy">Group Policy</h3> +<p>There are FOUR, yes, FOUR options to disable thumbnails in group policy. Launch it with <code>gpedit.msc</code> from Run.</p> +<p>Make sure these aren&rsquo;t configured:</p> +<p><img src="https://christitus.com/images/2023/thumbnails-in-windows/gpedit.png" alt=""></p> +<h3 id="registry">Registry</h3> +<p>With every Windows option there is a corresponding registry entry.</p> +<p>The main one is in <code>HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced</code> with DWORD <code>DisableThumbnailCache</code> with value of <code>1</code></p> +<p>Screenshot of <code>regedit</code></p> +<p><img src="https://christitus.com/images/2023/thumbnails-in-windows/regedit.png" alt=""></p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/JUEBG-_U1vc" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Fix Screen Tearing Linux + https://christitus.com/fix-screen-tearing-linux/ + Wed, 04 Jan 2023 00:00:00 +0000 + + https://christitus.com/fix-screen-tearing-linux/ + <p>The guide shows you ALL the methods to remove screen tearing. VSync, Monitor Composition, and Drivers that are problem childs.</p> +<h2 id="why-it-happens">Why it happens?</h2> +<p>Screen tearing is the hardware driving more frames than the monitor is capable of displaying or displaying more than 1 frame in a single draw. On Linux the stock configurations are awful and you see it a LOT on nVidia AND Intel. Not so much on AMD, because the display drivers are baked into the kernel and one more reason for using AMD graphics on Linux when you can.</p> +<h2 id="compositors-problem-1">Compositors (Problem #1)</h2> +<p>There are 3 main compositors that Linux distributions generally use.</p> +<ul> +<li>KWin (KDE)</li> +<li>Mutter (GNOME)</li> +<li>picom/compton (Various - picom is the evolution of compton)</li> +</ul> +<p>In these there is options for VSync. This doesn&rsquo;t generally fix the issue, but it does help when you have BAD screen tearing when moving windows in you Linux system.</p> +<p>KWin (KDE) Example:</p> +<p><img src="https://christitus.com/images/2023/fix-screen-tearing-linux/kwin.png" alt=""></p> +<p>Mutter (Gnome) is enabled by default, but has made advancements with Variable Rate Refresh to fix some tearing back in July of 2022. This VRR improvement means you need to update to the latest GNOME and you can see improvements.</p> +<p>Compton/picom Configuration: (ex. ~/picom.conf)</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">################################# +</span></span><span class="line"><span class="cl"># General Settings # +</span></span><span class="line"><span class="cl">################################# +</span></span><span class="line"><span class="cl">vsync = true; +</span></span></code></pre></div><h2 id="intelamd-x11-configurations">Intel/AMD X11 Configurations</h2> +<p>The configuration to enable vsync/freesync support when the graphics are initialized is the primary method to fix tearing. Here are the options for BOTH Intel and AMD.</p> +<h3 id="intel-x11-config">Intel X11 Config</h3> +<p>File to Edit/Add: <code>/etc/X11/xorg.conf.d/20-intel.conf</code></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Section &#34;Device&#34; +</span></span><span class="line"><span class="cl"> Identifier &#34;Intel Graphics&#34; +</span></span><span class="line"><span class="cl"> Driver &#34;intel&#34; +</span></span><span class="line"><span class="cl"> Option &#34;TearFree&#34; &#34;true&#34; +</span></span><span class="line"><span class="cl">EndSection +</span></span></code></pre></div><p><em>Note: There are extra options that can help like: <code>Option &quot;AccelMethod&quot; &quot;uxa&quot;</code> or <code>Option &quot;TripleBuffer&quot; &quot;true&quot;</code></em></p> +<p>ISSUE: After enabling and rebooting if you start to see screen artifacts there is a BAD Driver package that causes this. Remove <code>sudo apt remove xserver-xorg-video-intel</code>. This is an old intel display driver that is NOT being maintained. The newer the computer, the more problems this package will cause. These drivers aren&rsquo;t even needed and I don&rsquo;t know why they are installed by default and not removed altogether!</p> +<h3 id="amd-x11-config">AMD X11 Config</h3> +<p>File to Edit/Add: <code>/etc/X11/xorg.conf.d/20-amd.conf</code></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Section &#34;Device&#34; +</span></span><span class="line"><span class="cl"> Identifier &#34;AMD Graphics&#34; +</span></span><span class="line"><span class="cl"> Driver &#34;amdgpu&#34; +</span></span><span class="line"><span class="cl"> Option &#34;TearFree&#34; &#34;true&#34; +</span></span><span class="line"><span class="cl">EndSection +</span></span></code></pre></div><h2 id="nvidia-configuration---why-is-it-always-nvidia">nVidia Configuration - Why is it always nVidia?</h2> +<p>I hope in 2 years nVidia cards stop sucking as bad in Linux, because it is an AWFUL experience. Yes, you can fix it with drivers and custom settings, but the first impressions from users with nVidia cards is seldom a good one. Let&rsquo;s start with making sure you have the <code>nvidia-driver</code> installed with <code>nvidia-settings</code> package.</p> +<h3 id="nvidia-settings">nvidia-settings</h3> +<p><img src="https://christitus.com/images/2023/fix-screen-tearing-linux/nvidia-settings.png" alt=""></p> +<ul> +<li>Go to <strong>X Server Display Configuration &gt; Advanced</strong></li> +<li>Enable <strong>Force Full Composition Pipeline</strong></li> +<li>Apply and Save to X Configuration File.</li> +</ul> +<p>CLI Method</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">nvidia-settings --assign CurrentMetaMode=&#34;nvidia-auto-select +0+0 {ForceFullCompositionPipeline=On}&#34; +</span></span></code></pre></div><p>Reboot!</p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/rVBq6d3c1gM" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Block Razer Bloatware + https://christitus.com/block-razer-bloatware/ + Mon, 02 Jan 2023 00:00:00 +0000 + + https://christitus.com/block-razer-bloatware/ + <p>This script is made due to the frustration of the bloatware that gets install for all Razer devices.</p> +<h2 id="the-problem">The Problem</h2> +<p>The hardware works fine without any software and just installing the BASE synapse software it runs almost 500 MB installer that has 3 services and 15 RUNNING PROCESSES! This gets worse the more software you select past Synapse. The worst part about all this? It auto-installs when you plug in ANY Razer USB product. It is classified as malware because the hardware doesn&rsquo;t need it AND it slow yours your computer down.</p> +<p><img src="https://christitus.com/images/2022/block-razer-bloatware/bloatware.png" alt=""></p> +<h2 id="the-solution">The Solution</h2> +<p>I&rsquo;ve developed a simplistic approach, but may need to expand when Razer learns of this project. This script, locates the installer folder and deletes it while protecting from being written to again. This prevents the hardware from running Razer installers.</p> +<p>GitHub Project: <a href="https://github.com/ChrisTitusTech/block-razer">https://github.com/ChrisTitusTech/block-razer</a></p> +<p>One line Script: (Run As Administrator in Powershell)</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">irm https://raw.githubusercontent.com/ChrisTitusTech/block-razer/main/block.ps1 | iex +</span></span></code></pre></div><h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/OlFR6PeJA4U" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Worst Tech of 2022 + https://christitus.com/worst-tech-of-2022/ + Fri, 30 Dec 2022 00:00:00 +0000 + + https://christitus.com/worst-tech-of-2022/ + <p>Last year I did the top 5 worst devices in 2021, lets go over the worst technology that hurts all of us daily for 2022.</p> +<h2 id="smartphones">Smartphones</h2> +<p>This year I&rsquo;ve done 3 videos going over my smartphone addiction (which was less than the average person at 1 hour of usage a day) and how I fixed it. It is alarming to me that my addiction, which I considered bad, was still 1/3 of the average person. It is ALARMING that we still consider these devices good. There are aspects of them which do help, but a vast majority of our interactions have a negative effect on our lives. See the journey @ <a href="https://youtu.be/tzbKqTRuRzU">https://youtu.be/tzbKqTRuRzU</a></p> +<p>What did I gain from &ldquo;ditching&rdquo; a smart phone?</p> +<ul> +<li>3x more productivity</li> +<li>Mindfulness: Less Anxiety, More at Rest, and no longer overwhelmed</li> +</ul> +<p>What did I lose?</p> +<ul> +<li>No news on the toilet</li> +<li>Email on the go</li> +<li>Music while working out</li> +<li>Workout apps</li> +<li>Food apps</li> +<li>Social Media</li> +<li>Uber</li> +</ul> +<p>There are things above that many consider essential. However, as a business owner and an employee I have found none of them are. I did miss them, and as such decided to recreate my smart phone. I took a base Pixel 4a and stripped it down to the bare minimum and ONLY installed the essential apps that would not distract me or come with a negative side-effect. See &ldquo;<a href="https://christitus.com/making-the-perfect-phone/">Make the Perfect Phone</a>&rdquo;.</p> +<h2 id="social-media">Social Media</h2> +<p>Shocking, I know&hellip; It&rsquo;s bad for us. Welcome to 5 years ago! YouTube has become a substantial amount of my revenue. This makes it hard for me to just quit, but I always hate a good excuse. &ldquo;You either do or do not!&rdquo; - Yoda</p> +<p>I&rsquo;m not going to bore you with a 10 minute lecture about social media making us compare each other, making us materialistic, worried about others opinions, and the laundry list of other terrible things tearing the fabric of our society apart. I stole that last bit from Chamath Palihapitiya (One of the people responsible for the rise of Facebook).</p> +<p>So is all Social Media bad? Nope. YouTube can be a great thing and I&rsquo;ve learned impossible things at amazing speed because of it. The correct question is&hellip; Is Social Media algorithms bad? Absolutely! They are designed to take up as much of our time and show us a bunch of garbage that is interesting but often isn&rsquo;t educational. My solution? RSS. Check out my post on fixing the internet: <a href="https://christitus.com/why-we-dont-browse-the-internet-anymore/">https://christitus.com/why-we-dont-browse-the-internet-anymore/</a></p> +<h2 id="the-future">The Future</h2> +<p>If we do nothing we will become slaves to our technology and allow corporations to use and abuse us. Or we can seek solutions and identify bad habits that negatively effect us. We use all the opportunity and technology in a constructive way that makes us damn near superhuman. The choice is ours.</p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/HqDXV_2doVY" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Customizing Steam Games in Linux + https://christitus.com/customizing-steam-games-in-linux/ + Wed, 28 Dec 2022 00:00:00 +0000 + + https://christitus.com/customizing-steam-games-in-linux/ + <p>Installing steam games on Linux is easy but running executables inside those games to add mods, maps, and other Windows programs that enhance the gaming experience is essential. This guide shows you how to do this.</p> +<h2 id="protontricks">Protontricks</h2> +<p>This package has evolved and a fantastic way of fixing broken games and enhancing existing games. The source repo is @ <a href="https://github.com/Matoking/protontricks">https://github.com/Matoking/protontricks</a> and it has a couple dependencies.</p> +<p>I caution you from using the built-in packages on Ubuntu 22.04 because it uses an old package. If you are reading this in 2024 this might have changed, but until then I recommend installing it through the official method using <code>pipx</code>.</p> +<h3 id="installing">Installing</h3> +<p>First install pipx</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo apt install python3-pip python3-setuptools python3-venv pipx winetricks +</span></span></code></pre></div><p>Then use pipx to install protontricks</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">pipx install protontricks +</span></span></code></pre></div><h2 id="using-protontricks">Using Protontricks</h2> +<p>List all installed steam games with <code>protontricks -l</code> <em>Note: Old versions do NOT have this feature</em></p> +<p><img src="https://christitus.com/images/2022/customizing-steam-games-in-linux/list-proton.png" alt=""></p> +<p>Adding corefonts to a prefix (this fixes a LOT of black screens or if launchers don&rsquo;t display fonts/text properly)</p> +<p>Syntax: <code>protontricks APPID corefonts</code></p> +<p><em>Example of adding corefonts to Lord of The Rings Online.</em></p> +<p><img src="https://christitus.com/images/2022/customizing-steam-games-in-linux/corefont-install.png" alt=""></p> +<p>Running custom commands (executables inside the game directories)</p> +<p>Syntax: <code>protontricks-launch --appid APPID COMMANDEXE</code></p> +<p><em>Example launching a plugin installer for Lord of the Rings Online</em></p> +<p><img src="https://christitus.com/images/2022/customizing-steam-games-in-linux/plugin-launch.png" alt=""></p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/nRiUdVSeuFU" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + 2022 Recap + https://christitus.com/2022-recap/ + Sat, 24 Dec 2022 00:00:00 +0000 + + https://christitus.com/2022-recap/ + <p>Recap of 2022.</p> +<h2 id="the-2022-goals">The 2022 Goals</h2> +<ul> +<li><input checked="" disabled="" type="checkbox"> Live Streams expanded</li> +<li><input checked="" disabled="" type="checkbox"> More Virtualization Videos</li> +<li><input checked="" disabled="" type="checkbox"> More GitHub Projects (Over 500+ Contributions)</li> +<li><input disabled="" type="checkbox"> Custom Debian Build (Debian-Titus)</li> +<li><input disabled="" type="checkbox"> Studio Revamp</li> +</ul> +<p>The Live streams experiment were a failure. I&rsquo;ve ramped up my virtualization content, but find a lot of it go over peoples heads. For GitHub contributions, I started to find my groove about midway through the year, and make substantive progress on projects. The studio revamp is an ongoing project, but to keep making the best use of the space. While I accomplished some of this in 2022, it will be an ongoing process that I will complete next year with a far better layout and feel.</p> +<h2 id="2023-goals">2023 Goals</h2> +<ul> +<li><input disabled="" type="checkbox"> Finish Ubuntu-Titus</li> +<li><input disabled="" type="checkbox"> 1000+ Github Contributions</li> +<li><input disabled="" type="checkbox"> Add Shorts / Live into Weekly workflow while maintaining 3 videos per week</li> +<li><input disabled="" type="checkbox"> Get in best shape of my life</li> +</ul> +<p>This year will be the best year all around. I made mistakes in 2022 and have a better starting block than I&rsquo;ve had in my life both professionally and personally. I can&rsquo;t wait to crush 2023 and make it the best year of my life thus far.</p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/8UvGMmGxlyc" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Quickemu + https://christitus.com/quickemu/ + Wed, 21 Dec 2022 00:00:00 +0000 + + https://christitus.com/quickemu/ + <p>This is a GitHub project that installs virtual machines for more than 300+ spins of Linux, Windows, and macOS!</p> +<h2 id="the-project">The Project</h2> +<p>Source: <a href="https://github.com/quickemu-project/quickemu">https://github.com/quickemu-project/quickemu</a></p> +<h2 id="installation">Installation</h2> +<p>Dependency requirements:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo apt install qemu bash coreutils ovmf grep jq lsb procps python3 genisoimage usbutils util-linux sed spice-client-gtk swtpm wget xdg-user-dirs zsync unzip +</span></span></code></pre></div><p>Install for Ubuntu</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo apt-add-repository ppa:flexiondotorg/quickemu +</span></span><span class="line"><span class="cl">sudo apt update +</span></span><span class="line"><span class="cl">sudo apt install quickemu +</span></span></code></pre></div><p>GUI Install</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo add-apt-repository ppa:yannick-mauray/quickgui +</span></span><span class="line"><span class="cl">sudo apt update +</span></span><span class="line"><span class="cl">sudo apt install quickgui +</span></span></code></pre></div><p>Other Distros (Use <a href="https://christitus.com/nix-package-manager/">NIX Installer</a>)</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">nix-env -iA nixpkgs.quickemu +</span></span></code></pre></div><p>Build from Source for GUI <a href="https://github.com/quickemu-project/quickgui">https://github.com/quickemu-project/quickgui</a></p> +<h2 id="cli-usage">CLI Usage</h2> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">quickget ubuntu-mate 22.04 +</span></span><span class="line"><span class="cl">quickemu --vm ubuntu-mate-22.04.conf +</span></span></code></pre></div><p>This is pretty easy to manage with it&rsquo;s own dedicated directory. Ex. <code>~/VMs</code></p> +<h2 id="downloading-via-gui">Downloading via GUI</h2> +<p>Select your OS and Press Download (Yes, it&rsquo;s that easy!)</p> +<p><img src="https://christitus.com/images/2022/quickemu/quickgui.png" alt=""></p> +<p><img src="https://christitus.com/images/2022/quickemu/kubuntu-download.png" alt=""></p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/87MCT3Ekjlo" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Virtual Machine Formats + https://christitus.com/virtual-machine-formats/ + Mon, 19 Dec 2022 00:00:00 +0000 + + https://christitus.com/virtual-machine-formats/ + <p>This Guide goes over transferring and what each type of virtual machine is used for.</p> +<h2 id="the-types">The Types</h2> +<h3 id="vdi---virtualbox">VDI - Virtualbox</h3> +<p>The only time I&rsquo;ve seen this format is in Virtualbox instances. They are always converted when moved to other hypervisors. The VDI packaging is open source and considered efficient.</p> +<h3 id="vmdk---vmware">VMDK - VMWare</h3> +<p>This is the market leader and what you will see the most in virtualization environments. Virtualbox and QEMU can run them without conversion.</p> +<h3 id="vhd---microsoft">VHD - Microsoft</h3> +<p>Leave it to Microsoft to make the worst container. VHD only holds a 2 TB capacity and why they created VHDX which improves this to 64 TB. Its not as performant as other containers, but gets the job done. The main benefit to these is they are read natively inside Windows without the need for extra software. You can mount and look at partition layouts with native windows tools like Disk Management.</p> +<h3 id="qcow2---qemu">QCOW2 - QEMU</h3> +<p>QEMU is by far my favorite hypervisor because of the versatility it gives me. QCOW2 is the file format you will use and it fantastic. There is a conversion tool that comes with QEMU that will easily convert any image. I&rsquo;d recommend first converting the image to OVA as it is the most portable and versatile. Here is a sample script to convert to qcow2.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">tar -xvf original.ova +</span></span><span class="line"><span class="cl">qemu-img convert -O qcow2 original.vmdk original.qcow2 +</span></span></code></pre></div><h3 id="ovf-and-ova---the-best-way-to-share-vms">OVF and OVA - The Best Way to Share VMs</h3> +<p>This standard is widely adopted from VMWare, but you will be able to ingest these files into any hypervisor. VMWare, Virtualbox, and XenServer (XCP-ng) do this natively, where QEMU needs a little more conversion, but simple to use. Here is the <a href="https://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.vsphere.vm_admin.doc/GUID-AE61948B-C2EE-436E-BAFB-3C7209088552.html">official website</a> right up on these files.</p> +<p>The TLDR is use OVA as it grabs all the information from the VMs (VMDK, OVF, and other information) and packages it all into one file for you. This is by far the best way to share a Virtual Machine.</p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/EdP1Fc-exwY" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Acronis Cyber Protect Home Office + https://christitus.com/acronis-true-image/ + Fri, 16 Dec 2022 00:00:00 +0000 + + https://christitus.com/acronis-true-image/ + <p>Acronis True Image has undergone an expansion and rename in the past couple years to Acronis Cyber Protect Home Office. This is a quick breakdown of their new offering.</p> +<h2 id="backup">Backup</h2> +<p><img src="https://christitus.com/images/2022/acronis-true-image/backup.png" alt=""></p> +<p>Acronis backup is what the company is known for as it offered block level backup over 10 years ago. Their backup services have always been some of the best and this still holds true today. The interface is simplified and intuitive. It can get a complete copy of the entire system while its online and back it up locally or to the cloud.</p> +<p>Transfer rates to the cloud on my connection maxed out around 95 Mbps and went as low as 50 Mbps. This is average for most cloud backup speeds in the residential realm.</p> +<h2 id="anti-virus">Anti-Virus</h2> +<p><img src="https://christitus.com/images/2022/acronis-true-image/av.png" alt=""></p> +<p>One of the biggest additions is the inclusion of anti-virus. This protection is adequate and it brings the entire protection suite in-house. I&rsquo;m not a fan of most AV implementations and what matters is a good backup when these inevitably fail. It makes sense that they included this, but to me it makes the software seem bloated and unnecessary.</p> +<h2 id="file-sync">File Sync</h2> +<p><img src="https://christitus.com/images/2022/acronis-true-image/sync.png" alt=""></p> +<p>This addition is beneficial for those with space concerns or multiple computers. The archive feature removes the file from the local device once it uploads it to the Acronis online cloud. The sync function is like Dropbox and syncs files across devices.</p> +<h2 id="other-tools">Other Tools</h2> +<p>Disk Clone - is helpful when replacing hard drives. I used to use this all the time when SDDs hit the market and I was replacing legacy hard drives.</p> +<p>It uses 84 FOSS programs listed on their website: <a href="https://kb.acronis.com/content/69667">https://kb.acronis.com/content/69667</a></p> +<h2 id="cost">Cost</h2> +<p><img src="https://christitus.com/images/2022/acronis-true-image/cost.png" alt=""></p> +<p>The product has moved to a subscription model. The essential model is local and offers the core backup services with no cloud. The advanced function could work for those that don&rsquo;t need a full image of their device, but to utilise the software to its fullest capacity it will cost you $124.99 per year for the software with 1 TB of storage. Each additional TB of storage adds $40. No doubt this is on the high end of cost when compared to the competition and why they added they expanded its offerings past backup to help justify the price.</p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/11111111" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Cleanup Docker + https://christitus.com/cleanup-docker/ + Fri, 16 Dec 2022 00:00:00 +0000 + + https://christitus.com/cleanup-docker/ + <p>If you are running docker you will accumulate a lot of unused images and volumes as you update running containers. This makes maintenance a necessity.</p> +<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Running Docker? Be sure and cleanup unused images and volumes with:<br>docker volume rm $(docker volume ls -f dangling=true -q)<br>docker rmi $(docker images --quiet --filter &quot;dangling=true&quot;)</p>&mdash; Chris Titus Tech (@christitustech) <a href="https://twitter.com/christitustech/status/1603766983274729472?ref_src=twsrc%5Etfw">December 16, 2022</a></blockquote> +<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> + +<h2 id="do-you-need-this">Do you need this?</h2> +<p>Check your portainer status page and look for &ldquo;unused&rdquo; images and containers. If you are seeing a lot of these, then you are wasting space and I&rsquo;d recommend running this script to clean them up!</p> +<h2 id="the-cleanup-script">The Cleanup Script</h2> +<p>Run this bash script every week to ensure the cleanup gets performed.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="cp">#!/bin/bash +</span></span></span><span class="line"><span class="cl"><span class="cp"></span> +</span></span><span class="line"><span class="cl">docker volume rm <span class="k">$(</span>docker volume ls -f <span class="nv">dangling</span><span class="o">=</span><span class="nb">true</span> -q<span class="k">)</span> +</span></span><span class="line"><span class="cl">docker rmi <span class="k">$(</span>docker images --quiet --filter <span class="s2">&#34;dangling=true&#34;</span><span class="k">)</span> +</span></span></code></pre></div><h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/11111111" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Install Windows Update Powershell + https://christitus.com/install-windows-update-powershell/ + Wed, 14 Dec 2022 00:00:00 +0000 + + https://christitus.com/install-windows-update-powershell/ + <p>Did you know you can install updates with using PowerShell? This is the Guide for doing that!</p> +<h2 id="pre-requisites">Pre-requisites</h2> +<p>To install Windows updates via PowerShell, you need to install the module first:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Install-Module PSWindowsUpdate +</span></span><span class="line"><span class="cl">Add-WUServiceManager -MicrosoftUpdate +</span></span></code></pre></div><h2 id="commands">Commands</h2> +<p>Install all available updates</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Install-WindowsUpdate -MicrosoftUpdate -AcceptAll -AutoReboot | Out-File &#34;C:\($env.computername-Get-Date -f yyyy-MM-dd)-MSUpdates.log&#34; -Force +</span></span></code></pre></div><p>Force other computers to update</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">$Computers = &#34;pc2,pc3,pc4&#34; +</span></span><span class="line"><span class="cl">Invoke-WUJob -ComputerName $Computers -Script {Import-Module PSWindowsUpdate; Install-WindowsUpdate -MicrosoftUpdate -AcceptAll -AutoReboot} -RunNow -Confirm:$false | Out-File &#34;c:\$Computers-$(Get-Date -f yyyy-MM-dd)-MSUpdates.log&#34; -Force +</span></span></code></pre></div><h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/M2mMQfPGZsE" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Screensavers + https://christitus.com/screensavers/ + Mon, 12 Dec 2022 00:00:00 +0000 + + https://christitus.com/screensavers/ + <p>Screensavers might be the past, but they are still one of the coolest to do on your PC.</p> +<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Love this screensaver. Still the best of all time imo. <a href="https://t.co/vv16kPECZL">https://t.co/vv16kPECZL</a></p>&mdash; Chris Titus Tech (@christitustech) <a href="https://twitter.com/christitustech/status/1594450349657821186?ref_src=twsrc%5Etfw">November 20, 2022</a></blockquote> +<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> + +<h2 id="scr-file-screensavers">SCR File Screensavers</h2> +<ul> +<li>System47 SCR File - <a href="https://www.mewho.com/system47/">https://www.mewho.com/system47/</a> +<img src="https://christitus.com/images/2022/starfield-screensaver/system47.png" alt=""></li> +<li><a href="https://learn.microsoft.com/en-us/sysinternals/downloads/bluescreen">Microsoft BSOD</a></li> +<li><a href="https://www.screensaversplanet.com/screensavers/?free=on">Screensavers Website</a></li> +</ul> +<h2 id="website-screensavers">Website Screensavers</h2> +<ul> +<li> +<p><a href="https://www.mewho.com/starfield47/">Starfield meWho</a> +<img src="https://christitus.com/images/2022/starfield-screensaver/starfield.png" alt=""></p> +</li> +<li> +<p><a href="https://gradiyent.netlify.app/">Gradient Colors</a> +<img src="https://christitus.com/images/2022/starfield-screensaver/gradient.png" alt=""></p> +</li> +<li> +<p><a href="https://sourceforge.net/projects/rssavers/">Really Slick Screensavers</a> +<img src="https://christitus.com/images/2022/starfield-screensaver/hyperspace.png" alt=""></p> +</li> +<li> +<p><a href="https://www.ravbug.com/bsod/">Fake BSODs</a> +<img src="https://christitus.com/images/2022/starfield-screensaver/bsod.png" alt=""></p> +</li> +<li> +<p><a href="https://www.cryptoprank.com/#/">Crypto Prank</a> +<img src="https://christitus.com/images/2022/starfield-screensaver/crypto-prank.png" alt=""></p> +</li> +<li> +<p><a href="https://fakeupdate.net/">Fake Updates</a></p> +<p><img src="https://christitus.com/images/2022/starfield-screensaver/xp.png" alt=""></p> +</li> +<li> +<p><a href="https://screen.vercel.app/">Fake Screens</a></p> +</li> +<li> +<p><a href="https://updatefaker.com/">Update Faker</a></p> +</li> +</ul> +<h2 id="load-screen-savers">Load Screen Savers</h2> +<h3 id="windows">Windows</h3> +<ol> +<li>Copy the *.scr file to <code>c:\Windows\System32</code></li> +<li>Launch the Screensaver Windows Module (Start -&gt; Run -&gt; <code>control desk.cpl,,@screensaver</code>)</li> +<li>Select the screensaver you copied</li> +</ol> +<p>Copy/Paste Run command:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">control desk.cpl,,@screensaver +</span></span></code></pre></div><h3 id="linux">Linux</h3> +<p>Loading scr files on Linux requires you to use WINE. You can launch this using wine.exe, but here is my article on setting it up as a systemd service: <a href="https://christitus.com/lcars-screensaver/">https://christitus.com/lcars-screensaver/</a></p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/V7aKCCfmJww" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Docker Guide + https://christitus.com/docker-guide/ + Fri, 09 Dec 2022 00:00:00 +0000 + + https://christitus.com/docker-guide/ + <p>This is a full walk-through and guide for Docker.</p> +<h2 id="install-and-getting-started">Install and Getting Started</h2> +<ul> +<li>Official Docker: <a href="https://docs.docker.com/get-docker/">https://docs.docker.com/get-docker/</a></li> +<li>Official Portainer: <a href="https://docs.portainer.io/start/install/server/docker">https://docs.portainer.io/start/install/server/docker</a></li> +</ul> +<h2 id="quick-commands">Quick Commands</h2> +<h3 id="run-a-new-container">Run a new container</h3> +<ul> +<li>New Image - <code>docker run IMAGE</code></li> +<li>Name Container and Launch Image - <code>docker run --name CONTAINER IMAGE</code></li> +<li>Map Container Ports and Launch Image -<code>docker run -p HOSTPORT:CONTAINERPORT IMAGE</code></li> +<li>Map ALL Ports and Launch Image - <code>docker run -P IMAGE</code></li> +<li>Launch Image as Background Service - <code>docker run -d IMAGE</code></li> +<li>Map Local Directory and Launch - <code>docker run -v HOSTDIR:TARGETDIR IMAGE</code></li> +</ul> +<h3 id="manage-containers">Manage Containers</h3> +<ul> +<li>List RUNNING Containers - <code>docker ps</code></li> +<li>List ALL containers - <code>docker ps -a</code></li> +<li>Delete container - <code>docker rm CONTAINER</code></li> +<li>Delete a Running Container - <code>docker rm -f CONTAINER</code></li> +<li>Stop Container - <code>docker stop CONTAINER</code></li> +<li>Start Container - <code>docker start CONTAINER</code></li> +<li>Copy File FROM container - <code>docker cp CONTAINER:SOURCE TARGET</code></li> +<li>Copy File TO container - <code>docker cp TARGET CONTAINER:SOURCE</code></li> +<li>Start Shell inside container - <code>docker exec -it CONTAINER bash</code></li> +<li>Rename container - <code>docker rename OLD NEW</code></li> +<li>Create new Image from Container - <code>docker commit CONTAINER</code></li> +</ul> +<h3 id="manage-images">Manage Images</h3> +<ul> +<li>Download Image - <code>docker pull IMAGE[:TAG]</code></li> +<li>Upload Image to repository - <code>docker push IMAGE</code></li> +<li>Delete Image - <code>docker rmi IMAGE</code></li> +<li>List Images - <code>docker images</code></li> +<li>Build Image from Docker file - <code>docker build DIRECTORY</code></li> +<li>Tag Image IMAGE - <code>docker tag IMAGE NEWIMAGE:TAG</code></li> +</ul> +<h3 id="troubleshooting-and-information">Troubleshooting and Information</h3> +<ul> +<li>Show logs - <code>docker logs CONTAINER</code></li> +<li>Show stats - <code>docker stats</code></li> +<li>Show processes - <code>docker top CONTAINER</code></li> +<li>Show modified files - <code>docker diff CONTAINER</code></li> +<li>Show mapped ports - <code>docker port CONTAINER</code></li> +</ul> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/94VQvRpjfO8" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Windows Explorer Stealing CPU + https://christitus.com/windows-explorer-stealing-cpu/ + Wed, 07 Dec 2022 00:00:00 +0000 + + https://christitus.com/windows-explorer-stealing-cpu/ + <p>Windows 11 has a bug effecting some systems. Out of my 3 Windows 11 systems, one of them had this happen.</p> +<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Windows 11... ugh. Is File Explorer stealing 20% of your CPU? <br>Well Windows Input Experience is to blame. Just tracked down these registry keys to fix it. (Spoiler: It launches widgets and typing BS that you don&#39;t use) <a href="https://t.co/YKL0zjTzic">pic.twitter.com/YKL0zjTzic</a></p>&mdash; Chris Titus Tech (@christitustech) <a href="https://twitter.com/christitustech/status/1597766834094211073?ref_src=twsrc%5Etfw">November 30, 2022</a></blockquote> +<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> + +<h2 id="underlying-problem">Underlying Problem</h2> +<p>Two services are interacting with Windows Explorer that are the root of this problem. Widgets and Typing experience from Windows 11. Even if you disabled these services, they will relaunch because they use the Microsoft Store. What is causing this behavior? A new pre-launch command that pushes these apps into the background on startup. This means they start up faster, but most don&rsquo;t even use these apps and do NOT want to use them.</p> +<h2 id="solution">Solution</h2> +<p>Add these Registry entries to fix it!</p> +<p><code>FixRegistry.reg</code></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Windows Registry Editor Version 5.00 +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl">[HKEY_CURRENT_USER\Software\Microsoft\input] +</span></span><span class="line"><span class="cl">&#34;IsInputAppPreloadEnabled&#34;=dword:00000000 +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl">[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Dsh] +</span></span><span class="line"><span class="cl">&#34;IsPrelaunchEnabled&#34;=dword:00000000 +</span></span></code></pre></div><h3 id="delete-old-programs">Delete old programs</h3> +<p>Wallpaper Engine caused a big CPU elevation after I updated to 22H2 on Windows 11. Check your programs and if they haven&rsquo;t been updated in a while, they may not work that well on the new version.</p> +<p>To uninstall old programs run:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">appwiz.cpl +</span></span></code></pre></div><h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/3YaG3YPGCbQ" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Bypass Paywalls + https://christitus.com/bypass-paywalls/ + Mon, 05 Dec 2022 00:00:00 +0000 + + https://christitus.com/bypass-paywalls/ + <p>Tired of ads, paywalls, and other garbage in your web browsing experience? These add-ons will improve your experience!</p> +<blockquote class="twitter-tweet"><p lang="en" dir="ltr"><a href="https://twitter.com/christitustech?ref_src=twsrc%5Etfw">@christitustech</a> u missed alot goodies, i made a list <a href="https://t.co/KU0ohchDOw">https://t.co/KU0ohchDOw</a></p>&mdash; indrid cold (@nerdz0ne) <a href="https://twitter.com/nerdz0ne/status/1596178362271207425?ref_src=twsrc%5Etfw">November 25, 2022</a></blockquote> +<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> + +<h2 id="the-extensions">The Extensions</h2> +<ul> +<li> +<p><strong>YouTube Enhancer</strong> - <a href="https://chrome.google.com/webstore/detail/enhancer-for-youtube/ponfpcnoihfmfllpaingbgckeeldkhle">https://chrome.google.com/webstore/detail/enhancer-for-youtube/ponfpcnoihfmfllpaingbgckeeldkhle</a></p> +<ul> +<li>Adds screenshots, studio, auto-settings, and much more! +<img src="https://christitus.com/images/2022/bypass-paywalls/youtube-enhancer.png" alt=""></li> +</ul> +</li> +<li> +<p><strong>Self-Destructing Cookies</strong> - <a href="https://chrome.google.com/webstore/detail/self-destructing-cookies/igdpjhaninpfanncfifdoogibpdidddf">https://chrome.google.com/webstore/detail/self-destructing-cookies/igdpjhaninpfanncfifdoogibpdidddf</a></p> +<ul> +<li><em>This is a privacy add-on that deletes cookies when the browser or tab is closed. Note: This will cause some sites to log you out if a sign-in is required.</em></li> +</ul> +</li> +<li> +<p><strong>Cookie Remover</strong> - <a href="https://chrome.google.com/webstore/detail/cookie-remover/kcgpggonjhmeaejebeoeomdlohicfhce/related">https://chrome.google.com/webstore/detail/cookie-remover/kcgpggonjhmeaejebeoeomdlohicfhce/related</a></p> +<ul> +<li><em>This will remove the current cookies for the site you are on by clicking the cookie icon in the top right</em> +<img src="https://christitus.com/images/2022/bypass-paywalls/cookie-remover.png" alt=""></li> +</ul> +</li> +<li> +<p><strong>Bypass Paywall</strong> - <a href="https://github.com/iamadamdev?tab=repositories">https://github.com/iamadamdev?tab=repositories</a></p> +<ul> +<li>Load with dev mode in chrome. +<img src="https://christitus.com/images/2022/bypass-paywalls/dev-mode-load.png" alt=""> +<img src="https://christitus.com/images/2022/bypass-paywalls/bypass-paywalls.png" alt=""></li> +</ul> +</li> +<li> +<p><strong>Clickbait Removal</strong> - <a href="https://chrome.google.com/webstore/detail/clickbait-remover-for-you/omoinegiohhgbikclijaniebjpkeopip">https://chrome.google.com/webstore/detail/clickbait-remover-for-you/omoinegiohhgbikclijaniebjpkeopip</a></p> +<ul> +<li>Remove all thumbnails and put parts of video in. Also removes CAPS from the titles +<img src="https://christitus.com/images/2022/bypass-paywalls/clickbait-remover.png" alt=""></li> +</ul> +</li> +</ul> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/_fG32rdWdes" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Twitter Archive Offline + https://christitus.com/twitter-archive/ + Fri, 02 Dec 2022 00:00:00 +0000 + + https://christitus.com/twitter-archive/ + <p>Leaving Twitter? Why not download all your tweets from archive and store it yourself before deleting your account!</p> +<h2 id="projects">Projects</h2> +<ul> +<li><a href="https://github.com/timhutton/twitter-archive-parser">Twitter Archive Parser</a></li> +<li><a href="https://github.com/nornagon/twitter-bookmark-archiver">Twitter Bookmark Tool - Download All Links</a></li> +<li><a href="https://github.com/caarlos0/twitter-cleaner">Twitter Cleaner</a></li> +<li><a href="https://github.com/walaura/Twitter-photo-downloader">Twitter Photo Downloader</a></li> +</ul> +<h2 id="process-of-offline-twitter">Process of Offline Twitter</h2> +<ol> +<li>Download Twitter Archive +<img src="https://christitus.com/images/2022/twitter-archive/twitter-archive.png" alt=""> +<em>Note: This can take up to 72 hours to produce a downloadable zip</em></li> +<li>Unzip Archive to it&rsquo;s OWN folder</li> +<li>Download the Archive parser +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">wget https://raw.githubusercontent.com/timhutton/twitter-archive-parser/main/parser.py +</span></span></code></pre></div></li> +<li>Run <code>python3 parser.py</code> +<em>I recommend selecting Yes to download all messages</em></li> +<li>Open <code>Your archive.html</code> in your browser +<img src="https://christitus.com/images/2022/twitter-archive/offline-twitter.png" alt=""></li> +</ol> +<h2 id="limitations">Limitations</h2> +<p>I put the other projects above to get around the limitations of using the Archive Parser.</p> +<ul> +<li>Bookmark Tool will change the t.co links to their proper links so it doesn&rsquo;t use Twitter servers.</li> +<li>Cleaner will cleanup the archive</li> +<li>Photo Downloader will download the full photos in your tweets. By default it downloads the thumbnail and references twitter for the full image.</li> +</ul> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/vwxxNCQpcTA" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Docker Macos + https://christitus.com/docker-macos/ + Wed, 30 Nov 2022 00:00:00 +0000 + + https://christitus.com/docker-macos/ + <p>Don&rsquo;t have a Mac and need MacOS? No problem, run it in a docker container.</p> +<p>Credit goes to this twitter user:</p> +<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Anthony <a href="https://twitter.com/LinusTech?ref_src=twsrc%5Etfw">@LinusTech</a> and <a href="https://twitter.com/christitustech?ref_src=twsrc%5Etfw">@christitustech</a> need to check out this project:<a href="https://t.co/ctx41h0j25">https://t.co/ctx41h0j25</a><br><br>It offers macOS Catalina, Big Sur, Monterey, High Sierra, and Mojave as Docker images.<br><br>PS:<br>Someone please tell me what&#39;s Anthony&#39;s twitter handle. I need to follow that man.</p>&mdash; Arinze (@justArRinze) <a href="https://twitter.com/justArRinze/status/1591779981390413826?ref_src=twsrc%5Etfw">November 13, 2022</a></blockquote> +<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> + +<h2 id="requirements">Requirements</h2> +<p>Install Docker Ubuntu 22.04</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo apt install apt-transport-https ca-certificates curl software-properties-common -y +</span></span><span class="line"><span class="cl">curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - +</span></span><span class="line"><span class="cl">sudo add-apt-repository &#34;deb [arch=amd64] https://download.docker.com/linux/ubuntu jammy stable&#34; +</span></span><span class="line"><span class="cl">sudo apt install docker-ce -y +</span></span><span class="line"><span class="cl">sudo usermod -aG docker $USER +</span></span></code></pre></div><p><strong>Reboot or logout/login</strong></p> +<p>(Optional) GUI Webpage for Managing Docker - Portainer</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">docker volume create portainer_data +</span></span><span class="line"><span class="cl">docker run -d -p 8000:8000 -p 9443:9443 --name portainer \ +</span></span><span class="line"><span class="cl">--restart=always \ +</span></span><span class="line"><span class="cl">-v /var/run/docker.sock:/var/run/docker.sock \ +</span></span><span class="line"><span class="cl">-v portainer_data:/data \ +</span></span><span class="line"><span class="cl">portainer/portainer-ce:2.9.3 +</span></span></code></pre></div><p>Open up browser and navigate to <a href="https://localhost:9443">https://localhost:9443</a></p> +<p><em>Click Advanced and proceed with any certificate errors</em></p> +<h2 id="macos-docker-setup">MacOS Docker Setup</h2> +<p>Setup the MacOS Docker Container with the following docker command</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">docker run -it \ +</span></span><span class="line"><span class="cl"> --device /dev/kvm \ +</span></span><span class="line"><span class="cl"> -p 50922:10022 \ +</span></span><span class="line"><span class="cl"> -v /tmp/.X11-unix:/tmp/.X11-unix \ +</span></span><span class="line"><span class="cl"> -e &#34;DISPLAY=${DISPLAY:-:0.0}&#34; \ +</span></span><span class="line"><span class="cl"> -e GENERATE_UNIQUE=true \ +</span></span><span class="line"><span class="cl"> -e MASTER_PLIST_URL=&#39;https://raw.githubusercontent.com/sickcodes/osx-serial-generator/master/config-custom.plist&#39; \ +</span></span><span class="line"><span class="cl"> sickcodes/docker-osx:monterey +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl"># docker build -t docker-osx --build-arg SHORTNAME=monterey . +</span></span></code></pre></div><p>Use Disk Utility to &ldquo;erase&rdquo; the 270GB virtual disk: <em>Note: This is just virtual and doesn&rsquo;t erase your drive</em></p> +<p><img src="https://christitus.com/images/2022/docker-macos/disk-util.png" alt=""></p> +<h2 id="start-macos-docker-container">Start MacOS Docker Container</h2> +<p>Before we start the container find the name with:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">docker ps -a +</span></span></code></pre></div><p><em>Look for the NAMES column and pick the container name.</em></p> +<p><img src="https://christitus.com/images/2022/docker-macos/container.png" alt=""></p> +<p>Start with the following command NAME = Name from column above</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">docker start NAME +</span></span></code></pre></div><h3 id="portainer-method-for-starting">Portainer Method for Starting</h3> +<p>I love portainer because you can easily manage your containers. Start, Stop, and see resource usage&hellip; Portainer does it all! Here is what mine looks like:</p> +<p><img src="https://christitus.com/images/2022/docker-macos/portainer.png" alt=""></p> +<h2 id="optimize-the-container">Optimize the Container</h2> +<p>Source: <a href="https://github.com/sickcodes/osx-optimizer">https://github.com/sickcodes/osx-optimizer</a></p> +<p>Run the following from Root Prompt # <code>sudo su</code></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">defaults write com.apple.loginwindow autoLoginUser -bool true +</span></span><span class="line"><span class="cl">mdutil -i off -a +</span></span><span class="line"><span class="cl">nvram boot-args=&#34;serverperfmode=1 $(nvram boot-args 2&gt;/dev/null | cut -f 2-)&#34; +</span></span><span class="line"><span class="cl">defaults write /Library/Preferences/com.apple.loginwindow DesktopPicture &#34;&#34; +</span></span><span class="line"><span class="cl">defaults write com.apple.Accessibility DifferentiateWithoutColor -int 1 +</span></span><span class="line"><span class="cl">defaults write com.apple.Accessibility ReduceMotionEnabled -int 1 +</span></span><span class="line"><span class="cl">defaults write com.apple.universalaccess reduceMotion -int 1 +</span></span><span class="line"><span class="cl">defaults write com.apple.universalaccess reduceTransparency -int 1 +</span></span><span class="line"><span class="cl">defaults write com.apple.Accessibility ReduceMotionEnabled -int 1 +</span></span><span class="line"><span class="cl">defaults write /Library/Preferences/com.apple.SoftwareUpdate AutomaticDownload -bool false +</span></span><span class="line"><span class="cl">defaults write com.apple.SoftwareUpdate AutomaticCheckEnabled -bool false +</span></span><span class="line"><span class="cl">defaults write com.apple.commerce AutoUpdate -bool false +</span></span><span class="line"><span class="cl">defaults write com.apple.commerce AutoUpdateRestartRequired -bool false +</span></span><span class="line"><span class="cl">defaults write com.apple.SoftwareUpdate ConfigDataInstall -int 0 +</span></span><span class="line"><span class="cl">defaults write com.apple.SoftwareUpdate CriticalUpdateInstall -int 0 +</span></span><span class="line"><span class="cl">defaults write com.apple.SoftwareUpdate ScheduleFrequency -int 0 +</span></span><span class="line"><span class="cl">defaults write com.apple.SoftwareUpdate AutomaticDownload -int 0 +</span></span><span class="line"><span class="cl">defaults write com.apple.loginwindow DisableScreenLock -bool true +</span></span><span class="line"><span class="cl">defaults write com.apple.loginwindow TALLogoutSavesState -bool false +</span></span></code></pre></div><h2 id="final-result">Final Result</h2> +<p><img src="https://christitus.com/images/2022/docker-macos/macos-final.png" alt=""></p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/XWo2gnNbeGQ" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Switching to Ubuntu + https://christitus.com/switching-to-ubuntu/ + Mon, 28 Nov 2022 00:00:00 +0000 + + https://christitus.com/switching-to-ubuntu/ + <p>Yes, the title is correct, I&rsquo;m switching to Ubuntu. Don&rsquo;t you hate snaps and GNOME? Yes, but I always say change your Linux install to what you want. Don&rsquo;t like something? Change IT!</p> +<p>But Why? &hellip; Ubuntu does something right!?</p> +<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Interesting Discovery:<br>Debian Server on Laptop 14W<br>Ubuntu Server on Laptop 8W<br>Both minimal and stripped. No custom modifications.</p>&mdash; Chris Titus Tech (@christitustech) <a href="https://twitter.com/christitustech/status/1591540430226628608?ref_src=twsrc%5Etfw">November 12, 2022</a></blockquote> +<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> + +<h2 id="starting-with-server">Starting with Server</h2> +<p>I start with Ubuntu server download <a href="https://ubuntu.com/download/server">https://ubuntu.com/download/server</a> and then strip out SNAPD before adding any desktop environment. This makes it so I can avoid all the things I don&rsquo;t like about Ubuntu, while getting the benefits of their Kernel optimizations and packaging.</p> +<p>Will Ubuntu always be better than Debian for kernel and packaging? No, in fact, Debian is adding non-free firmware packages into their base installer and will no longer be second class citizen on new installs and you won&rsquo;t need to go hunting for a non-free ISO any longer.</p> +<h3 id="removing-snapcraft-or-snaps">Removing Snapcraft or Snaps</h3> +<p>Run the following commands to remove snapd and also hold the package to prevent it from reinstalling.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo apt purge snapd +</span></span><span class="line"><span class="cl">sudo apt-mark hold snapd +</span></span></code></pre></div><h3 id="avoiding-certain-packages">Avoiding certain packages</h3> +<p>The downside to the following approach is Ubuntu has packages, such as: Firefox and others that will try to install the snap version.</p> +<p>I highly recommend installing NIX OS env to get around this limitation, as this is what I do with every install on every distribution anyways.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">curl -L https://nixos.org/nix/install | sh +</span></span></code></pre></div><p><em>For a reference guide check out my Nix Package Manager article: <a href="https://christitus.com/nix-package-manager/">https://christitus.com/nix-package-manager/</a></em></p> +<h2 id="installing-your-desktop">Installing Your Desktop</h2> +<p>The easiest method for installing your desktop is using <code>tasksel</code> from the terminal.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo apt install tasksel -y +</span></span></code></pre></div><p>Run it with <code>sudo tasksel</code></p> +<p><img src="https://christitus.com/images/2022/switching-to-ubuntu/tasksel.png" alt=""></p> +<p>Select the Debian Desktop Environment at top and the desktop environment that you want to use.</p> +<p><em>Note: While this method is easy, it will install some bloat that you may wish to remove.</em></p> +<h3 id="advanced-option">Advanced Option</h3> +<p>Using my window manager set up, which requires manual intervention from <a href="https://github.com/christitustech/ubuntu-titus/">https://github.com/christitustech/ubuntu-titus/</a>.</p> +<p>Final Result:</p> +<p><img src="https://christitus.com/images/2022/switching-to-ubuntu/ubuntu-titus.jpg" alt=""></p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/UvSLMzkog1g" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + One Tool for Everything + https://christitus.com/one-tool-for-everything/ + Fri, 25 Nov 2022 00:00:00 +0000 + + https://christitus.com/one-tool-for-everything/ + <p>A massive update has arrived for the Windows Utility! Check out all the new features.</p> +<p>Run Directly from PowerShell with Admin</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">irm christitus.com/win | iex +</span></span></code></pre></div><h2 id="new-features">New Features</h2> +<ul> +<li>Tooltip addition to Tweaks</li> +<li>Auto Login Added</li> +<li>Manually Set DNS Servers</li> +<li>Large number of new program additions</li> +</ul> +<h2 id="bug-fixes">Bug Fixes</h2> +<ul> +<li>Program installed pops up before install complete</li> +<li>Improved Readme on Github</li> +<li>Better Scaling for large monitors</li> +<li>Undo Tweak Fixes</li> +<li>Better Button Placement</li> +</ul> +<h2 id="live-tracker">Live Tracker</h2> +<p><a href="https://github.com/users/ChrisTitusTech/projects/1/views/1">https://github.com/users/ChrisTitusTech/projects/1/views/1</a></p> +<h2 id="new-tweak-options">New Tweak Options</h2> +<p><img src="https://christitus.com/images/2022/one-tool-for-everything/tweaks.png" alt=""></p> +<h2 id="github-project">GitHub Project</h2> +<p>Check out the official Github page @ <a href="https://github.com/ChrisTitusTech/winutil">https://github.com/ChrisTitusTech/winutil</a></p> +<h2 id="donate-and-get-the-executable">Donate and Get the Executable</h2> +<p>Want to run from an exe file? Donate $10 @ <a href="https://www.cttstore.com/windows-toolbox">https://www.cttstore.com/windows-toolbox</a></p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/vXyMScSbhk4" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Best Browser Extensions + https://christitus.com/best-browser-extensions/ + Wed, 23 Nov 2022 00:00:00 +0000 + + https://christitus.com/best-browser-extensions/ + <p>These extensions make life easier when using a browser.</p> +<h2 id="the-list">The List</h2> +<ul> +<li><a href="https://chrome.google.com/webstore/detail/authenticator/bhghoamapcdpbohphigoooaddinpkbai">Authenticator</a> - 2 Factor for websites</li> +<li><a href="https://chrome.google.com/webstore/detail/checker-plus-for-google-c/hkhggnncdpfibdhinjiegagmopldibha">Checker Plus</a> - Google Calendar with 1-click</li> +<li><a href="https://chrome.google.com/webstore/detail/clickclean/ghgabhipcejejjmhhchfonmamedcbeod">Click and Clean</a> - History and Cache cleaning</li> +<li><a href="https://chrome.google.com/webstore/detail/get-rss-feed-url/kfghpdldaipanmkhfpdcjglncmilendn">Get RSS Feed URL</a> - Easily grab the RSS feed for a website</li> +<li><a href="https://chrome.google.com/webstore/detail/gofullpage-full-page-scre/fdpohaocaechififmbbbbbknoalclacl">GoFullPage</a> - Full Page Screen Capture</li> +<li><a href="https://chrome.google.com/webstore/detail/midnight-lizard/pbnndmlekkboofhnbonilimejonapojg">Midnight Lizard</a> - Dark mode everywhere</li> +<li><a href="https://chrome.google.com/webstore/detail/momentum/laookkfknpbbblfpciffpaejjkokdgca">Momentum</a> - Focused Start Screen (Great for Brave users)</li> +<li><a href="https://chrome.google.com/webstore/detail/notifier-for-github/lmjdlojahmbbcodnpecnjnmlddbkjhnn">Notifier for GitHub</a> - Notification Panel for GitHub</li> +<li><a href="https://www.anrdoezrs.net/click-9109049-14329390">Roboform Password Management</a> (Bitwarden is a good alternative)</li> +<li><a href="https://chrome.google.com/webstore/detail/web-highlights-pdf-web-hi/hldjnlbobkdkghfidgoecgmklcemanhm">Web Highlights</a> - Highlight parts of a webpage</li> +</ul> +<h3 id="security">Security</h3> +<p><img src="https://christitus.com/images/2022/best-browser-extensions/auth.png" alt=""></p> +<p><strong>Authenticator</strong> is great for simple two factor, but I wouldn&rsquo;t use this for a bank account. These 2FA codes are synced to the cloud for convenience.</p> +<p><img src="https://christitus.com/images/2022/best-browser-extensions/clickandclean.png" alt=""></p> +<p><strong>Click and Clean</strong> will clean our history, cache, and much more. The built in browser cleaning and history management isn&rsquo;t good. This makes it a complete solution for security, privacy, and maintenance.</p> +<p><img src="https://christitus.com/images/2022/best-browser-extensions/roboform.png" alt=""></p> +<p><strong>Password Manager</strong> is something everyone should use. I&rsquo;ve used <a href="https://www.anrdoezrs.net/click-9109049-14329390">RoboForm</a> for over 10 years and my personal recommendation for automation. Bitwarden is a bit newer and some features like FIDO keys which make also makes it a strong choice. Both password manager offer easy export and import of ALL passwords, which is a vital feature when you use these services to avoid getting &ldquo;locked in&rdquo;.</p> +<p><em>Note: Roboform is currently running a 50% off sale via the link above for Cyber Monday/Black Friday and generally provide a 30% off link after.</em></p> +<p>The one thing I caution you against is using All-In-One password managers, like McAfee, Nord, and others. The bundles you get will lock you in to their password managers that can hold you hostage if they have breaches and you want to move on.</p> +<h3 id="convenience">Convenience</h3> +<p><img src="https://christitus.com/images/2022/best-browser-extensions/checker-plus.png" alt=""></p> +<p><strong>Checker Plus</strong> perfect heads up calendar display with easy add for incoming events.</p> +<p><img src="https://christitus.com/images/2022/best-browser-extensions/rss-feeds.png" alt=""></p> +<p><strong>Get RSS Feed URL</strong> will get those hidden RSS feeds for any website.</p> +<p><img src="https://christitus.com/images/2022/best-browser-extensions/fullscreen.png" alt=""></p> +<p><strong>GoFullPage</strong> captures the ENTIRE webpage and can output it to a PDF or PNG for later use.</p> +<p><img src="https://christitus.com/images/2022/best-browser-extensions/midnight-lizard.png" alt=""></p> +<p><strong>Midnight Lizard</strong> Dark mode and other color customizations.</p> +<p><img src="https://christitus.com/images/2022/best-browser-extensions/momentum.jpg" alt=""></p> +<p><strong>Momentum</strong> is an essential extension for any brave browser user. Brave has one of the worst start screens with crypto ads and other BS that no one likes. This extension fixes that.</p> +<p><img src="https://christitus.com/images/2022/best-browser-extensions/github-notifications.png" alt=""></p> +<p><strong>Notifier for GitHub</strong> shows GitHub notifications.</p> +<p><img src="https://christitus.com/images/2022/best-browser-extensions/highlights.png" alt=""></p> +<p><strong>Web Highlights</strong> is a great way to highlight a page as you read, which helps your mind retain what you are reading, but also saves it into the logged in account which can be referred to later.</p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/j-eK_T-FWIo" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Why We Don't Browse the Internet Anymore + https://christitus.com/why-we-dont-browse-the-internet-anymore/ + Mon, 21 Nov 2022 00:00:00 +0000 + + https://christitus.com/why-we-dont-browse-the-internet-anymore/ + <p>The problem with the modern internet is ads, sponsored posts, and pay walls. Enter RSS feeds as a solution.</p> +<p>Subscribe to the sites and information you want to see and not have an algorithm decide what influences you. This requires &ldquo;fixing&rdquo; RSS and downloading articles, but the payout is amazing. How many people use RSS? Here is poll I ran on Twitter.</p> +<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Do you use RSS?</p>&mdash; Chris Titus Tech (@christitustech) <a href="https://twitter.com/christitustech/status/1589727064957284352?ref_src=twsrc%5Etfw">November 7, 2022</a></blockquote> +<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> + +<h2 id="how-we-used-to-browse-the-internet">How we used to browse the Internet</h2> +<p><img src="https://christitus.com/images/2022/why-we-dont-browse-the-internet-anymore/altavista.png" alt=""></p> +<p>The era of altavista, dogpile, askjeeves, yahoo, excite, lycos, and others was an era of innovation and competition. There was a heated rivalry between Internet Exploader and Netscape, which Microsoft inevitably won with dirty business practices. That era was a time of discovery and businesses were figuring out how to make money on the internet.</p> +<p>Information was scattered everywhere and the web was decentralized among hundreds of companies. When we &ldquo;logged on&rdquo; you made decisions on what to do. Sometimes you wanted to play a game, or stumble upon a new website, or browse a news group. Almost nothing curated and uniform. This is often referred to as Web 1.0.</p> +<h2 id="how-we-use-the-internet-today">How we use the Internet today</h2> +<p><img src="https://christitus.com/images/2022/why-we-dont-browse-the-internet-anymore/google.png" alt=""></p> +<p>We google anything we want, use our chromium browsers, and social media for everything else. Between Google, Facebook (I&rsquo;m not calling it Meta), and Amazon we have everything. Facebook is dying off and for old people raging about some political garbage, Amazon we order anything want to appear on our doorstep, and Google is what powers almost every search we do.</p> +<p>When we find the site we are looking for, it ends up with tons of ads or paywalled. Even worse, some reputable sites sell &ldquo;sponsored posts&rdquo; where the advertising gets posted directly in the feed. Imagine watching a television show and then in the third episode its nothing but a giant Subway ad. This is our modern internet.</p> +<h2 id="how-to-fix-it-with-rss">How to fix it with RSS</h2> +<p>Really Simple Syndication or RSS for short, is used to get updates from websites whenever something is posted. You have a listing of the entire website and you can pick the article you want to read. Even better you can subscribe to YouTube Channels and other social feeds to RSS as well.</p> +<p>The problem? Ads, Brief Summaries, and redirects. We fix this by using a feed aggregator and never leave our RSS reader.</p> +<p>The other problem with RSS Readers online are expensive using feedly($8), inoreader($10), and newsblur($3) per month. This used all be free with Google Reader, but in typical Google fashion they killed Reader.</p> +<h3 id="feed-aggregation">Feed Aggregation</h3> +<p>I use docker self-hosted aggregator <a href="https://github.com/heussd/fivefilters-full-text-rss-docker">https://github.com/heussd/fivefilters-full-text-rss-docker</a> or if you want to pay money you can use <a href="http://ftr.fivefilters.org/">five filters aggregator</a></p> +<p>Here is my docker command to install and configure it on my docker server using port 50000</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">docker run -d \ +</span></span><span class="line"><span class="cl">--name=full-test-rss \ +</span></span><span class="line"><span class="cl">-p 50000:80 \ +</span></span><span class="line"><span class="cl">--restart always \ +</span></span><span class="line"><span class="cl">heussd/fivefilters-full-text-rss:latest +</span></span></code></pre></div><h3 id="feed-reader">Feed Reader</h3> +<p>There are a couple different ways to pull in these RSS feeds. For browsers there is Vivaldi, external programs like Obsidian, and for self-hosted I recommend <a href="https://freshrss.org/">FreshRSS</a></p> +<p>I use my docker server again to host this on port 49999</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">docker run -d \ +</span></span><span class="line"><span class="cl"> --name=freshrss \ +</span></span><span class="line"><span class="cl"> -e PUID=1000 \ +</span></span><span class="line"><span class="cl"> -e PGID=1000 \ +</span></span><span class="line"><span class="cl"> -e TZ=Europe/London \ +</span></span><span class="line"><span class="cl"> -p 49999:80 \ +</span></span><span class="line"><span class="cl"> -v /path/to/data:/config \ +</span></span><span class="line"><span class="cl"> --restart unless-stopped \ +</span></span><span class="line"><span class="cl"> lscr.io/linuxserver/freshrss:latest +</span></span></code></pre></div><h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/nxV0CPNeFxY" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + 5 Essential Terminal Utilities + https://christitus.com/5-terminal-commands/ + Fri, 18 Nov 2022 00:00:00 +0000 + + https://christitus.com/5-terminal-commands/ + <h2 id="tldr">TLDR</h2> +<p><img src="https://christitus.com/images/2022/5-terminal-commands/tldr.png" alt=""></p> +<p>Too long didn&rsquo;t read? The perfect solution for long man pages that we just want some quick examples and basic syntax for a command. TLDR is a vital tool to save you time when learning the terminal.</p> +<h2 id="cmatrix">CMatrix</h2> +<p><img src="https://christitus.com/images/2022/5-terminal-commands/cmatrix.png" alt=""></p> +<p>How can you use Linux without using CMatrix&hellip; It&rsquo;s hard to be cool without it.</p> +<h2 id="trash-cli">Trash-CLI</h2> +<p><img src="https://christitus.com/images/2022/5-terminal-commands/trash-cli.png" alt=""></p> +<p>This is a life saver after you delete a directory or files in terminal and need to get them back. I highly recommend making the following alias in your <code>~/.bashrc</code> file.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">alias rm=&#39;trash -v&#39; +</span></span></code></pre></div><ul> +<li> +<p>Delete a file and send it to the trash: +<code>trash path/to/file</code></p> +</li> +<li> +<p>List all files in the trash: +<code>trash-list</code></p> +</li> +<li> +<p>Interactively restore a file from the trash: +<code>trash-restore</code></p> +</li> +<li> +<p>Empty the trash: +<code>trash-empty</code></p> +</li> +<li> +<p>Permanently delete all files in the trash which are older than 10 days: +<code>trash-empty 10</code></p> +</li> +<li> +<p>Remove all files in the trash, which match a specific blob pattern: +<code>trash-rm &quot;*.o&quot;</code></p> +</li> +<li> +<p>Remove all files with a specific original location: +<code>trash-rm /path/to/file_or_directory</code></p> +</li> +</ul> +<h2 id="autojump">Autojump</h2> +<p><img src="https://christitus.com/images/2022/5-terminal-commands/autojump.png" alt=""></p> +<p>This is my most used terminal utility that saves me the most amount of time. The catch to this program is you must have navigated to the directory at least once in terminal first.</p> +<ul> +<li> +<p>Jump to a directory that contains the given pattern: +<code>j pattern</code></p> +</li> +<li> +<p>Jump to a sub-directory (child) of the current directory that contains the given pattern: +<code>jc pattern</code></p> +</li> +<li> +<p>Open a directory that contains the given pattern in the operating system file manager: +<code>jo pattern</code></p> +</li> +<li> +<p>Remove non-existing directories from the autojump database: +<code>j --purge</code></p> +</li> +<li> +<p>Show the entries in the autojump database: +<code>j -s</code></p> +</li> +</ul> +<h2 id="progress">Progress</h2> +<p>Tired of wondering how much longer the cp, mv, dd, tar, cat, and other Linux coreutil functions take? Progress will tell you!</p> +<ul> +<li> +<p>Show the progress of running coreutils: +<code>progress</code></p> +</li> +<li> +<p>Launch and monitor a single long-running command: +<code>command &amp; progress --monitor --pid $!</code></p> +</li> +<li> +<p>Include an estimate of time remaining for completion: +<code>progress --wait --command rsync</code></p> +</li> +</ul> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/HKB8RUWZIQA" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Fix Corrupted Windows Install + https://christitus.com/fix-corrupt-windows-install/ + Wed, 16 Nov 2022 00:00:00 +0000 + + https://christitus.com/fix-corrupt-windows-install/ + <p>Using SFC and DISM is often done in haste and incorrectly. If you need to fix a corrupted install, then a special DISM command MUST BE issued.</p> +<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Do you know how to restore corrupt windows features using DISM and source the files from a windows ISO?</p>&mdash; Chris Titus Tech (@christitustech) <a href="https://twitter.com/christitustech/status/1587911136879542273?ref_src=twsrc%5Etfw">November 2, 2022</a></blockquote> +<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> + +<h2 id="the-commands">The Commands</h2> +<h3 id="basic-online-command">Basic Online Command</h3> +<p><img src="https://christitus.com/images/2022/fix-corrupt-windows-install/dism-normal.png" alt=""></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">DISM /Online /Cleanup-Image /CheckHealthDISM /Online /Cleanup-Image /CheckHealth +</span></span></code></pre></div><p><em>Note: This will check it&rsquo;s health and cleanup basic corruption errors.</em></p> +<h3 id="command-to-fix-from-windows-iso">Command to Fix From Windows ISO</h3> +<p>Use this command when the basic one fails. Follow these steps:</p> +<ol> +<li>Download the Windows ISO from <a href="https://www.microsoft.com/en-us/software-download/windows10ISO">https://www.microsoft.com/en-us/software-download/windows10ISO</a></li> +<li>Mount the ISO and note the drive letter (ex. E:)</li> +<li>Run DISM with sources flag</li> +</ol> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">DISM /Online /Cleanup-Image /RestoreHealth /Source:E:\Sources\install.wim +</span></span></code></pre></div><p><em>Note: <code>install.wim</code> is known as ESD in some downloads <code>install.esd</code></em></p> +<h2 id="verify-history-and-logs">Verify History and Logs</h2> +<p>Did it run correctly? Was the corruption repaired?</p> +<p>Check the log file at <code>%windir%\Logs\DISM\dism.log</code></p> +<h2 id="sfc---the-worthless-tool">SFC - The Worthless Tool</h2> +<p>System file checker is WORTHLESS! In the best scenario it might tell you about some corruption, but I have never seen it actually repair anything.</p> +<p>Yet every damn guide on the internet recommends you run it. Save your time, and use DISM instead.</p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/jZoR4MayBu0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Shell The Essential App + https://christitus.com/shell-the-essential-app/ + Mon, 14 Nov 2022 00:00:00 +0000 + + https://christitus.com/shell-the-essential-app/ + <p>Context menus have become worse in Windows 11 and weren&rsquo;t good in Windows 10. This application will fix it for both modern Windows operating systems.</p> +<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Do you feel context menus have become worse in Windows 11?</p>&mdash; Chris Titus Tech (@christitustech) <a href="https://twitter.com/christitustech/status/1587824008342429696?ref_src=twsrc%5Etfw">November 2, 2022</a></blockquote> +<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> + +<h2 id="the-app">The App</h2> +<p><img src="https://christitus.com/images/2022/shell-the-essential-app/shell.png" alt=""></p> +<p>I install this app in both Windows 10 and Windows 11. Here is a breakdown of all the context menus that it adds and expands.</p> +<ul> +<li>Access the terminal from anywhere (hold shift to run as admin)</li> +<li>Expanded Files (Create New, Copy Path, and Show hidden)</li> +<li>Developer Options (Vs code launch, build from explorer, etc.)</li> +<li>Goto Shortcuts (Common files and folders, System settings, etc.)</li> +<li>Common sense copy and paste</li> +<li>Create Shortcuts</li> +<li>Program your own command!</li> +</ul> +<p><img src="https://christitus.com/images/2022/shell-the-essential-app/menu.png" alt=""></p> +<h2 id="build-your-own-menu-and-items">Build your own menu and items</h2> +<p>Shell is extremely easy to add commands and custom menus. Launch custom commands with arguments. Here is a quick how-to:</p> +<p>Open <code>C:\Program Files\Nilesoft\Shell\shell.shl</code></p> +<p><img src="https://christitus.com/images/2022/shell-the-essential-app/shl.png" alt=""></p> +<p>Add a custom command and pass arguments by editing the dynamic JSON section:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">dynamic +</span></span><span class="line"><span class="cl">{ +</span></span><span class="line"><span class="cl"> item(title=&#39;Chris Titus Tech YouTube&#39; cmd=&#39;C:\Users\Subscribe\AppData\Local\BraveSoftware\Brave-Browser\Application\brave.exe&#39; args=&#39;https://youtube.com/c/ChrisTitusTech&#39;) +</span></span></code></pre></div><p>The basic syntax is :</p> +<blockquote> +<p>item(title=&lsquo;sample title&rsquo; cmd=&lsquo;executable path and exe&rsquo; args=&lsquo;extra commands&rsquo;)</p> +</blockquote> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/s6YINpJb2dc" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Ubuntus ARM Is Good + https://christitus.com/ubuntus-arm-is-good/ + Fri, 11 Nov 2022 00:00:00 +0000 + + https://christitus.com/ubuntus-arm-is-good/ + <p>ARM Computing has gone mainstream with Raspberry Pi and Mac M1/M2 chips. Harnessing this in a Linux desktop can be interesting. This is where I started using Ubuntu again.</p> +<p>Ubuntu&rsquo;s ARM spin is fantastic at a server level. The main issue I&rsquo;ve had with Ubuntu desktops in the past are it reliance on GNOME&rsquo;s desktop environment and SNAP packages. Both these issues get alleviated when we get in to the server realm. My new PC that I&rsquo;m building on arm using the OrangePi 800 hardware is fantastic with the right software installed on it. That is where Ubuntu ARM enters&hellip;</p> +<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Ubuntu has a GOOD ARM server spin. I&#39;m going to roll with it, It is a great balance of up to date and reliable, which is hard to find in the ARM space on Linux.</p>&mdash; Chris Titus Tech (@christitustech) <a href="https://twitter.com/christitustech/status/1587141986942861315?ref_src=twsrc%5Etfw">October 31, 2022</a></blockquote> +<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> + +<h2 id="the-setup">The Setup</h2> +<p>Download the latest ARM package from <a href="https://ubuntu.com/download/server/arm">https://ubuntu.com/download/server/arm</a>.</p> +<p>After the setup process I did the following tweaks to fix Ubuntu&rsquo;s base to my liking:</p> +<ul> +<li>Disable Snaps</li> +</ul> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">snap list +</span></span><span class="line"><span class="cl">sudo snap remove programs +</span></span></code></pre></div><ul> +<li>Purge snap daemon and prevent reinstall</li> +</ul> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo apt purge snapd +</span></span><span class="line"><span class="cl">sudo apt-mark hold snapd +</span></span></code></pre></div><ul> +<li>Verify the Uninstall</li> +</ul> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">apt list --install | grep snap +</span></span></code></pre></div><h3 id="desktop-environment">Desktop Environment</h3> +<p>The easiest way to set up the system for desktop usage is to use <code>tasksel</code> and then pick the desktop environment that you like the best.</p> +<p>My recommendations:</p> +<ul> +<li>Windows Users - KDE</li> +<li>MacOS users - GNOME</li> +</ul> +<p>This will give you the base install for your ARM system.</p> +<h2 id="why-ubuntu">Why Ubuntu?</h2> +<p>I haven&rsquo;t talked well about Ubuntu in the past because of their position on Snaps and switching to GNOME as their desktop environment. The reason I am choosing Ubuntu ARM is because it fit best for my use case. I needed up-to-date packages and reliability in the ARM space. I&rsquo;d use Debian testing or sid for this task, but their ARM spins were not reliable on these branches from my testing. There were display issues and compatibility from missing firmware and non-free. To fix this, I download the non-free firmware ISO, but for ARM these are hard to find. Even after upgrading Debian stable to testing or sid, the ARM servers had experimental packages that didn&rsquo;t work with the hardware I was using. I had none of these issues from Ubuntu&rsquo;s ARM distribution.</p> +<p>For the bleeding edge, there is no better distribution than Arch and there ARM branch is one of the best out there. Arch Linux is unstable at it&rsquo;s core and not suitable for a device that I might only use once a week or month. This could be remedied by making it immutable, but having to mess with images is not fun or practical as a single maintainer.</p> +<p>That left me with raspbian or armbian, but both these distributions are downstream from Ubuntu and Debian. This means the packages are stable, but old and I need new packages if I want to use it as a desktop replacement. That left me with one logical choice&hellip; Ubuntu.</p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/mxRVwF2YG3Q" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Windows 22H2 has Problems + https://christitus.com/Windows-22H2-problems/ + Wed, 09 Nov 2022 00:00:00 +0000 + + https://christitus.com/Windows-22H2-problems/ + <p>I&rsquo;ve had a ton of bug reports from 22H2. DO NOT UPDATE to this first Windows 11 update.</p> +<h2 id="the-nature-of-updates-and-security">The Nature of Updates and Security</h2> +<blockquote> +<p>Security is a journey, not a destination - Ralph Waldo Emerson</p> +</blockquote> +<p>The instinct for any Journalist, YouTuber, Media Personality, or Technical Writer to make a sensational title. This one could be &ldquo;Windows 22H2 is a Nightmare and it will steal the DNA from your babies.&rdquo;</p> +<p>That would get a stupid amount of views and ad revenue, but it wouldn&rsquo;t teach you anything. Instead we need to understand the nature of update and with that knowledge, we will be better computer users.</p> +<p>Any system that updates frequently will have bugs. Fix two bugs&hellip; One more appears. This is the nature of computing.</p> +<h2 id="microsoft-known-issues-and-updates">Microsoft Known Issues and Updates</h2> +<p>Source article: <a href="https://learn.microsoft.com/en-us/windows/release-health/status-windows-11-22h2">https://learn.microsoft.com/en-us/windows/release-health/status-windows-11-22h2</a></p> +<p><em>Issues on 10-22-2022</em></p> +<p><img src="https://christitus.com/images/2022/Windows-22H2-problems/ms-known-issues.png" alt=""></p> +<p><em>Issues update on 10-31-2022</em></p> +<p><img src="https://christitus.com/images/2022/Windows-22H2-problems/issue-update.png" alt=""></p> +<h2 id="should-you-update">Should you Update?</h2> +<p>HELL NO!</p> +<p>Being on the newest release of anything can be fun and dealing with new shining features is a blast, but it comes with a cost. You will experience issues and more &ldquo;known issues&rdquo; will appears as more and more users adopt it. Microsoft doesn&rsquo;t have a good quality control department and I wait AT LEAST 1 year after feature updates hit the market before upgrading. For my Windows instances, I wait 2 years.</p> +<h2 id="is-windows-bad-at-updates">Is Windows Bad at Updates?</h2> +<p>This isn&rsquo;t a yes or no answer, but the more complex and old a system is, the greater margin for errors to occur. The foundation of Windows hasn&rsquo;t drastically changed in decades and this makes updating the platform a monumental task for even the mammoth corporation that is Microsoft.</p> +<p>Microsoft has some talented employees, but it takes time to add polish and with new feature updates pushed out the door every 6 months&hellip; Expect this to be a trend for ALL future feature updates.</p> +<h2 id="source-articles">Source Articles</h2> +<ul> +<li><a href="https://pureinfotech.com/windows-11-22h2-bug-remote-desktop/">https://pureinfotech.com/windows-11-22h2-bug-remote-desktop/</a></li> +<li><a href="https://learn.microsoft.com/en-us/windows/release-health/status-windows-11-22h2">https://learn.microsoft.com/en-us/windows/release-health/status-windows-11-22h2</a></li> +<li><a href="https://windowsreport.com/windows-11-22h2-bugs/">https://windowsreport.com/windows-11-22h2-bugs/</a></li> +<li><a href="https://www.techradar.com/news/windows-11-22h2-bug-breaks-windows-hello-security-feature">https://www.techradar.com/news/windows-11-22h2-bug-breaks-windows-hello-security-feature</a></li> +<li><a href="https://www.thurrott.com/forums/microsoft/windows/thread/major-bugs-in-win10-22h2">https://www.thurrott.com/forums/microsoft/windows/thread/major-bugs-in-win10-22h2</a></li> +</ul> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/ITI1HaFeq_g" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Neovim Is Better + https://christitus.com/neovim-is-better/ + Mon, 07 Nov 2022 00:00:00 +0000 + + https://christitus.com/neovim-is-better/ + <p>I&rsquo;ve never experienced a program with such power and potential than Neovim. It does so much and we are at the beginning as it isn&rsquo;t even to a 1.0 release yet. The best part is the program works on Windows, MacOS, and Linux.</p> +<p>The following tweet encompasses my thoughts and feelings in my first week using Neovim.</p> +<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Ok the more time I spend in Neovim... The more godly I feel. Seriously feels like I&#39;m unlocking the meaning of life...<br>It is just better in every way once configured.<br>Thumbnail preview: <a href="https://t.co/lOyZDXfRTf">pic.twitter.com/lOyZDXfRTf</a></p>&mdash; Chris Titus Tech (@christitustech) <a href="https://twitter.com/christitustech/status/1584944224700702720?ref_src=twsrc%5Etfw">October 25, 2022</a></blockquote> +<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> + +<h2 id="is-this-the-path-for-you">Is this the path for you?</h2> +<p>Neovim is rewarding after configured. The amount of automation, speed, and shear possibilities are limitless, but NOT without it&rsquo;s downside though. I&rsquo;ve spent hours working on my basic configuration and I am still months away before I will be close to completion. I say this as a NOOB! That is because I had no idea what a DAP, LSP, Linter, and other coding terms were before I began this journey.</p> +<p>If you know any of the coding terms and a little LUA, you will have a better starting point than myself. If not, get prepared to learn because there will be a lot of new terms and functionality you will need to know to get the most out of Neovim experience.</p> +<h2 id="what-i-use-neovim-for">What I use Neovim for</h2> +<ul> +<li><strong>Writing</strong> is a difficult task that requires focus and creativity. For me, having the focus mode with a Linter that checks spelling and grammar has made a massive difference. I prefer the linting approach to writing, because it doesn&rsquo;t tell me about sentence structure or grammar until I&rsquo;ve finished my thought and saved.</li> +<li><strong>Configuration Files</strong> in Neovim are a dream for any system admin that doesn&rsquo;t have the luxury of a desktop or are using a remote server. Tab out files, read other contents into an existing file, and have a file explorer with full undo logs. I could go on, but you get the idea.</li> +<li><strong>Coding</strong> is where most people&rsquo;s mind goes with Neovim. You have the rockstars, like primeagen, that make Neovim look like a tool of the gods and mere mortals use other editors.</li> +</ul> +<h2 id="installation">Installation</h2> +<p>With Neovim being so young in releases the latest release you can get is the best. Anything below 0.7 is too low as it won&rsquo;t have the features you will need for the best experience. I highly recommend downloading directly from Neovim&rsquo;s GitHub releases: <a href="https://github.com/Neovim/Neovim/releases/tag/stable">https://github.com/Neovim/Neovim/releases/tag/stable</a></p> +<p>All dependencies and requirements are in my setup.sh for Linux and winsetup.ps1 for Windows from: <a href="https://github.com/ChrisTitusTech/Neovim">https://github.com/ChrisTitusTech/Neovim</a></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">git clone https://github.com/christitustech/Neovim +</span></span><span class="line"><span class="cl">cd Neovim +</span></span><span class="line"><span class="cl">sudo ./setup.sh +</span></span></code></pre></div><h3 id="windows-powershell-alternative">Windows PowerShell Alternative</h3> +<p>I modified PowerShell to also use Neovim. I did make a <code>winsetup.ps1</code> to help aid in the setup, but there will be more manual steps to this setup.</p> +<p>Included cpp compiler and runtime to assist in programming, but the biggest thing to setup is nodejs. This has an automated script that will fix python and other dependencies that are problematic in Windows.</p> +<p>Setting PATH in Windows is your biggest priority for a functional Neovim. Type <code>sysdm.cpl</code> to launch into System Properties and click Advanced -&gt; Environment Variables to set the paths. Add any missing health checks here.</p> +<h2 id="configuration">Configuration</h2> +<p>Instead of making a big modular structure that you see in most Neovim projects, mine is small for ease of learning. It will expand as times goes on, but I want to KISS it&hellip; Keep it stupid simple. There is 3 files:</p> +<ul> +<li><code>init.lua</code> - Initializes Neovim and calls any extra files. These are my main settings and special plugin configurations. _Note: some people use the old <code>init.vim</code> instead of lua, but that defeats the purpose of using Neovim.</li> +<li><code>lua/keymaps.lua</code> - These are all my key bindings for Neovim</li> +<li><code>lua/plugins.lua</code> - List of plugins to load.</li> +</ul> +<h2 id="startup">Startup</h2> +<p>USE <code>:checkhealth</code> FIRST!</p> +<p><img src="https://christitus.com/images/2022/neovim-is-better/checkhealth.png" alt=""></p> +<p>Errors must be fixed to have a functional Neovim experience. Warnings can be ignored, but noted, because you may have failed installs for LSPs, Linters, and other tools.</p> +<h3 id="adding-tools">Adding Tools</h3> +<p><code>:Mason</code></p> +<p><img src="https://christitus.com/images/2022/neovim-is-better/mason.png" alt=""></p> +<p><em>Note: I recommend ONLY installing what you USE!</em></p> +<p>Shortcuts for Mason:</p> +<ul> +<li>i = install</li> +<li>U = upgrade package</li> +<li>X = remove package</li> +</ul> +<h2 id="what-not-to-do">What NOT to do</h2> +<p>Neovim is such a powerful editor that it can do anything. Before you do this, ask yourself, &ldquo;Do I use this?&rdquo; and if not, do NOT install it!</p> +<p>If you want all the plugins and have every language supported, I&rsquo;d recommend Lunar vim or NvChad. These projects do a fantastic job of emulating every part of vscode, while also having an easy install and setup.</p> +<p>I&rsquo;d recommend installing them to see what Neovim is capable of, but I did NOT like them for the long term. This is because Neovim needs a personal touch to see its true power.</p> +<p>I fell in love with Neovim once I started to add the features I used. Remember, you can always expand later.</p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/6VbOLOuiHUI" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Urbackup + https://christitus.com/urbackup/ + Fri, 04 Nov 2022 00:00:00 +0000 + + https://christitus.com/urbackup/ + <p>Want a Universal Backup that works on EVERY operating system and is free + open source? Urbackup is the software you are looking for!</p> +<blockquote class="twitter-tweet"><p lang="en" dir="ltr">What is your Backup Solution?</p>&mdash; Chris Titus Tech (@christitustech) <a href="https://twitter.com/christitustech/status/1584567052404412416?ref_src=twsrc%5Etfw">October 24, 2022</a></blockquote> +<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> + +<h2 id="why-urbackup">Why UrBackup</h2> +<p>This program is absolutely amazing and free! All it&rsquo;s source code is on the internet which made it able to adapt to ALL operating systems. Windows, Mac, Linux&hellip; hell it even has ARM support!</p> +<h2 id="universal-backup-servers">Universal Backup Servers</h2> +<p>There is a ton of different supported servers and even some that are unsupported that still work. Here is the official download page: <a href="http://www.urbackup.org/download.html">http://www.urbackup.org/download.html</a></p> +<p>One notable non-official project is for Synology NAS devices. I use a 64-bit Synology on DSM 7+, so pay attention to your current version if you want to use the project below.</p> +<p>Synology Project: <a href="https://github.com/josef109/spksrc">https://github.com/josef109/spksrc</a></p> +<h3 id="server-dashboard">Server Dashboard</h3> +<p><img src="https://christitus.com/images/2022/urbackup/dash.png" alt=""></p> +<h3 id="automated-terminal-install-and-linux-setup">Automated Terminal Install and Linux Setup</h3> +<p>Linux installs are a complete DREAM! Just paste the command listed under terminal when you use &ldquo;Add New Client&rdquo; Button. Here is an example install:</p> +<p><img src="https://christitus.com/images/2022/urbackup/linux-term.png" alt=""></p> +<h3 id="enable-restore-from-web">Enable Restore from Web</h3> +<p>You need to enable restoration in client configuration to completely control everything from server web interface. Here is a sample client configuration <code>/etc/default/urbackupclientbackend</code></p> +<p><img src="https://christitus.com/images/2022/urbackup/enable-web.png" alt=""></p> +<h2 id="windows-client-setup">Windows Client Setup</h2> +<p>Windows uses a executable that is made with the &ldquo;Add New Client&rdquo; button. By default, windows clients will have full image backup on and no file based backups. I&rsquo;d recommend changing this by adding your home directory or any other important folders, such as: <code>My Documents</code></p> +<h2 id="linux-client-setup">Linux Client Setup</h2> +<p>Linux clients can be installed via terminal and what I recommend.</p> +<p><em>Note: The Linux GUI isn&rsquo;t good and terminal use of <code>urbackupclientctl</code> is used</em></p> +<h3 id="image-backups">Image Backups</h3> +<p>Since urbackup only supports EXT4 and XFS we need LVM setup on these volumes BEFORE installing the distribution. LVM is tricky to setup correctly and will be hard as a beginner. The good thing about Linux is we don&rsquo;t have to worry about full image backups. All our configuration settings are in <code>~/.config</code> and global settings in <code>/etc/</code>. On my installs I mainly backup the <code>.config</code> folder and any other folder where I might put important information that would be isolated to that computer.</p> +<h3 id="setting-the-backup-directories">Setting the backup directories</h3> +<p>Here is a sample backup command to add my <code>~/.config</code> directory</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo urbackupclientctl add-backupdir -d $HOME/.config/ +</span></span></code></pre></div><p>Then, check the status using the server web interface.</p> +<p><img src="https://christitus.com/images/2022/urbackup/linux-file.png" alt=""></p> +<h3 id="uninstall">Uninstall</h3> +<p>Uninstallation is a bit weird and needs to be done with this command:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo uninstall_urbackupclient +</span></span></code></pre></div><p><img src="https://christitus.com/images/2022/urbackup/linux-uninstall.png" alt=""></p> +<h2 id="alternatives">Alternatives</h2> +<p>There are a lot of free and open source backup solutions for backup. I picked urbackup because it is the most basic and probably the easiest to setup. However, if you need more features there are more backup solutions that I&rsquo;d consider better for large environments or businesses.</p> +<ul> +<li>BorgBackup <a href="https://www.borgbackup.org/">https://www.borgbackup.org/</a> for cloud paid offering, BorgBase <a href="https://www.borgbase.com/">https://www.borgbase.com/</a></li> +<li>Bacula <a href="https://www.bacula.org/">https://www.bacula.org/</a> Enterprise solutions and fantastic dashboard</li> +</ul> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/tXGVzMUsuE4" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Reagentc Windows Recovery Partition + https://christitus.com/reagentc-windows-recovery-partition/ + Wed, 02 Nov 2022 00:00:00 +0000 + + https://christitus.com/reagentc-windows-recovery-partition/ + <p>Don&rsquo;t know what ReAgentC is or how to use it? This is your guide.</p> +<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Do you know how to use ReAgentC and setup the built-in windows recovery partition?</p>&mdash; Chris Titus Tech (@christitustech) <a href="https://twitter.com/christitustech/status/1584603485261115392?ref_src=twsrc%5Etfw">October 24, 2022</a></blockquote> +<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> + +<h2 id="setup-recovery-partition">Setup Recovery Partition</h2> +<ol> +<li> +<p>Create Recovery Partition at least 1GB in size.</p> +</li> +<li> +<p>Format the recovery partition as NTFS</p> +</li> +<li> +<p>DISKPART Changes</p> +<pre><code>- select disk 0 +- select partition 3 (last partition) +- detail partition (list partition details) +- set id=&quot;de94bba4-06d1-4d40-a16a-bfd50179d6ac&quot; (GPTDisk) _Note: id=27 on MBR_ +NOTE: Reset ids to normal if you did the WRONG partition (MBR set id=7 and GPT set id=&quot;ebd0a0a2-b9e5-4433-87c0-68b6b72699c7&quot;) + - _Create Partition if Missing!_ `cre par pri size=605 id=de94bba4-06d1-4d40-a16a-bfd50179d6ac` + - `format fs=ntfs quick label=WinRE` + - `assign letter=z` + - UEFI only: `gpt attributes=0x8000000000000001` +</code></pre> +</li> +<li> +<p><code>reagentc /disable</code></p> +</li> +<li> +<p>Verify <code>WinRE.wim</code> is installed on local system <code>ls &quot;C:\Windows\System32\Recovery&quot; | FindStr /I &quot;WinRE.wim&quot; ; ls &quot;C:\Windows\System32\Recovery&quot; -Hidden | FindStr /I &quot;WinRE.wim&quot;</code> +5a. If Missing, Copy WinRE.wim and the uninitialized ReAgent.xml files from the installation Media (Easiest method is to use 7zip to extract <code>WinRE.wim</code> from <code>install.wim</code>) to <code>C:\Windows\System32\Recovery</code></p> +</li> +<li> +<p><code>reagentc /enable</code> (this will move WinRe.wim to the Recovery partition and set the GUID and location in ReAgent.xml)</p> +</li> +<li> +<p><code>reagentc /info</code> (Check settings for verification)</p> +</li> +</ol> +<h3 id="if-reagentc-enable-does-not-work">If ReAgentC /enable does NOT work</h3> +<ul> +<li>Manually copy <code>WinRE.wim</code> to <code>Z:\Recovery\WindowsRE</code></li> +<li><code>ReAgentC /SetREimage /Path &quot;Z:\Recovery\WindowsRE&quot;</code></li> +<li><code>ReAgentC /Enable</code></li> +<li>Verify with <code>ReAgentC /Info</code></li> +</ul> +<h2 id="rebooting-to-recovery-partition">Rebooting to Recovery Partition</h2> +<p>If you can boot in to Windows, hold shift while pressing restart. This will reboot your PC into a menu. Select <em>Advanced Options</em></p> +<p>Another method to reach this screen is to have the boot fail 3 times. A reboot during the load screen will count as a failure.</p> +<p>F8 is an older method that doesn&rsquo;t work unless enabled, but was a great way to get to the menu. I&rsquo;m adding this to my Windows Utility Tweaks section.</p> +<p><img src="https://christitus.com/images/2022/reagentc-windows-recovery-partition/recovery.png" alt=""></p> +<h3 id="startup-repair-and-settings">Startup Repair and Settings</h3> +<p>Startup Repair almost never works, but once in a blue moon is beneficial. Startup Settings can send you to safe mode.</p> +<h3 id="command-prompt">Command Prompt</h3> +<p>Here are the highlights of a recovery partition:</p> +<ul> +<li>Copy Files</li> +<li>Chkdsk for failing hard drives</li> +<li>SFC/DISM repairs corrupt system files (<code>sfc /scannow</code> and <code>dism /image:c:\ /cleanup-image /restorehealth</code>)</li> +</ul> +<p><img src="https://christitus.com/images/2022/reagentc-windows-recovery-partition/sfc.png" alt=""></p> +<ul> +<li>Regedit for editing the registry</li> +</ul> +<p><img src="https://christitus.com/images/2022/reagentc-windows-recovery-partition/regedit.png" alt=""></p> +<h3 id="uninstall-updates">Uninstall Updates</h3> +<p>Bad update and now it doesn&rsquo;t work? Click this and revert it!</p> +<p><img src="https://christitus.com/images/2022/reagentc-windows-recovery-partition/updates.png" alt=""></p> +<h3 id="uefi-firmware-settings">UEFI Firmware Settings</h3> +<p>Loads into BIOS. Can be useful on laptops where you don&rsquo;t know key combination when powering on.</p> +<h3 id="system-restore-and-system-image-recovery">System Restore and System Image Recovery</h3> +<p>I don&rsquo;t use these much, but can be a good last resort option. System Restore generally brings most of the system back to last restore point and System Image is good for recovering Windows if you used the built-in Windows Backup Software to external hard drive.</p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/L7Ss-KKp010" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Pretty Powershell + https://christitus.com/pretty-powershell/ + Mon, 31 Oct 2022 00:00:00 +0000 + + https://christitus.com/pretty-powershell/ + <p>PowerShell is UGLY and cumbersome by default. This Guide fixes that!</p> +<p>The End Result:</p> +<p><img src="https://christitus.com/images/2022/pretty-powershell/end-result.png" alt=""></p> +<h2 id="fixing-the-visuals">Fixing the Visuals</h2> +<p>With all my guides here is the one line script to install &ldquo;most&rdquo; of the needed fixes. I&rsquo;d recommend running it from an admin elevated prompt for installation of OhMyPosh.</p> +<h3 id="one-line-install">One Line Install</h3> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">irm &#34;https://github.com/ChrisTitusTech/powershell-profile/raw/main/setup.ps1&#34; | iex +</span></span></code></pre></div><p>The first thing that needs to be fixed is installing the correct font. Here are screenshots from both Windows 11 using Terminal and Windows 10 using Conhost. After running the above script, you will unzip the <code>cove.zip</code> file from the directory the command above was run from and install those nerd fonts. If you want to download other nerd fonts, go to: <a href="https://www.nerdfonts.com/">https://www.nerdfonts.com/</a></p> +<h3 id="windows-11-font-settings">Windows 11 Font Settings</h3> +<p><img src="https://christitus.com/images/2022/pretty-powershell/win11.png" alt=""></p> +<h3 id="windows-10-font-settings">Windows 10 Font Settings</h3> +<p>In the screenshot below you will see the stock font select and the missing icons. Selecting CaskaydiaCove above Consolas and saving will fix it.</p> +<p><img src="https://christitus.com/images/2022/pretty-powershell/win10.png" alt=""></p> +<h2 id="fixing-the-syntax">Fixing the Syntax</h2> +<p>The defaults are clunky and take too long to type in even when using shorthand. Linux does this better, so lets bring in that syntax to fix it with Aliases in our PowerShell profile.</p> +<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Every time I&#39;m in Windows PowerShell I can&#39;t help but think that the Microsoft Devs were on some heavy drugs when setting commands.<br>I&#39;m going to fix that. <a href="https://t.co/AVaOCoVyOT">pic.twitter.com/AVaOCoVyOT</a></p>&mdash; Chris Titus Tech (@christitustech) <a href="https://twitter.com/christitustech/status/1581708112394096640?ref_src=twsrc%5Etfw">October 16, 2022</a></blockquote> +<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> + +<h3 id="new-aliases">New Aliases</h3> +<p>Here are the following added aliases for quality of life</p> +<ul> +<li>cd&hellip; <code>cd ..\..</code></li> +<li>cd&hellip;. <code>cd ..\..\..</code></li> +<li>dirs &ldquo;Recursive directory listing&rdquo;</li> +<li>admin / su / sudo &ldquo;Elevate to admin prompt&rdquo;</li> +<li>Edit-Profile &ldquo;Edit current powershell $PROFILE&rdquo;</li> +<li>vim <code>nvim</code> &ldquo;Neovim alias&rdquo;</li> +<li>ll &ldquo;file listing, excluding dirs&rdquo;</li> +<li>g &ldquo;cd to Documents\Github&rdquo;</li> +<li>gcom &ldquo;quick github commit&rdquo;</li> +<li>lazyg &ldquo;quick github commit and push&rdquo;</li> +<li>Get-PubIP &ldquo;Grab external IP&rdquo;</li> +<li>uptime</li> +<li>reload-profile</li> +<li>find-file &ldquo;recursive file search from current directory&rdquo;</li> +<li>unzip</li> +<li>grep</li> +<li>touch</li> +<li>df &ldquo;disk free&rdquo;</li> +<li>sed</li> +<li>which</li> +<li>export</li> +<li>pkill &ldquo;process killer&rdquo;</li> +<li>pgrep &ldquo;process finder&rdquo;</li> +</ul> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/LuAipOW8BNQ" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Why I Hate Most Linux Distributions + https://christitus.com/hate-linux-distributions/ + Fri, 28 Oct 2022 00:00:00 +0000 + + https://christitus.com/hate-linux-distributions/ + <p>I love Linux, but the distributions for desktop systems isn&rsquo;t fun to navigate. It&rsquo;s the reason why I haven&rsquo;t done a Distro review in a year or more.</p> +<h2 id="before-i-begin">Before I begin</h2> +<p>Linux itself and GNU tools are some of the best I&rsquo;ve ever used, I actually like systemd, and its display renders are adequate.</p> +<p><img src="https://christitus.com/images/2022/hate.gif" alt="hate"></p> +<h2 id="so-what-is-to-hate">So what is to hate?</h2> +<p>Distributions are often cobbled together and not well optimized with some exceptions, but I&rsquo;m often disappointed from the lack of polish. This isn&rsquo;t a knock against the developers of these distributions, they don&rsquo;t have the resources to succeed. They don&rsquo;t have the massive budgets like the big tech operating system equivelents and why they are so&hellip; strange.</p> +<p>Besides there being 100+ distributions and most of them cannibalizing off each other, they don&rsquo;t have a cohesive system a lot of time. They try to emulate Windows or Mac and always fall short. In the end, they typically all have the same options, but each choose a bit differently.</p> +<p>Choice isn&rsquo;t bad&hellip; Right?</p> +<p>The biggest pitfall is that they all take different design decisions and often fall short in areas. This couldn&rsquo;t be more evident than the success of the Steam Deck and Chrome OS.</p> +<p><img src="https://christitus.com/images/2022/tux-suit.png" alt="linux-suit"></p> +<h2 id="the-year-of-the-corporate-linux-desktop">The Year of the CORPORATE Linux Desktop</h2> +<p>With steamdeck selling over a million units this year, and Chrome OS being a staple in every classroom across America&hellip; a Linux distribution can be far reaching. Chrome OS is Gentoo Linux at it&rsquo;s core and Steam Deck is an immutable version of Arch, so these ARE Linux distributions.</p> +<p>What do they do so well?</p> +<p>You can ask any Linux neckbeard&hellip; they will say they have money, marketing, and influence. This is true, but it isn&rsquo;t the complete picture. I&rsquo;d say the one thing these two distributions do better than ANYONE else is a cohesive vision and quality control. The interfaces don&rsquo;t change and they keep getting better as they age and get updated. No other Linux distribution does this that has such bleeding edge packages.</p> +<p>Both Chrome OS and Steam Deck get update at least once a month and sometimes more often. This is where most Linux distributions fail because they don&rsquo;t have the man power to develop at such a rapid pace or the money to quality test it like these corporate system can.</p> +<p><img src="https://christitus.com/images/2022/debian.png" alt="debian"></p> +<h2 id="the-distribution-i-use">The Distribution I use</h2> +<p>Debian and Fedora. They are MASSIVE and give all the options in the world that you could want. My system will be as good or bad as I can make it, but I decide. If something happens on my system, I screwed up.</p> +<p>This is where the disconnect happens with normal users. They hear Linux is this stable system that never breaks. While this is true in the server realm, Linux desktop is not a consistent experience because of the distributions it has. With too much choice, too many underfunded projects, and little quality control&hellip; there will be problems. Users won&rsquo;t understand this foriegn system, instructions will be out of date or non-existent, and support will be spotty at best.</p> +<p>Last month, Arch Linux had a bad update that BROKE GRUB and users couldn&rsquo;t boot their system for example.</p> +<p><img src="https://christitus.com/images/2022/hate-linux-distributions/doom.png" alt=""></p> +<h2 id="is-linux-desktop-doomed">Is Linux Desktop Doomed?</h2> +<p>Not by a long shot! I&rsquo;ll continue using mine as a main staple for a long time yet. I just don&rsquo;t see the community run Linux distributions ever hitting mainstream. That&rsquo;s ok!</p> +<p>What WILL Happen is big companies like Steam, Google, and others, will take Linux and refine their own VISION of the perfect computer using it. All these companies will make better and better verisons of Linux and we won&rsquo;t be talking about Linux distrubtions anymore.</p> +<p>What about FOSS and the neckbeards that Linux IS founded on!?! Well&hellip; there is always BSD.</p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/KT0m9DM8moc" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Installing Appx Without Microsoft Store + https://christitus.com/installing-appx-without-msstore/ + Wed, 26 Oct 2022 00:00:00 +0000 + + https://christitus.com/installing-appx-without-msstore/ + <p>Do you have a bare version of windows LTSC or highly stripped out ISO image that doesn&rsquo;t have the Microsoft Store? This is the guide to show you how to install appx and other apps without it.</p> +<h2 id="winget-installation">Winget Installation</h2> +<p>Using the powershell and a couple projects we can install winget. You need the Microsoft sanctioned script repository called PSGallery. It has some system admin scripts that are clutch when all you have is powershell.</p> + + + + + <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ps1" data-lang="ps1"><span class="line"><span class="cl"><span class="nb">Set-PSRepository</span> <span class="n">-Name</span> <span class="s1">&#39;PSGallery&#39;</span> <span class="n">-InstallationPolicy</span> <span class="n">Trusted</span> +</span></span><span class="line"><span class="cl"><span class="nb">Install-Script</span> <span class="n">-Name</span> <span class="nb">winget-install</span> <span class="n">-Force</span> +</span></span><span class="line"><span class="cl"><span class="nb">winget-install</span><span class="p">.</span><span class="py">ps1</span> +</span></span></code></pre></div> + + + +<h2 id="what-this-does">What this does</h2> +<p>It grabs the script from <a href="https://www.powershellgallery.com/packages/winget-install/0.0.4">https://www.powershellgallery.com/packages/winget-install/0.0.4</a> and runs it. The script itself utilizes NuGet and other tools that are in every Windows installation to install the dependancies, before retrieving the winget packages.</p> +<h2 id="why-this-is-better">Why this is better</h2> +<p>This way is far superior to other methods as most will fail in a stripped down Windows like the one made from my <a href="https://christitus.com/ntlite-guide/">NTLite Build</a>.</p> +<p><img src="https://christitus.com/images/2022/but-why.gif" alt="but-why"></p> +<p>The package that is often missing and hard to install manually is <code>Microsoft.UI.Xaml</code> the typical method to install this is using NuGet Package Manager inside of Visual Studio. You can track down the exact version and appx file from Microsoft&rsquo;s repository here: <a href="https://store.rg-adguard.net/">https://store.rg-adguard.net/</a>, but this is overly cumbersome and why I recommend the PSGallery approach.</p> +<h2 id="how-to-manually-get-any-appx">How to Manually get ANY Appx</h2> +<p>Using the <a href="https://store.rg-adguard.net/">https://store.rg-adguard.net/</a> site we can snatch any appx as long as we know the package name.</p> +<p>Get product id from <a href="https://apps.microsoft.com/store/apps">https://apps.microsoft.com/store/apps</a></p> +<p><img src="https://christitus.com/images/2022/installing-appx-without-msstore/app-store.png" alt=""></p> +<p>Then grab the appx from rg-adguard AND its dependancies&hellip; like this:</p> +<p><img src="https://christitus.com/images/2022/installing-appx-without-msstore/rg-adguard.png" alt=""></p> +<h3 id="direct-download-with-script">Direct Download with Script</h3> +<p>Here is quick snippit that you can toss the product id in to pull it down from PowerShell.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">$apiUrl = &#34;https://store.rg-adguard.net/api/GetFiles&#34; +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl">$productUrl = &#34;https://www.microsoft.com/store/productId/9nblggh5r558&#34; # To Do +</span></span><span class="line"><span class="cl">#$productUrl = &#34;https://www.microsoft.com/store/productId/9MSPC6MP8FM4&#34; # Whiteboard +</span></span><span class="line"><span class="cl">#$productUrl = &#34;https://www.microsoft.com/store/productId/9WZDNCRFJBB1&#34; # Wireless Display Adapter +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl">$downloadFolder = Join-Path $env:TEMP &#34;StoreDownloads&#34; +</span></span><span class="line"><span class="cl">if(!(Test-Path $downloadFolder -PathType Container)) { +</span></span><span class="line"><span class="cl"> New-Item $downloadFolder -ItemType Directory -Force +</span></span><span class="line"><span class="cl">} +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl">$body = @{ +</span></span><span class="line"><span class="cl"> type = &#39;url&#39; +</span></span><span class="line"><span class="cl"> url = $productUrl +</span></span><span class="line"><span class="cl"> ring = &#39;RP&#39; +</span></span><span class="line"><span class="cl"> lang = &#39;en-US&#39; +</span></span><span class="line"><span class="cl">} +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl">$raw = Invoke-RestMethod -Method Post -Uri $apiUrl -ContentType &#39;application/x-www-form-urlencoded&#39; -Body $body +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl">$raw | Select-String &#39;&lt;tr style.*&lt;a href=\&#34;(?&lt;url&gt;.*)&#34;\s.*&gt;(?&lt;text&gt;.*)&lt;\/a&gt;&#39; -AllMatches| +</span></span><span class="line"><span class="cl"> % { $_.Matches } | +</span></span><span class="line"><span class="cl"> % { +</span></span><span class="line"><span class="cl"> $url = $_.Groups[1].Value +</span></span><span class="line"><span class="cl"> $text = $_.Groups[2].Value +</span></span><span class="line"><span class="cl"> Write-Host $text +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl"> if($text -match &#34;_(x86|x64|neutral).*appx(|bundle)$&#34;) { +</span></span><span class="line"><span class="cl"> $downloadFile = Join-Path $downloadFolder $text +</span></span><span class="line"><span class="cl"> if(!(Test-Path $downloadFile)) { +</span></span><span class="line"><span class="cl"> Invoke-WebRequest -Uri $url -OutFile $downloadFile +</span></span><span class="line"><span class="cl"> } +</span></span><span class="line"><span class="cl"> } +</span></span><span class="line"><span class="cl">} +</span></span></code></pre></div><h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/__2_41pVHcQ" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Beautiful Bash + https://christitus.com/beautiful-bash/ + Mon, 24 Oct 2022 00:00:00 +0000 + + https://christitus.com/beautiful-bash/ + <p>Tired of an Ugly prompt with no features? Fix it with this guide!</p> +<h2 id="the-look">The Look</h2> +<p>The following is what the end result of the bash prompt will look like:</p> +<p><img src="https://christitus.com/images/2022/beautiful-bash/prompt.png" alt=""></p> +<h2 id="requirements">Requirements</h2> +<p>With all my guides I like to create bash scripts that will auto install and configure everything. You may have heard of the starship prompt, which this uses, but is heavily themed. I also have my included bashrc with a ton of useful aliases.</p> +<p>The setup file will also install autojump which helps you navigate between directories.</p> +<p><img src="https://christitus.com/images/2022/beautiful-bash/alias.png" alt=""></p> +<h2 id="installation">Installation</h2> +<p>Pick a directory to house all the bash files. I have a dedicated Github directory for all the projects I use @ <code>~/GitHub/</code>, but you can pick any directory including your home and then clone mybash repository for install.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">git clone https://github.com/christitustech/mybash +</span></span><span class="line"><span class="cl">cd mybash +</span></span><span class="line"><span class="cl">./setup.sh +</span></span></code></pre></div><p><em>Note: By default this will symlink your ~/.bashrc and wipe out any customizations you have made!</em></p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/b3W7Ky_aaaY" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Buying Cheap Ebay Graphics Cards + https://christitus.com/buying-cheap-ebay-graphics-card/ + Fri, 21 Oct 2022 00:00:00 +0000 + + https://christitus.com/buying-cheap-ebay-graphics-card/ + <p>With GPU Market prices plummeting and about to go even further down&hellip; I picked up a used GPU from eBay.</p> +<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Just bought a 5700 XT GPU for $170. Let&#39;s see how these used mining cards fair...</p>&mdash; Chris Titus Tech (@christitustech) <a href="https://twitter.com/christitustech/status/1573043990018113539?ref_src=twsrc%5Etfw">September 22, 2022</a></blockquote> +<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> + +<h2 id="the-deal">The Deal</h2> +<p>You can monitor these cards and get some amazing deals. The AMD 5700 XT I picked up for $170 and this was selling for OVER $1000 dollars in 2021. This card is special because its predecessor is the 6700 XT and has only 3% better performance in 1080p format. Amazing right? Well&hellip; it is not quite that simple.</p> +<h2 id="buying-through-ebay">Buying through eBay</h2> +<p><img src="https://christitus.com/images/2022/buying-cheap-ebay-graphics-card/ebay-itemview.png" alt=""></p> +<p>This particular post intrigued me because it the pictures that came with it and the extremely high feedback with high volumes.</p> +<p>The picture I paid the most attention to was the backplate. Notice over the screws the warranty symbol sticker. This is still there, even through they post says they upgraded the thermal pads. This tells me either the picture isn&rsquo;t of the card or the person took extreme care when doing this upgrade. The other thing that stood out was the card itself looked to be in very good condition.</p> +<p><img src="https://christitus.com/images/2022/buying-cheap-ebay-graphics-card/backplate-5700x.png" alt=""></p> +<h2 id="red-flags">Red Flags</h2> +<p>There are couple things I look at when scanning the pictures.</p> +<ul> +<li>Stock photos - HUGE Flag and do not buy anything with a stock photo</li> +<li>Excessive &ldquo;grease stains&rdquo; - On the card zoom in and if you can see smears or what looks like the plastic is wet, then the card was run extremely hot and a lot of the thermal compound leaked and was smeared on the card itself. Most of these used mining cards will have a little bit of that, but pay close attention to it.</li> +<li>No Retail Packaging - This isn&rsquo;t a huge flag, but typically this just means they didn&rsquo;t put much care into keeping the packaging. What else didn&rsquo;t that pay attention to?</li> +</ul> +<h2 id="pricing">Pricing</h2> +<p>Even though I bought this card at $170 and that is below the retail and eBay historical pricing for the past couple years, I could have waited a bit longer. Once the new generation cards come out, these cards will drop even LOWER! That is the perfect time to scoop up a deal. For 1080p gaming, you&rsquo;d have to hate yourself to buy a new generation card. These older gen cards give more performance than you could ever want at that resolution.</p> +<p><img src="https://christitus.com/images/2022/buying-cheap-ebay-graphics-card/ebay.png" alt=""></p> +<p><img src="https://christitus.com/images/2022/buying-cheap-ebay-graphics-card/retail.png" alt=""></p> +<h2 id="issues-once-you-bought-the-card">Issues once you bought the card</h2> +<p>The biggest issue you will run into is bad roms. Most these mining farms flash the vbios with undervolted presets. This can cause blue screens and host of other issues.</p> +<p>This can be fixed with downloading a new bios from <a href="https://www.techpowerup.com/vgabios/">https://www.techpowerup.com/vgabios/</a></p> +<p>Just be very careful and backup the existing bios with a program like GPUZ <a href="https://www.techpowerup.com/download/techpowerup-gpu-z/">https://www.techpowerup.com/download/techpowerup-gpu-z/</a></p> +<p>I&rsquo;d recommend using GPUz for the BIOS backup and also create a backup using the flashing program as well. I bricked my card momentarily when I tried to flash in Windows. This was fixed by booting in Linux and force flashing the vbios from command line.</p> +<p>The other issue is the cards were not taken care of and were run at too high of temperatures. This can cause multiple errors and generally the card is bad. HOWEVER, I have yet to run into this being the case for me. Most times just re-flashing with a factory bios fixes most the issues I&rsquo;ve encountered.</p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/X44gW2BoSpc" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Setting Up the Ultimate Windows 11 + https://christitus.com/setting-up-the-ultimate-windows-11/ + Wed, 19 Oct 2022 00:00:00 +0000 + + https://christitus.com/setting-up-the-ultimate-windows-11/ + <p>This guide shows you how to get the best performing Windows in the lightest package possible.</p> +<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Extreme debloat for windows? Challenge accepted. <a href="https://t.co/YMr9xpAl9E">pic.twitter.com/YMr9xpAl9E</a></p>&mdash; Chris Titus Tech (@christitustech) <a href="https://twitter.com/christitustech/status/1578070224896663553?ref_src=twsrc%5Etfw">October 6, 2022</a></blockquote> +<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> + +<h2 id="before-you-begin">Before you begin</h2> +<p>A custom ISO is a MUST! With extreme debloat we will be removing Windows Update, Security Services, and a variety of other system services that will bring Windows back to the XP era.</p> +<p>If your never used Windows XP, it was an extremely light OS by today&rsquo;s standards, but it came at a cost. The update system was web based, there was no antivirus, and security center didn&rsquo;t appear until SP2 came out. This is a LOT like those days, where the user was responsible for the safety of their system.</p> +<p>I also highly recommend buying NTLite if you want to live in this environment. Yes, it makes the ISO easier, but I absolutely love the fact it can control your Windows updates as well. Once a month, you can open NTLite and pull down the latest updates and apply them through their tool to the live install.</p> +<h2 id="the-process">The Process</h2> +<ul> +<li>Make the NTLite Install Media <a href="https://christitus.com/ntlite-guide/">https://christitus.com/ntlite-guide/</a></li> +<li>Install Windows</li> +<li>Run my Windows utility <a href="https://christitus.com/windows-tool/">https://christitus.com/windows-tool/</a></li> +</ul> +<p><em>Shortcut</em></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">irm christitus.com/win | iex +</span></span></code></pre></div><h2 id="issues-with-minimal-install">Issues with Minimal Install</h2> +<p>Certain dependencies for programs will be missing. When you run my utility installation of winget will likely fail because there isn&rsquo;t a trace of the Microsoft store on the system.</p> +<p>I manually grabbed these using Invoke Rest Method. These are the commands I used in the video below:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">irm &#34;https://aka.ms/Microsoft.VCLibs.x64.14.00.Desktop.appx&#34;-o &#34;./Microsoft.VCLibs.x64.14.00.Desktop.appx&#34; +</span></span><span class="line"><span class="cl">irm &#34;https://github.com/microsoft/winget-cli/releases/download/v1.2.10271/Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle&#34;-o &#34;./Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle&#34; +</span></span><span class="line"><span class="cl">irm &#34;https://github.com/microsoft/winget-cli/releases/download/v1.2.10271/b0a0692da1034339b76dce1c298a1e42_License1.xml&#34;-o &#34;./b0a0692da1034339b76dce1c298a1e42_License1.xml&#34; +</span></span><span class="line"><span class="cl">Add-AppxProvisionedPackage -Online -PackagePath &#34;.\Microsoft.VCLibs.x64.14.00.Desktop.appx&#34; -SkipLicense +</span></span><span class="line"><span class="cl">Add-AppxProvisionedPackage -Online -PackagePath &#34;.\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle&#34; -LicensePath &#34;.\b0a0692da1034339b76dce1c298a1e42_License1.xml&#34; +</span></span></code></pre></div><p>I&rsquo;m working on expanding my tool to give an easy way to do this reliably for these types of minimal systems. If you&rsquo;d like to support my work and its future development, consider grabbing the exe @ <a href="https://cttstore.com/windows-toolbox">https://cttstore.com/windows-toolbox</a></p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/WmOvg0MagW0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Why the Command Line is Overpowered + https://christitus.com/why-the-cli-is-op/ + Mon, 17 Oct 2022 00:00:00 +0000 + + https://christitus.com/why-the-cli-is-op/ + <p>When I say &ldquo;Overpowered&rdquo;, this means the command line interfaces can do things that are otherwise impossible.</p> +<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Do you think the command line in all operating systems (Windows, MacOS, and Linux) is Overpowered?</p>&mdash; Chris Titus Tech (@christitustech) <a href="https://twitter.com/christitustech/status/1578822405518397442?ref_src=twsrc%5Etfw">October 8, 2022</a></blockquote> +<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> + +<h2 id="all-operating-systems">All Operating Systems</h2> +<p>When your think of command line interfaces or CLI, there are a lot of things that come to my mind, but let&rsquo;s go over how they are overpowered in EVERY operating system.</p> +<h3 id="windows">Windows</h3> +<p>Both PowerShell and Command Prompt in Windows can do some amazing things. I use them extensively in both my personal and business life. I have some batch scripts that strip out and delete edge every time Microsoft reinstalls it through an unwanted update.</p> +<p>In Powershell my entire Windows Utility is built through a PS1 script and XAML. I can install Microsoft Store Apps, Clean and Optimize systems quickly. I can also modify Windows in a way where I only have <strong>40</strong> processes running.</p> +<p>These feats are not possible from just using fancy graphics and a mouse. Without them, you are crippled and at the mercy of Microsoft.</p> +<h3 id="macos">MacOS</h3> +<p>Terminal on a mac is the one thing I love about the operating system. Most mac users don&rsquo;t even know how awesome their UNIX based terminal is. They just click around and open up their wallets to the App Store when they need something.</p> +<p>That all changes when you discovery terminal and a program called &ldquo;Homebrew&rdquo;. This gives you the ability to install programs in a flash and it doesn&rsquo;t cost you a dime. I couldn&rsquo;t live without this on a Mac.</p> +<h3 id="linux">Linux</h3> +<p>Terminal is the CLI that made command line cool. The functions you get from this in Linux is absolutely amazing. It is so good that many mundane tasks are simply easier on terminal than using a mouse and the graphic user interface. The entire system can be run from terminal with ease and why the world runs on Linux servers.</p> +<h2 id="is-it-faster-than-a-gui">Is it faster than a GUI?</h2> +<p>There is a debate about this among hobbyists, but any IT professional will tell you that there isn&rsquo;t any comparison. Installing programs, tweaking a system, copying large amounts of files, and many more tasks are not only easier, but incredibly faster. It is not to say there is no place for the GUI, but for tasks you do often, there is no equal that can come close to the efficiency of the command line.</p> +<p>So the question isn&rsquo;t if it is faster than the GUI&hellip; The question is:</p> +<blockquote> +<p>&ldquo;Are you skilled enough to use the command line to its potential?&rdquo;</p> +</blockquote> +<p>I often ask myself this question when I find something cumbersome and I don&rsquo;t know the alternative in the command line. The thing most people miss is, ANYTHING is possible on the command line. It&rsquo;s just whether or not you know it.</p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/pkhazgI3LAo" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Vim the Ultimate Editor + https://christitus.com/vim-the-ultimate-editor/ + Fri, 14 Oct 2022 00:00:00 +0000 + + https://christitus.com/vim-the-ultimate-editor/ + <p>VIM editor is one of the most beloved, but often misunderstood editors in existence. Let&rsquo;s configure it from a noobs perspective and show you it&rsquo;s power.</p> +<h2 id="why-vim">Why VIM?</h2> +<p>There is so many things to learn about VIM, but before we start the question often pops up why not just use VS Code or IntelliJ?</p> +<p>VS Code and IntelliJ have some fantastic ease of use, and great debugging capabilities. There is extension support to add some amazing functionality. So why do many programmers still use VIM? one word: SPEED!</p> +<p>There is nothing that can even compare when it comes to speed from a veteran VIM user. They will blaze through code at the speed of light and change so much on their screen that you will have a hard time following just watching it. Don&rsquo;t believe me? Just watch ANY &ldquo;<a href="https://www.youtube.com/c/ThePrimeagen/videos">The Primeagen</a>&rdquo; videos</p> +<p>So if it&rsquo;s so fast why don&rsquo;t most people use VIM? It&rsquo;s hard and has one of the biggest learning curves that I have ever seen from any program. It will take <strong>YEARS</strong> to master, months to be better than vs code/intellij editors, and weeks of learning to be comparable to any other editor on the market.</p> +<p>However, the payoff is beyond worth it to me. The reward feels so good when you start to <em>get</em> it. The big thing&hellip; you can throw your mouse away, because when you get it&hellip; a mouse is no longer needed.</p> +<h2 id="beginning-steps">Beginning steps</h2> +<p>The very first thing you need to know about vim is the modes.</p> +<ul> +<li>Normal Mode - The default mode you enter into on launch. This allows quick movement, exiting, commands, but you don&rsquo;t &ldquo;type&rdquo; in this mode.</li> +<li>Insert Mode - Pressing <code>i</code> on your keyboard will allow you enter insert mode. This allows you to type text and keyboard input to the open file.</li> +<li>Visual Mode - Pressing <code>v</code> on your keyboard will put you in visual mode. This allows you to highlight and use commands on highlighted syntax.</li> +</ul> +<p><em>Note: You can escape Insert and Visual mode to go back to Normal mode with <code>esc</code> key</em></p> +<p>The other MEME you will always see about vim is you can&rsquo;t exit it&hellip; just turn your computer off. Haha, but seriously exiting vim is probably my favorite thing and that brings us to the first thing to remember:</p> +<blockquote> +<p>&ldquo;If something is slow in vim, there is a way to do it faster in vim&rdquo;</p> +</blockquote> +<p>The official way to save and quit vim is to press the following in normal mode: <code>:wq</code> or faster <code>:x</code> or even faster <code>ZZ</code></p> +<p>To quit without saving: <code>:q!</code> or faster <code>ZQ</code></p> +<p>VIM Cheatsheets:</p> +<ul> +<li><a href="https://devhints.io/vim">https://devhints.io/vim</a></li> +<li><a href="https://vim.rtorr.com/">https://vim.rtorr.com/</a></li> +</ul> +<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Created a cheatsheet to sit on my background.<br>Handy if you are starting to learn vim. <a href="https://t.co/dM6cl3ebho">pic.twitter.com/dM6cl3ebho</a></p>&mdash; Chris Titus Tech (@christitustech) <a href="https://twitter.com/christitustech/status/1577690702200590336?ref_src=twsrc%5Etfw">October 5, 2022</a></blockquote> +<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> + +<h2 id="learning-the-basics">Learning the basics</h2> +<p>Now that you can actually function inside of vim, you might be thinking&hellip; &ldquo;How in the hell do elite programmers use this damn program so fast?&rdquo;.</p> +<p>Movement and muscle memory are the biggest things with vim. It&rsquo;s not just knowing the keys, but using them without thinking. This may seem impossible, but the more you practice the better you will get.</p> +<p>You may have heard of <code>vimtutor</code> which walks you through the basics of vim. However, I&rsquo;d encourage you to treat it like speed runners of your favorite video game. Run <code>vimtutor</code> as often as you can and treat it like a video game. How fast can you run it? Can you beat the old time? Can you complete the entire thing for the first time?!</p> +<p>This is where you will pick up the speed. Between the constant cheatsheets and running <code>vimtutor</code> as often as possible.</p> +<p>Other tips are moving as much of your workflow into vim as possible and customizing it to <strong>YOUR</strong> needs. Don&rsquo;t just copy and paste some vimrc file your favorite programmer uses&hellip; it&rsquo;s made for that person NOT YOU!</p> +<h2 id="making-vim-your-own">Making VIM your own</h2> +<p>It is time to elevate your game to the elite status and making your own <code>.vimrc</code> file. This is where you make it feel awesome, even if you still suck at using vim. It&rsquo;s important that you make vim feel good as this will make you want to continue using it.</p> +<p>I&rsquo;ve been using VIM for a month and this is my <code>.vimrc</code> file. I use a lot of plugins, themes, and just a few hotkeys. This isn&rsquo;t what an experts .vimrc file looks like, as I still consider myself just now leaving the beginner stages into an intermediate user. As time goes on I will expand this file by adding more shortcuts and better hotkeys.</p> +<p>Source: <a href="https://github.com/christitustech/myvim">https://github.com/christitustech/myvim</a> + + + + + <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-vimrc" data-lang="vimrc"><span class="line"><span class="cl"><span class="c">&#34; Plugin Loading</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="nx">call</span> <span class="nx">plug</span>#<span class="nx">begin</span><span class="p">(</span><span class="s1">&#39;~/.vim/plugged&#39;</span><span class="p">)</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="nx">Plug</span> <span class="s1">&#39;itchyny/lightline.vim&#39;</span> <span class="c">&#34;Highlights lines</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="nx">Plug</span> <span class="s1">&#39;joshdick/onedark.vim&#39;</span> <span class="c">&#34;The One Dark Theme</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="nx">Plug</span> <span class="s1">&#39;junegunn/fzf&#39;</span><span class="p">,</span> { <span class="s1">&#39;do&#39;</span>: { <span class="p">-&gt;</span> <span class="nx">fzf</span>#<span class="nx">install</span><span class="p">()</span> } }<span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="nx">Plug</span> <span class="s1">&#39;junegunn/fzf.vim&#39;</span> <span class="c">&#34;Fuzzy find plugin</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="nx">Plug</span> <span class="s1">&#39;junegunn/goyo.vim&#39;</span> <span class="c">&#34;Removes Line numbers for focusing</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="nx">Plug</span> <span class="s1">&#39;mbbill/undotree&#39;</span> <span class="c">&#34;Creates an undo tree</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="nx">Plug</span> <span class="s1">&#39;preservim/nerdtree&#39;</span> <span class="c">&#34;File browser inside vim</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="nx">Plug</span> <span class="s1">&#39;godlygeek/tabular&#39;</span> <span class="c">&#34;Auto formatting</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="nx">Plug</span> <span class="s1">&#39;plasticboy/vim-markdown&#39;</span> <span class="c">&#34;Markdown syntax highlighting</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="nx">Plug</span> <span class="s1">&#39;wakatime/vim-wakatime&#39;</span> <span class="c">&#34;Wakatime tracker</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="nx">Plug</span> <span class="s1">&#39;ryanoasis/vim-devicons&#39;</span> <span class="c">&#34;Cool icons for nerd tree</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="nx">Plug</span> <span class="s1">&#39;Xuyuanp/nerdtree-git-plugin&#39;</span> <span class="c">&#34;nerd tree customization</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="nx">Plug</span> <span class="s1">&#39;907th/vim-auto-save&#39;</span> <span class="c">&#34;auto saves files as you edit</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="nx">Plug</span> <span class="s1">&#39;jdhao/better-escape.vim&#39;</span> <span class="c">&#34;remaps esc key to jj</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="nx">call</span> <span class="nx">plug</span>#<span class="nx">end</span><span class="p">()</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="c"> +</span></span></span><span class="line"><span class="cl"><span class="c">&#34; Startup Settings</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">syntax</span> <span class="nx">on</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="k">let</span> <span class="nx">mapleader</span><span class="p">=</span><span class="s2">&#34; &#34;</span> <span class="c">&#34;Maps Leader to space</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="k">let</span> <span class="nx">NERDTreeShowHidden</span><span class="p">=</span><span class="m">1</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="k">let</span> <span class="nx">g</span>:<span class="nx">auto_save</span> <span class="p">=</span> <span class="m">1</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="k">let</span> <span class="nx">g</span>:<span class="nx">auto_save_events</span> <span class="p">=</span> [<span class="s2">&#34;InsertLeave&#34;</span><span class="p">,</span> <span class="s2">&#34;TextChanged&#34;</span>]<span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="k">let</span> $<span class="nx">FZF_DEFAULT_COMMAND</span> <span class="p">=</span> <span class="s1">&#39;fdfind --type f --hidden --follow --exclude .git --ignore-file ~/.ignore&#39;</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">set</span> <span class="nx">mouse</span><span class="p">=</span><span class="nx">a</span> <span class="c">&#34;Allows mouse usage inside vim. Great for noobs.</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">set</span> <span class="nx">clipboard</span><span class="p">=</span><span class="nx">unnamedplus</span> <span class="c">&#34;Remaps default copy paste to system clipboard</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">set</span> <span class="nx">cursorline</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">highlight</span> <span class="nx">CursorLine</span> <span class="nx">ctermbg</span><span class="p">=</span><span class="nx">Yellow</span> <span class="nx">cterm</span><span class="p">=</span><span class="nb">bold</span> <span class="nx">guibg</span><span class="p">=</span><span class="mh">#2b2b2b</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">set</span> <span class="nx">noerrorbells</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">set</span> <span class="nx">splitbelow</span> <span class="nx">splitright</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">set</span> <span class="nx">tabstop</span><span class="p">=</span><span class="m">2</span> <span class="nx">softtabstop</span><span class="p">=</span><span class="m">2</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">set</span> <span class="nx">shiftwidth</span><span class="p">=</span><span class="m">2</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">set</span> <span class="nx">expandtab</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">set</span> <span class="nx">smartindent</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">set</span> <span class="nx">nofoldenable</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">set</span> <span class="nx">nowrap</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">set</span> <span class="nx">smartcase</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">set</span> <span class="nx">noswapfile</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">set</span> <span class="nx">nobackup</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">set</span> <span class="nx">incsearch</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">set</span> <span class="nx">history</span><span class="p">=</span><span class="m">5000</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">set</span> <span class="nx">nocompatible</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">set</span> <span class="nx">number</span> <span class="nx">relativenumber</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">colorscheme</span> <span class="nx">onedark</span> <span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">set</span> <span class="nx">background</span><span class="p">=</span><span class="nb">dark</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">set</span> <span class="nx">termguicolors</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">filetype</span> <span class="nx">plugin</span> <span class="nx">on</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">set</span> <span class="nx">encoding</span><span class="p">=</span><span class="nx">utf</span><span class="m">-8</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">set</span> <span class="nx">wildmenu</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">set</span> <span class="nx">wildmode</span><span class="p">=</span><span class="nx">longest</span><span class="p">,</span><span class="nx">list</span><span class="p">,</span><span class="nx">full</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">set</span> <span class="nx">laststatus</span><span class="p">=</span><span class="m">2</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="k">if</span> <span class="p">!</span><span class="nx">has</span><span class="p">(</span><span class="s1">&#39;gui_running&#39;</span><span class="p">)</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">set</span> <span class="nx">t_Co</span><span class="p">=</span><span class="m">256</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="k">endif</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">autocmd</span> <span class="nx">FileType</span> * <span class="nx">setlocal</span> <span class="nx">formatoptions</span><span class="p">-=</span><span class="nx">c</span> <span class="nx">formatoptions</span><span class="p">-=</span><span class="nx">r</span> <span class="nx">formatoptions</span><span class="p">-=</span><span class="nx">o</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">set</span> <span class="nx">spell</span> <span class="nx">spelllang</span><span class="p">=</span><span class="nx">en_us</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="c"> +</span></span></span><span class="line"><span class="cl"><span class="c">&#34; Plugin Shortcuts</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">map</span> <span class="p">&lt;</span><span class="nx">Leader</span><span class="p">&gt;</span><span class="nx">f</span> :<span class="nx">NERDTreeToggle</span><span class="p">&lt;</span><span class="nx">CR</span><span class="p">&gt;</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">map</span> <span class="p">&lt;</span><span class="nx">C</span><span class="p">-</span>\<span class="p">&gt;</span> :<span class="nx">Goyo</span><span class="p">&lt;</span><span class="nx">CR</span><span class="p">&gt;</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">nnoremap</span> <span class="p">&lt;</span><span class="nx">F5</span><span class="p">&gt;</span> :<span class="nx">UndotreeToggle</span><span class="p">&lt;</span><span class="nx">CR</span><span class="p">&gt;</span> :<span class="nx">UndotreeFocus</span><span class="p">&lt;</span><span class="nx">CR</span><span class="p">&gt;</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">nnoremap</span> <span class="p">&lt;</span><span class="nx">C</span><span class="p">-</span><span class="nx">f</span><span class="p">&gt;</span> :<span class="nx">Files</span><span class="p">!&lt;</span><span class="nx">CR</span><span class="p">&gt;</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">nnoremap</span> <span class="p">&lt;</span><span class="nx">Leader</span><span class="p">&gt;</span><span class="nx">l</span> :<span class="nx">Tabularize</span> /<span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="k">let</span> <span class="nx">g</span>:<span class="nx">better_escape_shortcut</span> <span class="p">=</span> <span class="s1">&#39;jj&#39;</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="k">let</span> <span class="nx">g</span>:<span class="nx">better_escape_interval</span> <span class="p">=</span> <span class="m">250</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="c"> +</span></span></span><span class="line"><span class="cl"><span class="c">&#34; General Shortcuts</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">nnoremap</span> <span class="nx">S</span> :%<span class="nx">s</span><span class="sr">//</span><span class="nx">g</span><span class="p">&lt;</span><span class="nx">Left</span><span class="p">&gt;&lt;</span><span class="nx">Left</span><span class="p">&gt;</span> <span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">nmap</span> <span class="p">&lt;</span><span class="nx">Leader</span><span class="p">&gt;</span><span class="nx">r</span> :<span class="nx">w</span><span class="p">&lt;</span><span class="nx">CR</span><span class="p">&gt;</span>:<span class="nx">so</span> %<span class="p">&lt;</span><span class="nx">CR</span><span class="p">&gt;</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">map</span> <span class="p">&lt;</span><span class="nx">Leader</span><span class="p">&gt;</span><span class="nx">e</span> $<span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="c"> +</span></span></span><span class="line"><span class="cl"><span class="c">&#34; Persistent_undo</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">set</span> <span class="nx">undodir</span><span class="p">=~</span><span class="sr">/.vim/</span><span class="nx">undodir</span>&#34;<span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">set</span> <span class="nx">undofile</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="k">let</span> <span class="nx">g</span>:<span class="nx">undotree_WindowLayout</span> <span class="p">=</span> <span class="m">2</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="c"> +</span></span></span><span class="line"><span class="cl"><span class="c">&#34; Tabedit keybinds</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">nnoremap</span> <span class="p">&lt;</span><span class="nx">Leader</span><span class="p">&gt;</span><span class="m">1</span> <span class="m">1</span>gt<span class="p">&lt;</span><span class="nx">CR</span><span class="p">&gt;</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">nnoremap</span> <span class="p">&lt;</span><span class="nx">Leader</span><span class="p">&gt;</span><span class="m">2</span> <span class="m">2</span>gt<span class="p">&lt;</span><span class="nx">CR</span><span class="p">&gt;</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">nnoremap</span> <span class="p">&lt;</span><span class="nx">Leader</span><span class="p">&gt;</span><span class="m">3</span> <span class="m">3</span>gt<span class="p">&lt;</span><span class="nx">CR</span><span class="p">&gt;</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">nnoremap</span> <span class="p">&lt;</span><span class="nx">Leader</span><span class="p">&gt;</span><span class="m">4</span> <span class="m">4</span>gt<span class="p">&lt;</span><span class="nx">CR</span><span class="p">&gt;</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">nnoremap</span> <span class="p">&lt;</span><span class="nx">Leader</span><span class="p">&gt;</span><span class="m">5</span> <span class="m">5</span>gt<span class="p">&lt;</span><span class="nx">CR</span><span class="p">&gt;</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">nnoremap</span> <span class="p">&lt;</span><span class="nx">Leader</span><span class="p">&gt;</span><span class="nx">t</span> :<span class="nx">tabnew</span><span class="p">&lt;</span><span class="nx">CR</span><span class="p">&gt;</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">nnoremap</span> <span class="p">&lt;</span><span class="nx">Leader</span><span class="p">&gt;</span><span class="nx">c</span> :<span class="nx">tabclose</span><span class="p">&lt;</span><span class="nx">CR</span><span class="p">&gt;</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="c"> +</span></span></span><span class="line"><span class="cl"><span class="c">&#34; Markdown Edits</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="k">let</span> <span class="nx">g</span>:<span class="nx">vim_markdown_autowrite</span> <span class="p">=</span> <span class="m">1</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="k">let</span> <span class="nx">g</span>:<span class="nx">vim_markdown_no_extensions_in_markdown</span> <span class="p">=</span> <span class="m">1</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="k">let</span> <span class="nx">g</span>:<span class="nx">vim_markdown_conceal</span> <span class="p">=</span> <span class="m">0</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="k">let</span> <span class="nx">g</span>:<span class="nx">vim_markdown_override_foldtext</span> <span class="p">=</span> <span class="m">0</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="k">let</span> <span class="nx">g</span>:<span class="nx">vim_markdown_folding_disabled</span> <span class="p">=</span> <span class="m">1</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="k">let</span> <span class="nx">g</span>:<span class="nx">vim_markdown_new_list_item_indent</span> <span class="p">=</span> <span class="m">0</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="c"> +</span></span></span><span class="line"><span class="cl"><span class="c">&#34; Markdown auto format tables</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="nx">inoremap</span> <span class="p">&lt;</span><span class="nx">silent</span><span class="p">&gt;</span> <span class="p">&lt;</span><span class="nx">Bar</span><span class="p">&gt;</span> <span class="p">&lt;</span><span class="nx">Bar</span><span class="p">&gt;&lt;</span><span class="nx">Esc</span><span class="p">&gt;</span>:<span class="nx">call</span> <span class="p">&lt;</span><span class="nx">SID</span><span class="p">&gt;</span><span class="nx">align</span><span class="p">()&lt;</span><span class="nx">CR</span><span class="p">&gt;</span><span class="nx">a</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="k">function</span><span class="p">!</span> <span class="nx">s</span>:<span class="nx">align</span><span class="p">()</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="k">let</span> <span class="nx">p</span> <span class="p">=</span> <span class="s1">&#39;^\s*|\s.*\s|\s*$&#39;</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="k">if</span> <span class="nx">exists</span><span class="p">(</span><span class="s1">&#39;:Tabularize&#39;</span><span class="p">)</span> &amp;&amp; <span class="nx">getline</span><span class="p">(</span><span class="s1">&#39;.&#39;</span><span class="p">)</span> <span class="p">=~</span># <span class="s1">&#39;^\s*|&#39;</span> &amp;&amp; <span class="p">(</span><span class="nx">getline</span><span class="p">(</span><span class="nx">line</span><span class="p">(</span><span class="s1">&#39;.&#39;</span><span class="p">)</span><span class="m">-1</span><span class="p">)</span> <span class="p">=~</span># <span class="nx">p</span> <span class="p">||</span> <span class="nx">getline</span><span class="p">(</span><span class="nx">line</span><span class="p">(</span><span class="s1">&#39;.&#39;</span><span class="p">)+</span><span class="m">1</span><span class="p">)</span> <span class="p">=~</span># <span class="nx">p</span><span class="p">)</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="k">let</span> <span class="nx">column</span> <span class="p">=</span> <span class="nx">strlen</span><span class="p">(</span><span class="nx">substitute</span><span class="p">(</span><span class="nx">getline</span><span class="p">(</span><span class="s1">&#39;.&#39;</span><span class="p">)</span>[<span class="m">0</span>:<span class="nx">col</span><span class="p">(</span><span class="s1">&#39;.&#39;</span><span class="p">)</span>]<span class="p">,</span><span class="s1">&#39;[^|]&#39;</span><span class="p">,</span><span class="s1">&#39;&#39;</span><span class="p">,</span><span class="s1">&#39;g&#39;</span><span class="p">))</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="k">let</span> <span class="nx">position</span> <span class="p">=</span> <span class="nx">strlen</span><span class="p">(</span><span class="nx">matchstr</span><span class="p">(</span><span class="nx">getline</span><span class="p">(</span><span class="s1">&#39;.&#39;</span><span class="p">)</span>[<span class="m">0</span>:<span class="nx">col</span><span class="p">(</span><span class="s1">&#39;.&#39;</span><span class="p">)</span>]<span class="p">,</span><span class="s1">&#39;.*|\s*\zs.*&#39;</span><span class="p">))</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">Tabularize</span><span class="sr">/|/</span><span class="nx">l1</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">normal</span><span class="p">!</span> <span class="m">0</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="nx">call</span> <span class="nx">search</span><span class="p">(</span><span class="nx">repeat</span><span class="p">(</span><span class="s1">&#39;[^|]*|&#39;</span><span class="p">,</span><span class="nx">column</span><span class="p">)</span>.<span class="s1">&#39;\s\{-\}&#39;</span>.<span class="nx">repeat</span><span class="p">(</span><span class="s1">&#39;.&#39;</span><span class="p">,</span><span class="nx">position</span><span class="p">),</span><span class="s1">&#39;ce&#39;</span><span class="p">,</span><span class="nx">line</span><span class="p">(</span><span class="s1">&#39;.&#39;</span><span class="p">))</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span> <span class="k">endif</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="k">endfunction</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="c"> +</span></span></span><span class="line"><span class="cl"><span class="c">&#34; transparent bg</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="nx">autocmd</span> <span class="nx">vimenter</span> * <span class="nx">hi</span> <span class="nx">Normal</span> <span class="nx">guibg</span><span class="p">=</span><span class="nb">NONE</span> <span class="nx">ctermbg</span><span class="p">=</span><span class="nb">NONE</span><span class="err"> +</span></span></span><span class="line"><span class="cl"><span class="err"> +</span></span></span></code></pre></div> + + +</p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/P88ydZVcm1s" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Pros Use Bleachbit + https://christitus.com/pros-use-bleachbit/ + Wed, 12 Oct 2022 00:00:00 +0000 + + https://christitus.com/pros-use-bleachbit/ + <p>I still see far too many comments with people that still use CCLeaner. Bleachbit is a FAR superior product and it&rsquo;s also free and open source. It won&rsquo;t try to upsell you a bunch of garbage and has a great track record, unlike CCleaner which was hacked and literally installed malware on thousands of PCs.</p> +<blockquote class="twitter-tweet"><p lang="en" dir="ltr">I don&#39;t know why but I keep seeing folks say they use CCleaner. They literally ship bloat and shipped malware a couple years ago. <br>Just use Bleachbit. It&#39;s free and open source while working on Windows, MacOS, and Linux.</p>&mdash; Chris Titus Tech (@christitustech) <a href="https://twitter.com/christitustech/status/1577379725869256734?ref_src=twsrc%5Etfw">October 4, 2022</a></blockquote> +<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> + +<h2 id="ccleaner-history">CCleaner History</h2> +<p>I made a whole article on the CCleaner malware issue, but the main issue today is the program adds to much bloat. From the monitoring service, to the &ldquo;Optimization Service&rdquo; that adds multiple processes to your system. If you want to know more about this here is my past on CCleaner.</p> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/tSm1GcuygM0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + +<h2 id="bleachbit-overview">BleachBit Overview</h2> +<p>As a free and open source tool you simply run Bleachbit when you want to. No extra process run when you aren&rsquo;t using it and it does a fantastic job on ANY system.</p> +<p><img src="https://christitus.com/images/2022/bleachbit.png" alt="bleachbit"></p> +<p>There is a TON of features and it deletes not only system temporary files, but also program specific temporary files like those stored from Discord or your web browser.</p> +<p>Is a program missing that you want cleaned? Chances are the community made a special XML file to clean it @ <a href="https://github.com/bleachbit/cleanerml">https://github.com/bleachbit/cleanerml</a></p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/2oT4qrHmDMY" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Making the Perfect Phone + https://christitus.com/making-the-perfect-phone/ + Mon, 10 Oct 2022 00:00:00 +0000 + + https://christitus.com/making-the-perfect-phone/ + <p>I&rsquo;ve been using a dumbphone for the past month and I see now all the things I&rsquo;ve been missing in Life. However, dumb phones are far from perfect and there are many things that can be fixed to make the perfect phone.</p> +<h2 id="the-overview">The Overview</h2> +<p>The problem with many &ldquo;smartphones&rdquo; of today is they do too much! Having the world of possibilities in your pocket can not only be distracting but can actively sabotage your life. The notifications or you actively avoid real life situations, because you use your phone as a crutch.</p> +<p>This is why you see the rise of the &ldquo;dumbphone&rdquo;, but these devices are far from perfect. I&rsquo;ve used one for the past month and the amount of productivity I&rsquo;ve gained is astonishing. However, it is not without it&rsquo;s problems.</p> +<p>My dumbphone issues:</p> +<ul> +<li>Mobile orders (I had a buffalo wild wings want to see my order # on my phone before they would give me my to-go order.)</li> +<li>Navigation (Go old school with printed maps or simply have a GPS in your car)</li> +<li>Uber / Lyft (These apps are life savers when visiting somewhere and you need to be picked up)</li> +<li>Group Messaging (Depending the phone you picked, you may lose this ability. Mine couldn&rsquo;t do group messages or gifs)</li> +<li>Workout Apps</li> +<li>Camera and Photos</li> +<li>Music Player (YT Music / Spotify)</li> +</ul> +<p>Even with losing ALL of this&hellip; I still preferred the dumbphone experience because of how much it improved my life. It rewired my brain to really focus on the things that the smartphone does well and if I modified it to only do those things&hellip; It would be the PERFECT PHONE!</p> +<p>So what ARE the problems with smartphones?</p> +<ul> +<li>Web Browsing (Having this seems like a pro, but often we rely on this to look up everything and its more of a con in my experience)</li> +<li>Social Media (Time wasters&hellip; need I say more?)</li> +<li>Social Crutch (Elevators, Waiting Rooms, and many more&hellip; The addiction is REAL!)</li> +<li>Low Battery Life ( 1-2 days&hellip; but this is from bloat and constantly picking it up.)</li> +<li>YouTube / YouTube Studio (This is mainly for me, but these apps cost me so much time.)</li> +<li>Email (Checking email through your phone is a massive productivity loss and frankly unprofessional)</li> +</ul> +<p>This isn&rsquo;t that bad as you really are only giving up two things&hellip; Being bored and productivity. Right?</p> +<p>To Simplify why those things are so important:</p> +<ul> +<li>Being Bored = Creativity Fuel</li> +<li>Productivity = Realizing your potential</li> +</ul> +<h2 id="the-solution">The Solution</h2> +<p>Make the Smartphone only do the things that HELP YOU! Debloating your phone will extend your battery life and keep you from launching into the time wasting apps. The easiest way of doing this is with a fantastic project called <a href="https://github.com/0x192/universal-android-debloater">Universal Android Debloater</a>.</p> +<p>This makes it extremely easy to debloat your entire device in a single click.</p> +<h2 id="pre-requisites">Pre-Requisites</h2> +<p>You will need the following installed on your computer:</p> +<ul> +<li>ADB tools (XDA Developers has a fantastic article going over this: <a href="https://www.xda-developers.com/install-adb-windows-macos-linux/">ADB Tool Installation Guide</a></li> +<li>Developer Mode (Simply click 7-times on the about in your phone to enable developer mode)</li> +</ul> +<h3 id="adb-tool-install-cheatsheet">ADB Tool Install Cheatsheet</h3> +<p>Debian Linux</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo apt install android-sdk-platform-tools +</span></span></code></pre></div><p>Windows</p> +<ul> +<li>Download <a href="https://dl.google.com/android/repository/platform-tools-latest-windows.zip">ADB Platform Tools</a></li> +<li>Extract Tools to <code>C:\Windows</code> <em>(This allows you to run adb.exe and fastboot.exe from anywhere)</em></li> +<li>Install drivers for your phone - <a href="https://developer.android.com/studio/run/oem-usb#Drivers">Install Android Device Drivers</a></li> +</ul> +<p>MacOS</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">brew install android-platform-tools +</span></span></code></pre></div><h2 id="install-universal-android-debloater">Install Universal Android Debloater</h2> +<p>From your command line interface (terminal, powershell, etc.) type <code>adb devices</code></p> +<p>Verify your phone is seen</p> +<p>Now download the release from their GitHub <a href="https://github.com/0x192/universal-android-debloater/releases">https://github.com/0x192/universal-android-debloater/releases</a></p> +<p>Then launch the program</p> +<p><img src="https://christitus.com/images/2022/android/uad.png" alt="uad"></p> +<h2 id="usage">Usage</h2> +<p>As a minimalist I recommend starting with removing ALL the recommended packages. Simply select all with the following recommended settings at the top.</p> +<p><img src="https://christitus.com/images/2022/android/select.png" alt="select"></p> +<p>Then add back in any google related packages you might use while keeping your phone slimmed down. I only kept these 4 packages from the recommended settings after I finished.</p> +<p><img src="https://christitus.com/images/2022/android/final.png" alt="final"></p> +<p>Since I was using a Pixel 4a for my main device I also needed to change the default launcher to a more minimal one. Pixel launcher is problematic because of all the dependencies it has. I highly recommend <a href="https://play.google.com/store/apps/details?id=bitpit.launcher&amp;hl=en_US&amp;gl=US">Niagara launcher</a>.</p> +<h2 id="the-final-product">The Final Product</h2> +<p>After the debloat and changing my launcher, this is what my phone looks like now.</p> +<p><img src="https://christitus.com/images/2022/android/home.png" alt="home"></p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/MFbXFG2xDJI" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + How I Setup My Website + https://christitus.com/how-i-setup-my-website/ + Fri, 07 Oct 2022 00:00:00 +0000 + + https://christitus.com/how-i-setup-my-website/ + <p>This shows you have I automate my workflows and setup my website for maximum productivity and search</p> +<p>The best part is this is FREE and will produce a website faster than anything on the web. Netlify, my host, didn&rsquo;t charge anything until I was breaking 100GB of bandwidth and 100,000 active users PER MONTH! Now with double those numbers I pay only $19 a month and have 1 TB (Terabyte) of data per month.</p> +<h2 id="the-workflow-and-overview">The Workflow and Overview</h2> +<p>Typically before I start recording any video, I write an outline and publish it on my website. It&rsquo;s almost like a video script, but also a copy paste guide for either a viewer or just someone searching google.</p> +<p>This is done by using a static site generator. There are bunch on the market, but the one that suited my needs the best is <a href="https://gohugo.io">Hugo</a>. It has a bunch of themes ready to use out of the box @ <a href="https://themes.gohugo.io/">https://themes.gohugo.io/</a> and is extremely modular.</p> +<p>Then there are the annoyances of other website platforms like WordPress. You need to go on the web and use some terrible web based editor that just is slow and takes a long time. Hugo fixes this by using both GitHub and Netlify for deployment. Netlify will &ldquo;host, build, and distribute&rdquo; the content automatically and GitHub will be where you publish when it&rsquo;s ready for the publish stage that Netlify controls.</p> +<p>What this looks like in practice is I issue a <code>hugo new posts/new-post.md</code>, edit it with <code>vim posts/new-post.md</code>, and post it with git commit and push. This allows me to create a page in seconds if I wanted.</p> +<h2 id="the-setup">The Setup</h2> +<p>Install Hugo (I recommend <a href="https://christitus.com/nix-package-manager">NIX Package Manager</a>)</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">nix-env -iA nixpkgs.hugo +</span></span></code></pre></div><p>Do a quick setup that creates the <code>website</code> folder and the needed HUGO framework files with:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">hugo new site website +</span></span></code></pre></div><p>Then we will initialize it with a HUGO theme like so:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-v" data-lang="v"><span class="line"><span class="cl"><span class="nv">cd</span> <span class="nv">website</span> +</span></span><span class="line"><span class="cl"><span class="nv">git</span> <span class="nv">init</span> +</span></span><span class="line"><span class="cl"><span class="nv">git</span> <span class="nv">submodule</span> <span class="nv">add</span> <span class="nv">https</span><span class="p">:</span><span class="c1">//github.com/zzossig/hugo-theme-zzo.git themes/zzo +</span></span></span></code></pre></div><p>I absolutely love the ZZO theme as a beginner. It has some of the best instructions and documentation you will find! <a href="https://zzo-docs.vercel.app/zzo/gettingstarted/installation/">https://zzo-docs.vercel.app/zzo/gettingstarted/installation/</a></p> +<h2 id="usage-and-first-steps">Usage and First Steps</h2> +<p>The first thing you want to do is look over the sample post in <code>/themes</code> under <code>/themes/examplesite</code>. Under here you will see the structure that HUGO uses and how most of the content ends up in the <code>content</code> directory off of root.</p> +<p>The second thing to note is the <code>/content/posts/</code> and seeing the examples here. This will show you the sample markdown file and how it&rsquo;s laid out. Change these and make your first post. Once you figure out a good structure for your posts, you can then edit the default template.</p> +<p>For previewing the changes you can open up a new terminal and just type <code>hugo server</code> from the root <code>website</code> directory.</p> +<p>Now I have three different windows that I&rsquo;m using for the bulk of my workflow:</p> +<ol> +<li>Chrome Window with <a href="https://localhost:1313">https://localhost:1313</a></li> +<li>IDE for editing my markdown files (vs code, vim, etc.)</li> +<li>Extra terminal window running <code>hugo server</code> for real time updates for the chrome window</li> +</ol> +<p><em>Note: You can use terminal inside vs code and with the auto save feature you can see the code get updated on the webpage for every change you make!</em></p> +<h2 id="your-first-modifications">Your First Modifications</h2> +<p>Remember the big thing with HUGO is everything is modular and everything can be changed, because at the end it is simply outputting a static html file.</p> +<p>Once you figure out how you want your posts structured, change the <code>/archtypes/default.md</code>. This template is what each new post will use. This is where you really increase your efficiency as we often find ourselves writing the same few things on each new post we make.</p> +<p>The next modification will probably comes from adding widgets or sidebar components. Instead of directly modifying the <code>/theme/zzo</code> files you can actually look through the partials directory and create your own <code>/layouts/partials</code> in your root that will take precedence over the ones in the theme directory. More in-depth explanation from the official site <a href="https://gohugo.io/templates/partials/">https://gohugo.io/templates/partials/</a>.</p> +<h2 id="complex-theme-modifications">Complex Theme Modifications</h2> +<p>In my past Hugo Guide I went into some pretty big theme modifications (adding search, tags, etc.) Read more about that @ <a href="https://christitus.com/hugo-guide/">https://christitus.com/hugo-guide/</a></p> +<p>Also if you see something you want to copy from my website, everything is on my public GitHub @ <a href="https://github.com/christitustech/website">https://github.com/christitustech/website</a></p> +<p>Adding comments can be done in a multitude of ways, but my absolute favorite instead of using Disqus or commento.io is simply using GitHub to host the comments directly on your website repository! There is an amazing &ldquo;plugin&rdquo; that you can add called <a href="https://github.com/utterance/utterances">https://github.com/utterance/utterances</a> which does all the spam filtering and integrates comments BETTER!</p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/xMv10E561WQ" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + NTLite Guide + https://christitus.com/ntlite-guide/ + Wed, 05 Oct 2022 00:00:00 +0000 + + https://christitus.com/ntlite-guide/ + <p>This Guide shows you the easiest way to configure Windows and make an ISO with NTLite.</p> +<p><img src="https://christitus.com/images/2022/ntlite/ntlite.png" alt="ntlite"></p> +<h2 id="overview">Overview</h2> +<p>NTLite is the best program for making an ISO for a Windows Environment. You have every option you could need, but is often overwhelming for new users. It&rsquo;s why when you pull up NTLite Guide on YouTube you get 30+ Minute long videos.</p> +<p>These options are great for IT Professionals, but for a normal user it is too much and most normal users just end up with a broken Windows install ISO.</p> +<p>That is where import existing profiles that have already been tested by the NTLite community comes into play. You simply unpack the official ISO, apply the profile, and make your custom ISO!</p> +<h2 id="prerequisites">Prerequisites</h2> +<ul> +<li>NTLite costs $40 for a home user and is worth every penny in my opinion. Download and buy from their website <a href="https://ntlite.com">https://ntlite.com</a></li> +<li>Download the presets to import from my GitHub Repository <a href="https://github.com/ChrisTitusTech/ntlite-configs">https://github.com/ChrisTitusTech/ntlite-configs</a> - Credit for it&rsquo;s creation goes to Txmmy from NTLite forums. I&rsquo;m using GitHub to maintain and update it based on user requests.</li> +<li>Install 7zip to extract files from Windows ISO - Windows Terminal install with <code>winget install --id=7zip.7zip -e</code></li> +<li>Download the official Windows ISO <a href="https://www.microsoft.com/en-us/software-download/windows10">https://www.microsoft.com/en-us/software-download/windows10</a></li> +</ul> +<p><img src="https://christitus.com/images/2022/ntlite/download-iso.png" alt="ms-download"></p> +<p><em>Note: In windows it will default to &ldquo;Media Creation Tool&rdquo; to make the iso (see above) You can use Mac/Linux to direct download ISO or User Agent Switch Browser Extension to trick Microsoft</em></p> +<h2 id="the-setup">The Setup</h2> +<p>These are the following steps for the NTLite to make a proper ISO. Extract the Official ISO, Add ISO Files, Load Files, Apply Imported XML Profile, Save New ISO!</p> +<h3 id="extract-windows-iso-file">Extract Windows ISO File</h3> +<p>Right click your <code>windows.iso</code> file and select the &ldquo;extract files&rdquo;. <em>If you don&rsquo;t see the extract files in the context menu then you did NOT install 7zip OR in Windows 11 you need to select &ldquo;show more options&rdquo;</em></p> +<h3 id="preparing-ntlite">Preparing NTLite</h3> +<p>Look at the image below and add the files you extracted above. Follow these steps in order:</p> +<ol> +<li>Select Folder from Add Menu</li> +<li>Delete unneeded Windows versions <em>Ex. Windows Pro N or Windows Educational</em></li> +</ol> +<ul> +<li>Select the Version you DO NEED after before move to Apply</li> +<li>Import the Presets XML File</li> +</ul> +<ol start="3"> +<li>Apply to load the files <em>Note: This will take a LONG time 5-10 minutes on fast systems</em></li> +</ol> +<p><img src="https://christitus.com/images/2022/ntlite/import-image.png" alt="import-image"></p> +<h3 id="customize-image">Customize Image</h3> +<p>There are a TON of customizations you can do here, but DO NOT OVER DO IT! Past the imported presets that automatically set the services you need and a few other quality of life settings, you should also import the drivers for the system you are installing it on. This speeds up the post-install time.</p> +<p>Once you have everything the way you want it, simply apply the settings.</p> +<p><img src="https://christitus.com/images/2022/ntlite/apply-settings.png" alt="apply-settings"></p> +<p><em>Note: This is the longest of all the stages and took almost 15 minutes on a good system</em></p> +<h4 id="dummy-keys-for-windows-10">Dummy Keys for Windows 10</h4> +<p>Here is the list of generic keys for various Windows 10 Editions.</p> +<table> +<thead> +<tr> +<th style="text-align:center">Windows 10 Edition</th> +<th style="text-align:center">Generic Keys</th> +</tr> +</thead> +<tbody> +<tr> +<td style="text-align:center">Windows 10 Home</td> +<td style="text-align:center">YTMG3-N6DKC-DKB77-7M9GH-8HVX7</td> +</tr> +<tr> +<td style="text-align:center">Windows 10 Home N</td> +<td style="text-align:center">4CPRK-NM3K3-X6XXQ-RXX86-WXCHW</td> +</tr> +<tr> +<td style="text-align:center">Windows 10 Pro</td> +<td style="text-align:center">VK7JG-NPHTM-C97JM-9MPGT-3V66T</td> +</tr> +<tr> +<td style="text-align:center">Windows 10 Pro N</td> +<td style="text-align:center">2B87N-8KFHP-DKV6R-Y2C8J-PKCKT</td> +</tr> +<tr> +<td style="text-align:center">Windows 10 Pro for Workstations</td> +<td style="text-align:center">DXG7C-N36C4-C4HTG-X4T3X-2YV77</td> +</tr> +<tr> +<td style="text-align:center">Windows 10 Pro N for Workstations</td> +<td style="text-align:center">WYPNQ-8C467-V2W6J-TX4WX-WT2RQ</td> +</tr> +<tr> +<td style="text-align:center">Windows 10 Pro Education</td> +<td style="text-align:center">8PTT6-RNW4C-6V7J2-C2D3X-MHBPB</td> +</tr> +<tr> +<td style="text-align:center">Windows 10 Pro Education N</td> +<td style="text-align:center">GJTYN-HDMQY-FRR76-HVGC7-QPF8P</td> +</tr> +<tr> +<td style="text-align:center">Windows 10 Education</td> +<td style="text-align:center">YNMGQ-8RYV3-4PGQ3-C8XTP-7CFBY</td> +</tr> +<tr> +<td style="text-align:center">Windows 10 Education N</td> +<td style="text-align:center">84NGF-MHBT6-FXBX8-QWJK7-DRR8H</td> +</tr> +<tr> +<td style="text-align:center">Windows 10 Enterprise</td> +<td style="text-align:center">XGVPP-NMH47-7TTHJ-W3FW7-8HV2C</td> +</tr> +<tr> +<td style="text-align:center">Windows 10 Enterprise N</td> +<td style="text-align:center">WGGHN-J84D6-QYCPR-T7PJ7-X766F</td> +</tr> +<tr> +<td style="text-align:center">Windows 10 Enterprise S</td> +<td style="text-align:center">NK96Y-D9CD8-W44CQ-R8YTK-DYJWX</td> +</tr> +<tr> +<td style="text-align:center">Windows 10 S</td> +<td style="text-align:center">3NF4D-GF9GY-63VKH-QRC3V-7QW8P</td> +</tr> +</tbody> +</table> +<h2 id="create-the-iso">Create the ISO</h2> +<p>Finally, we are ready to make the ISO. Just Click &ldquo;Create ISO&rdquo; and select the location to save it.</p> +<p><img src="https://christitus.com/images/2022/ntlite/create-iso.png" alt="create-iso"></p> +<h2 id="next-steps">Next Steps</h2> +<p>After you have made your ISO file you are now ready to install and finish your configuration</p> +<p>Check out my Windows Utility script and set the Security Updates, Install Extra Programs, and more @ <a href="https://christitus.com/windows-tool/">https://christitus.com/windows-tool/</a></p> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/xLCWtC6UYrM" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Macos on Linux + https://christitus.com/macos-on-linux/ + Mon, 03 Oct 2022 00:00:00 +0000 + + https://christitus.com/macos-on-linux/ + <p>This shows you all the steps to install a MacOS VM in Linux QEMU using Virtual Machine Manager or virt-manager.</p> +<p>Newer Source, but not as polished: <a href="https://github.com/kholia/OSX-KVM">https://github.com/kholia/OSX-KVM</a> +Mac KVM Repository: <a href="https://github.com/foxlet/macOS-Simple-KVM">https://github.com/foxlet/macOS-Simple-KVM</a></p> +<h2 id="requirements">Requirements</h2> +<ul> +<li>A modern Linux distribution. E.g. Ubuntu 20.04 LTS 64-bit or later.</li> +<li>QEMU &gt;= 4.2.0</li> +<li>A CPU with Intel VT-x / AMD SVM support is required (<code>grep -e vmx -e svm /proc/cpuinfo</code>)</li> +</ul> +<h2 id="installation-preparation">Installation Preparation</h2> +<p>Install QEMU and modify your user using <a href="https://christitus.com/vm-setup-in-linux">https://christitus.com/vm-setup-in-linux</a> Guide.</p> +<p>Clone this repository on your QEMU system. Files from this repository are used in the following steps.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">cd ~ +</span></span><span class="line"><span class="cl">git clone --depth 1 --recursive https://github.com/foxlet/macOS-Simple-KVM +</span></span><span class="line"><span class="cl">cd macOS-Simple-KVM +</span></span></code></pre></div><h2 id="installation-media">Installation Media</h2> +<p>This downloads our installation media and I&rsquo;d recommend using Catalina for compatibility and performance.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">./jumpstart.sh --catalina +</span></span></code></pre></div><p><em>Note: Modern NVIDIA GPUs are supported on HighSierra but not on later +versions of macOS. Recommended PCI Passthrough GPU is 5700XT as this works on Catalina and above. If you go with a 6000 Series Card only certain ones will work on Big Sur and Monterey, but not earlier releases.</em></p> +<h2 id="virtual-machine-setup">Virtual Machine Setup</h2> +<p>I recommend using Virtual Machine Manager (virt-manager) as it has a fantastic interface and Simple-KVM does a great job with their setup script. Simply type the following to get the macOS VM setup:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo ./make.sh --add +</span></span></code></pre></div><h3 id="vm-modification">VM Modification</h3> +<p>Before we can start out VM we have to have a hard drive to load it. You have two options: physical hard drive passthrough or qcow2 file.</p> +<p>Obviously, the physical drive is considerably faster, but not possible in some instances such as laptops or if you can&rsquo;t afford a secondary drive.</p> +<h4 id="physical-hard-drive-passthrough">Physical Hard Drive Passthrough</h4> +<p>This is pretty simple as you just click Add Hardware -&gt; Storage and then specify your hard drive.</p> +<p><img src="https://christitus.com/images/2022/qemu/hdd.png" alt="hdd"></p> +<p><em>Note: while you can use drive short names <code>/dev/sda</code> I&rsquo;d recommend using <code>/dev/disk/by-id/HARDDRIVESERIAL</code> as this doesn&rsquo;t ever change.</em></p> +<h4 id="qcow2-file-for-hard-drive">QCOW2 File for Hard Drive</h4> +<p>This is even simpler as you just click Add Hardware -&gt; Storage and create new file. Just make sure you put it on at least a SSD or a nvme drive as it will be super slow if you don&rsquo;t.</p> +<h2 id="install-process">Install Process</h2> +<p>Boot your machine and select the OS Install Partition on startup.</p> +<p>Use the <code>Disk Utility</code> tool within the macOS installer to partition, and +format the virtual disk attached to the macOS VM.</p> +<p><strong>TIP: Using a non-APFS filesystem is recommended.</strong></p> +<p>Go ahead, and install macOS</p> +<h3 id="post-installation">Post-Installation</h3> +<h4 id="bridge-networking">Bridge Networking</h4> +<p><em>First</em> find your card interface name</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">ip a +</span></span></code></pre></div><p>Example: (Interface name is enp7s0)</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 +</span></span><span class="line"><span class="cl"> link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 +</span></span><span class="line"><span class="cl"> inet 127.0.0.1/8 scope host lo +</span></span><span class="line"><span class="cl"> valid_lft forever preferred_lft forever +</span></span><span class="line"><span class="cl"> inet6 ::1/128 scope host +</span></span><span class="line"><span class="cl"> valid_lft forever preferred_lft forever +</span></span><span class="line"><span class="cl">2: enp7s0: &lt;NO-CARRIER,BROADCAST,MULTICAST,UP&gt; mtu 1500 qdisc fq_codel state DOWN group default qlen 1000 +</span></span><span class="line"><span class="cl"> link/ether 24:bb:ee:55:22:33 brd ff:ff:ff:ff:ff:ff +</span></span><span class="line"><span class="cl"> inet 10.0.0.99/24 brd 10.0.0.255 scope global +</span></span><span class="line"><span class="cl"> valid_lft forever preferred_lft forever +</span></span><span class="line"><span class="cl"> inet6 ::1/128 scope host +</span></span><span class="line"><span class="cl"> valid_lft forever preferred_lft forever +</span></span></code></pre></div><p><em>Second</em> Update <code>/etc/network/interfaces</code></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">source /etc/network/interfaces.d/* +</span></span><span class="line"><span class="cl">  +</span></span><span class="line"><span class="cl"># The loopback network interface +</span></span><span class="line"><span class="cl">auto lo +</span></span><span class="line"><span class="cl">iface lo inet loopback +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl"># The primary network interface - old entry +</span></span><span class="line"><span class="cl"># allow-hotplug enp7s0 +</span></span><span class="line"><span class="cl"># iface enp7s0 inet dhcp +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl"># The primary network interface - new entry +</span></span><span class="line"><span class="cl"># DEVICENAME = enp7so for this pc and MYUSERNAME need to be $(whoami) +</span></span><span class="line"><span class="cl">auto br0 +</span></span><span class="line"><span class="cl">iface br0 inet dhcp +</span></span><span class="line"><span class="cl"> bridge_ports DEVICENAME tap0 +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl">auto tap0 +</span></span><span class="line"><span class="cl">iface tap0 inet dhcp +</span></span><span class="line"><span class="cl"> pre-up tunctl -u MYUSERNAME -t tap0 +</span></span></code></pre></div><p><em>Lastly</em> Restart the networking service or reboot computer. Then change your VM NIC (Network Hardware) to <code>br0</code> interface.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo systemctl restart networking +</span></span></code></pre></div><h4 id="other-considerations">Other Considerations</h4> +<ul> +<li>GPU Passthrough (Requires two Graphics Cards) - <a href="https://github.com/foxlet/macOS-Simple-KVM/blob/master/docs/guide-passthrough.md">https://github.com/foxlet/macOS-Simple-KVM/blob/master/docs/guide-passthrough.md</a></li> +<li>Changing Screen Resolution - <a href="https://github.com/foxlet/macOS-Simple-KVM/blob/master/docs/guide-screen-resolution.md">https://github.com/foxlet/macOS-Simple-KVM/blob/master/docs/guide-screen-resolution.md</a></li> +<li>Optimizing System Performance - <a href="https://github.com/sickcodes/osx-optimizer">https://github.com/sickcodes/osx-optimizer</a></li> +<li>Sound - Two methods, Pass the audio through HDMI if using GPU Passthrough OR Pass through a USB sound card that is macOS compatible +<ul> +<li><em>Note: There is a way to use Voodoo kext or AppleALC, but it will crackle and sound terrible</em></li> +</ul> +</li> +</ul> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/dMLNP6FfhkI" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Be a Better Programmer + https://christitus.com/be-a-better-programmer/ + Fri, 30 Sep 2022 00:00:00 +0000 + + https://christitus.com/be-a-better-programmer/ + <p>Many people want to be a programmer, but often find themselves flailing around in the dark. These are the things I&rsquo;ve done to help aid myself in coding more, learning new things, and just becoming a better programmer.</p> +<h2 id="use-github-daily">Use GitHub DAILY!</h2> +<p>Ok, maybe you don&rsquo;t have to use GitHub specifically but choose a platform or host your own git and use it as much as you can. Finish a feature or part of a project&hellip; COMMIT IT! This makes it very easy when you leave and come back to the project.</p> +<p>Collaborators can find your project and contribute or even fix errors you have made, which helps you improve quickly.</p> +<h2 id="track-your-progress">Track Your Progress</h2> +<p>I&rsquo;m constantly bouncing around and when I started I was getting discouraged. I&rsquo;d start a project, move on or get busy, and not look at it again or even code for weeks!</p> +<p>To fix this, I ended up using a free tool called wakatime. This showed me what projects I was spending time on, editors I used, languages, and spit it all out on a dashboard.</p> +<p><img src="https://christitus.com/images/2022/wakatime.png" alt="wakatime"></p> +<p>Check out my GitHub page @ <a href="https://github.com/christitustech">https://github.com/christitustech</a> for all my stats and share yours down below in the comments! I am extremely competitive and I code more knowing I have people watching my progress.</p> +<p><em>Note: As a bonus, check out my hidden profile readme @ <a href="https://github.com/christitustech/christitustech">https://github.com/christitustech/christitustech</a> and steal my auto generated setup!</em></p> +<h2 id="setup-your-ideal-workflow">Setup Your Ideal Workflow</h2> +<p>You have to like your work or at least enjoy parts of it. I follow this phrase and make sure I find something I do daily that I enjoy.</p> +<blockquote> +<p>&ldquo;Focus on the Journey, not the destination. Joy is not found in finishing an activity, but doing it!&rdquo; - Greg Anderson</p> +</blockquote> +<p>It&rsquo;s not to say that you will enjoy everything, because on the flip side of that phrase I made my own.</p> +<blockquote> +<p>&ldquo;You have to shovel a little shit in every job&rdquo; - Chris Titus</p> +</blockquote> +<p>The point being is there will be things you will hate, but just make sure it&rsquo;s not all bad. For example, I love VIM as it makes me just feel cool even though sometimes I am slower than if I just used VSCODE with the proper extension. The reason I do this is because of two reasons:</p> +<ol> +<li>Eventually I will optimize VIM enough that I&rsquo;m faster than VSCODE</li> +<li>I just feel awesome typing and coding in VIM</li> +</ol> +<p>This isn&rsquo;t a advertisement for you to use VIM! In fact, I&rsquo;d recommend you NOT use VIM unless these things interest you and you want to go down that rabbit hole. It depends on you!</p> +<p>Focus on what works for you and what you enjoy as far as an environment. This is more about how you <em>FEEL</em> than practical application. The better you feel in your workflow, the better your work product!</p> +<h2 id="set-goals">Set Goals</h2> +<p>If you are going to improve in anything you need to have a goal. For me it is all about putting in the time consistently. That is true with everything in life that you go to learn. <strong>MORE TIME = BETTER RESULTS</strong></p> +<p>Example Goals:</p> +<ul> +<li>3 hours of coding per day</li> +<li>500 Git Contributions in 2022</li> +</ul> +<p>Once you set these goals look at how you are doing. I recommend both short term and long term goals like I listed above.</p> +<p>Now, go code!</p> + + + + ClickPaste the Best Program You Never Heard Of + https://christitus.com/clickpaste/ + Wed, 28 Sep 2022 00:00:00 +0000 + + https://christitus.com/clickpaste/ + <p>This program is free and open source, while being absolutely a life saver. I use it for VNC sessions and when dealing with VMs through my host computer.</p> +<blockquote class="twitter-tweet"><p lang="en" dir="ltr">No more typing crap out when I use VNC or VM Sessions on the Host. Thanks ClickPaste (Free and Open Source)<br><br>GitHub Link: &lt;<a href="https://t.co/S3M69kQF3s">https://t.co/S3M69kQF3s</a>&gt;</p>&mdash; Chris Titus Tech (@christitustech) <a href="https://twitter.com/christitustech/status/1572985183594242048?ref_src=twsrc%5Etfw">September 22, 2022</a></blockquote> +<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> + +<p>GitHub Link: <a href="https://github.com/Collective-Software/ClickPaste">https://github.com/Collective-Software/ClickPaste</a></p> +<h2 id="install">Install</h2> +<p>Simply extract the zip file from <a href="https://github.com/Collective-Software/ClickPaste/releases">https://github.com/Collective-Software/ClickPaste/releases</a> and run ClickPaste.exe</p> +<h3 id="running-at-startup">Running at Startup</h3> +<p>The best way I&rsquo;ve found is to create a shortcut to ClickPaste.exe then drag&amp;drop that into shell:startup</p> +<p><img src="https://christitus.com/images/2022/startup.png" alt="startup"></p> +<h2 id="usage">Usage</h2> +<p>First of course, you need to have some text in your clipboard. Then:</p> +<ol> +<li>Click the target notification icon to begin:</li> +</ol> +<p><a href="https://github.com/Collective-Software/ClickPaste/blob/master/doc/ClickToTarget.png"><img src="https://github.com/Collective-Software/ClickPaste/raw/master/doc/ClickToTarget.png" alt="Click to choose a target"></a></p> +<ol start="2"> +<li>Click to choose a location you want to paste the text:</li> +</ol> +<p><a href="https://github.com/Collective-Software/ClickPaste/blob/master/doc/ClickToPaste.png"><img src="https://github.com/Collective-Software/ClickPaste/raw/master/doc/ClickToPaste.png" alt="Click to choose a location to paste"></a></p> +<ol start="3"> +<li>Your clipboard contents should be typed as keystrokes onto the window you selected:</li> +</ol> +<p><a href="https://github.com/Collective-Software/ClickPaste/blob/master/doc/Pasted.png"><img src="https://github.com/Collective-Software/ClickPaste/raw/master/doc/Pasted.png" alt="Your clipboard is typed as keystrokes onto the window you selected"></a></p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/i7cgD_KCh10" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Setting up Windows inside Linux + https://christitus.com/windows-inside-linux/ + Mon, 26 Sep 2022 00:00:00 +0000 + + https://christitus.com/windows-inside-linux/ + <p>Running Windows inside of Linux is essential for those that are trying to convert to Linux. There will always be a transition period and need to fallback to Windows. It is also nice to have for many Windows only programs that you may need while inside Linux.</p> +<p>If you haven&rsquo;t ever installed QEMU before, here is an article to get that setup @ <a href="https://christitus.com/vm-setup-in-linux/">https://christitus.com/vm-setup-in-linux/</a></p> +<h2 id="optimizing-windows-vm">Optimizing Windows VM</h2> +<p>First you need to install the VirtIO tools, which can be difficult to track down. My favorite way is to run the exe file from <a href="https://github.com/virtio-win/virtio-win-pkg-scripts">https://github.com/virtio-win/virtio-win-pkg-scripts</a> but many guides use the iso file also provided at this link.</p> +<p>Another good resource for obtaining VirtIO drivers is from the proxmox wiki <a href="https://pve.proxmox.com/wiki/Windows_VirtIO_Drivers">https://pve.proxmox.com/wiki/Windows_VirtIO_Drivers</a></p> +<h3 id="enable-qemu-guest-agent">Enable QEMU Guest Agent</h3> +<p>Now you need to modify the VM to make use of the guest agent drivers. We need to add the qemu agent channel. Add Hardware -&gt; Channel and copy these settings</p> +<p><img src="https://christitus.com/images/2022/qemu/guest-agent.png" alt="guest-agent"></p> +<h2 id="passing-devices-through">Passing Devices Through</h2> +<p>There are two main devices that you may want to pass through to a Windows VM. Hard Drives and Graphics Cards. Passing through a hard drive will give a good uplift in processing power and general VM response. The graphics card is very technical and frankly not recommended, but can be doable on some systems.</p> +<h3 id="dedicated-hard-drive">Dedicated Hard Drive</h3> +<p>Simply select Add Hardware -&gt; Storage and copy these settings</p> +<p><img src="https://christitus.com/images/2022/qemu/hdd.png" alt="hdd"></p> +<h3 id="dedicated-graphics-card">Dedicated Graphics Card</h3> +<p>This is referred to as PCI Passthrough and can be dicey on some systems. I&rsquo;ve had some motherboards that can&rsquo;t do this and others that can. The best guide and scripts I&rsquo;ve found are from HikariKnight and his GitHub @ <a href="https://github.com/HikariKnight/quickpassthrough">https://github.com/HikariKnight/quickpassthrough</a></p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/6KqqNsnkDlQ" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + You are using GitHub WRONG! + https://christitus.com/using-github-correctly/ + Fri, 23 Sep 2022 00:00:00 +0000 + + https://christitus.com/using-github-correctly/ + <p>GitHub is an incredible powerful tool, but using it in command line can be frustrating. So instead of doing something dumb like using SSH agent workarounds or Token exporting shenanigans to make <code>git</code> work in command line. We are going to use an amazing utility called <code>gh</code> to authenticate.</p> +<p>Now before we continue, you might be thinking, I can just use password authentication. Well, Here is the error you get if you try that non-sense.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Support for password authentication was removed on August 13, 2021. +</span></span><span class="line"><span class="cl">Please use a personal access token instead. +</span></span></code></pre></div><h2 id="gh-overview">GH Overview</h2> +<p>This utility was created by GitHub directly to manage authentication and has a lot of fantastic features. So lets dive in&hellip;</p> +<h3 id="install-gh">Install GH</h3> +<p>Debian Linux</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo apt install gh +</span></span></code></pre></div><p>Windows</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">winget install -e GitHub.cli +</span></span></code></pre></div><p>Mac</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">brew install gh +</span></span></code></pre></div><h3 id="first-time-setup">First Time Setup</h3> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">gh auth login +</span></span></code></pre></div><p>Follow all the prompts and I&rsquo;d recommend setting SSH as auth method.</p> +<h3 id="set-cli-to-use-ssh">Set CLI to use SSH</h3> +<p>If you forgot to set the protocol during the setup in <code>gh auth login</code> use this command to set it.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">gh config set -h github.com git_protocol ssh +</span></span></code></pre></div><h4 id="set-the-repo-to-use-gh-auth">Set the Repo to use GH auth</h4> +<p>Set the project repository for SSH auth</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">git remote set-url origin git@github.com:ChrisTitusTech/project.git +</span></span></code></pre></div><h2 id="using-github-desktop">Using GitHub Desktop</h2> +<p>There is nothing wrong with GitHub desktop and sometimes I use it when I&rsquo;m reviewing my commits or pushes. It is a great graphical representation of how fetch/pull or commit/push work on GitHub. However, it is considerably slower, than just typing it in via terminal with a simple git push or git pull. This also blurs the lines between <code>git add .</code>, <code>git commit -a -m &quot;message&quot;</code>, and <code>git push</code> when adding to a project.</p> +<h2 id="using-github-properly">Using GitHub properly</h2> +<p>If you are anything like me, when I started using GitHub I did so many things incorrectly and still do today! However, I&rsquo;m slowly seeing the error of my ways and these are the big things I missed.</p> +<h3 id="not-combining-git-add-commit-and-push">Not combining git add, commit, and push</h3> +<p>When I first started these three commands seemed like they all pretty much did the same thing. I JUST WANT TO ADD TO MY PROJECT! Why is it like this?</p> +<p>Then I started doing some collaborative work and realized I&rsquo;m terrible and most other people are too on GitHub, because we are all doing it WRONG!</p> +<p>So how should we be using <code>git</code>?</p> +<p><strong>COMMIT OFTEN and after every change in code</strong></p> +<p>This should be everyone mantra, including me, but often I get caught up in my work and don&rsquo;t do it. So what is the big deal? Well, if you bundle a ton of different changes into one commit&hellip; you have to revert ALL those changes if you had one bad one. Breaking those up into different commits, you could just revert the bad code. That can literally save a project! I learned this when I bundled a ton of changes into my ArchTitus project and basically turned it into a spaghetti string of code that I hate looking at and debugging. To continue that project, I&rsquo;d have to rebase and wipe out a ton of progress I&rsquo;ve made and other people have contributed. This makes everyone mad and is simply not fun.</p> +<p>So follow that golden rule and realize you will fail at it, but realize your failures and do better the next time is how we elevate ourselves to the next level.</p> +<h3 id="quick-aliases">Quick Aliases</h3> +<p>These are some quality of life improvements that will make using git from command line so much better.</p> +<p>I use bashrc these days and these are some aliases I added to my <code>~/.bashrc</code> file.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">gcom() { +</span></span><span class="line"><span class="cl"> git add . +</span></span><span class="line"><span class="cl"> git commit -m &#34;$1&#34; +</span></span><span class="line"><span class="cl"> } +</span></span><span class="line"><span class="cl">lazyg() { +</span></span><span class="line"><span class="cl"> git add . +</span></span><span class="line"><span class="cl"> git commit -m &#34;$1&#34; +</span></span><span class="line"><span class="cl"> git push +</span></span><span class="line"><span class="cl">} +</span></span></code></pre></div><p>Now in a perfect world I would be using <code>gcom &quot;commit message&quot;</code> several times a day and then finally using <code>lazyg &quot;last commit of the day&quot;</code> to push my changes public after I&rsquo;m done. However, the world and myself are far from perfect, but understanding what perfection would look like will help you know when you aren&rsquo;t.</p> +<h3 id="helping-projects">Helping Projects</h3> +<p>A poorly documented issue is pointless and just gets closed in every project. Don&rsquo;t be that person! Document what you can and if you noticed a recent commit messed something up reference it by doing a copy paste of the Pull Request # like so. First, get to this screen by clicking &ldquo;## commits&rdquo; in top right of the project main page. Then copy the SHA from the &ldquo;bad&rdquo; commit.</p> +<p><img src="https://christitus.com/images/2022/github/git-commits.png" alt="git-commit"></p> +<p>From here, you simply make your issue and paste that long sha hash in where you want to reference it. Don&rsquo;t worry the numbers will be truncated and it will look awesome in the issue page.</p> +<p>Also make sure you don&rsquo;t just put a WALL OF TEXT! Try to make your issue readable by breaking up your issue if it is more than several sentences long. This just makes it more readable and make it as concise as possible.</p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/f7xZivqLZxc" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Auto Mount with SystemD + https://christitus.com/auto-mount-systemd/ + Thu, 22 Sep 2022 00:00:00 +0000 + + https://christitus.com/auto-mount-systemd/ + <p>This shows how to automount remote network drives using systemd and fstab</p> +<h2 id="automount-using-systemd">Automount using systemd</h2> +<p>Sometimes partitions can fail to mount on startup and some options are needed to fix this. I&rsquo;ve had two instances where it was needed. One was on a slow 6 TB drive that timed out on occation during boot and I had to <code>sudo mount -a</code> to get it to mount</p> +<p>For this a simple option addition in fstab on a local disk looks like this:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">x-systemd.after=network-online.target,x-systemd.automount +</span></span></code></pre></div><p>Next, I had problems with NFS shares not mounting and I had to expand these option to:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">x-systemd.after=network-online.target,x-systemd.automount,x-systemd.mount-timeout=30,_netdev +</span></span></code></pre></div><p>This makes the <code>/etc/fstab</code> entry look like this:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">10.0.0.10:/volume2/Images /media/images nfs x-systemd.after=network-online.target,x-systemd.automount,x-systemd.mount-timeout=30,_netdev 0 0 +</span></span></code></pre></div><p><em>Source: <a href="https://wiki.archlinux.org/title/Fstab#Automount_with_systemd">https://wiki.archlinux.org/title/Fstab#Automount_with_systemd</a></em></p> + + + + Should you switch from Windows 10 to Windows 11 + https://christitus.com/win10-to-win11/ + Wed, 21 Sep 2022 00:00:00 +0000 + + https://christitus.com/win10-to-win11/ + <p>The question isn&rsquo;t if you should switch, but if you CAN switch. Windows 11 does a lot of things right as most of it&rsquo;s systems are identical to 10. However, there are some drawbacks which we need to dive into.</p> +<h2 id="windows-11-requirements">Windows 11 Requirements</h2> +<p>There are two issues with Windows 11 that will catch some older computers.</p> +<ul> +<li>CPU Requirement: Intel 8th Generation and AMD 2nd Generation</li> +<li>UEFI Secure Boot with TPM 2.0 Chip</li> +</ul> +<p>However, these requirements are artificial and can easily be bypassed. With these Steps:</p> +<ol> +<li>Launch Command Prompt with Shift + F10</li> +<li>Type <code>regedit</code> and launch Reg Editor</li> +<li>Add the following KEY (folder) HKEY_Local_Machine -&gt; System -&gt; Setup &mdash; Name the key <code>MoSetup</code></li> +<li>Add the following Value (DWORD) Name = <code>AllowUpgradesWithUnsupportedTPMOrCPU</code> +Value = <code>1</code></li> +<li>Close Regedit and continue install</li> +</ol> +<h2 id="why-upgrade">Why Upgrade</h2> +<p>Here are the main reason to upgade to Windows 11. <strong>The Look</strong></p> +<p>We can go round and round about the marketing of Microsoft and all the bullshit they like to say. However, at the end of the day if you want a new look and a cleaner looking OS&hellip; Windows 11 is it. The better sounds, rounded aesthetic, auto-hdr for games, and overall more cohesive visual experience is what Windows 11 does well.</p> +<p>What about all the other features Microsoft shills say are important and are NOT?</p> +<ol> +<li>Performance - I have seen negligible performance gains and even worse performance in some instances</li> +<li>Widgets - This just reminds of Vista sidebar all over again. They are all sizzle and no steak.</li> +<li>Security - Another marketing ploy that promotes it being more secure. While technically true, it mainly applies to the startup of your pc with TPM and Secureboot. Which frankly, doesn&rsquo;t matter as I can easily crack your Windows security with it&rsquo;s terrible SAM file exploits that are well documented and present in Windows 11.</li> +<li>Teams colloboration - Just more pre-installed crap that you probably won&rsquo;t use.</li> +</ol> +<p>These are all just meh points that I view the exact same as Windows 10.</p> +<h2 id="why-not-to-upgrade">Why NOT to Upgrade</h2> +<p>Windows 11 may look objectively better, but there are also some downsides. Here are the big ones I hate.</p> +<ol> +<li>Taskbar - It is just plain awful as it is based on a new UWP platform that isn&rsquo;t nearly as good as 10&rsquo;s taskbar. Also you can&rsquo;t move it to the left, right, or top like you can in 10.</li> +<li>Context Menu - The new look might look cleaner, but is far less functional. I&rsquo;m working on a tweak to revert this back to the windows 10 menu</li> +<li>Changing Default Apps is awful in Windows 11. Everything is extension based now, where it is program based in Windows 10.</li> +<li>Windows 10 still has support until 2025, so don&rsquo;t be in a rush to switch.</li> +</ol> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/WBrh-9BdGVQ" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Linux for Beginners + https://christitus.com/linux-for-beginners/ + Mon, 19 Sep 2022 00:00:00 +0000 + + https://christitus.com/linux-for-beginners/ + <p>So you want to use Linux? It is truly an amazing operating system and probably my favorite one to use. However, it is not for everyone and you&rsquo;ll need to learn a few things before you can understand it.</p> +<h2 id="where-to-start">Where to Start</h2> +<p>Starting off in Linux is not an easy task and has the most extreme learning curve of ANY operating system because it has so many options. Most will say install X Distro. However, this just doesn&rsquo;t tell you the full story.</p> +<p>The Linux desktop community is a strange, social awkward bunch that typically likes to troll people. It also has a tendency of over promising and under delivering. I say this to temper your expectations and realize Linux is a different animal from ANY other operating system. It has its own set of amazing software and when it comes to hardware it has some incompatibilities when coming from Windows.</p> +<p>The start to your journey will begin with a distribution or a collection of all the tools that make a somewhat complete experience. Just know that every single thing has alternatives. Make notes of what you LIKE and DO NOT LIKE. Then change what you do not like to your needs.</p> +<p>For a beginner, I highly recommend Linux Mint. It has a very friendly starting point and I want to walk through its install and components as while it&rsquo;s a great starting point, there are many things I do change to make it a good experience for me. Once you understand what you can change, this opens up many doors&hellip;</p> +<h2 id="the-install">The Install</h2> +<p>Lets get start with Downloading the ISO @ <a href="https://www.linuxmint.com/download.php">https://www.linuxmint.com/download.php</a></p> +<p>Burn this to a USB Stick with Etcher @ <a href="https://www.balena.io/etcher/">https://www.balena.io/etcher/</a></p> +<p>Then boot to the USB stick in the PC you are installing Linux on. If this is your first time, I HIGHLY recommend to just boot into the Live environment to get your feet wet first and see if this is something you want to do. Otherwise, follow the prompts and erase your computer to move to Linux.</p> +<h2 id="what-to-change">What to Change</h2> +<ul> +<li><strong>File Managers</strong> +<ol> +<li>Dolphin</li> +<li>Thunar</li> +<li>Nautilus</li> +</ol> +</li> +<li><strong>Themes</strong> +<ol> +<li>lxappearance</li> +<li>DE Settings</li> +</ol> +</li> +<li><strong>Desktop Environments</strong> +<ol> +<li>Cinnamon</li> +<li>XFCE</li> +<li>KDE</li> +<li>GNOME</li> +</ol> +</li> +<li><strong>Remote Access</strong> +<ol> +<li>TightVNC</li> +<li>Remmina</li> +</ol> +</li> +<li><strong>Terminals</strong> +<ol> +<li>Kitty</li> +<li>Terminator</li> +<li>gnome-terminal</li> +<li>konsole</li> +<li>yakuake</li> +</ol> +</li> +</ul> +<h2 id="windows-app-alternatives">Windows App Alternatives</h2> +<p>People will tell you these programs can work or &ldquo;kinda&rdquo; work, but it is an awful experience and if you need them, then you need Windows.</p> +<h3 id="adobe">Adobe</h3> +<p>PDF is one of those things that make the business world go round. Adobe has an iron grip in this realm, but for basic editing and simple viewing we can use these programs:</p> +<ul> +<li>xpdf</li> +<li>LibreOffice</li> +</ul> +<p>Then there is the creative suite for video and photo. Photoshop, Premiere, etc&hellip; and there really isn&rsquo;t an equal in this area. Just basic alternatives that will work for beginners. So if you aren&rsquo;t a professional and just need to edit a little photo and video, here are your alternatives.</p> +<p><strong>Photo</strong> - GIMP</p> +<p><strong>Video</strong> - Kdenlive</p> +<p>I have used these programs exclusively for my first 500 videos on YouTube. They are good and I still use GIMP every day. However, the video editing on Linux is a bit of a joke. Yes, there are alternatives, but they just aren&rsquo;t very good. Kdenlive is great for beginners, but once you get into color correcting or complex transitions it will fall short. Openshot is another basic alternative, but I personally think Kdenlive is a bit better.</p> +<p>The other software Linux evangelists recommend are frankly just for the extreme users. DaVinci Resolve is a good piece of software, but its installation and usage on Linux is dicey at best. Lightworks is better to install, but overall a worse piece of software than DaVinci Resolve. If you are a professional in the video industry you can set up a dedicated Linux workstation for DaVinci resolve to their specifications, but for the general user&hellip; it is just an awful experience.</p> +<h3 id="microsoft-office">Microsoft Office</h3> +<p>This used to have a choke hold on business, but these days it really isn&rsquo;t needed. Frankly, I think G-Suite does a better job in a lot of ways, but Microsoft themselves offer a fantastic web experience. However, if you have to have a non-web based application, these programs are pretty darn amazing.</p> +<ul> +<li>LibreOffice</li> +<li>FreeOffice</li> +<li>OnlyOffice</li> +<li>OpenOffice</li> +</ul> +<p>All of these applications are pretty darn good. The easiest to transition from Microsoft Office is FreeOffice. It&rsquo;s so alike that I&rsquo;m suprised they haven&rsquo;t been sued by Microsoft. However, the other alternatives are just as powerful and fantastic options.</p> +<h3 id="gaming">Gaming</h3> +<p>This one has made the most progress in the past couple years and is quite impressive. Linux has easily become the second best operating system for gaming. It has Steam support baked in and many alternatives for non-steam games. While steam games often install and play without any intervention, many non-steam games require a bit of tinkering to get functioning perfectly.</p> +<p>The one massive drawback for gaming on Linux is the lack of support for many competitive shooter titles. It isn&rsquo;t that Linux can&rsquo;t play them, but the publishers refuse to enable Linux support in Easy Anti-Cheat, BattleEye, or Denuvo. There are a few exceptions with APEX Legends recently adding Linux support, but many refuse to like Destiny 2, Call of Duty, Battlefield, and more.</p> +<h4 id="compatibility">Compatibility</h4> +<p>About 70% of windows games work on Linux. However you need to check <a href="https://protondb.com">https://protondb.com</a> and <a href="https://lutris.net">https://lutris.net</a> to make sure you game is working before you switch!</p> +<h2 id="conclusion">Conclusion</h2> +<p>This is merely a starting point to help you understand and take your first steps in to Linux. There is so much more to explore and even after using Linux daily for almost 5 years as my desktop, I am still discovering new things every day. It is an absolutely amazing Operating System with unlimited potential&hellip; It just relies on you the end-user to discover it.</p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/10f4899srvc" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + +<h3 id="file-system-video">File System Video</h3> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/roES8iAaJEM" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + +<h3 id="youtube-playlists-to-watch">YouTube Playlists to Watch</h3> +<ul> +<li>Learning Linux Terminal (8 Videos) - <a href="https://www.youtube.com/watch?v=XK81cfvrElg&amp;list=PLc7fktTRMBozYfi4zlDeH0IdLdGImeOnO">https://www.youtube.com/watch?v=XK81cfvrElg&amp;list=PLc7fktTRMBozYfi4zlDeH0IdLdGImeOnO</a></li> +<li>Windows to Linux Mint (7 Videos) - <a href="https://www.youtube.com/watch?v=1hwWAOBOsJs&amp;list=PLc7fktTRMBoxoDWkt0EzILkG4sCrEOT3e">https://www.youtube.com/watch?v=1hwWAOBOsJs&amp;list=PLc7fktTRMBoxoDWkt0EzILkG4sCrEOT3e</a></li> +</ul> + + + + Fix LibGL Errors + https://christitus.com/fix-libGL-errors/ + Thu, 08 Sep 2022 00:00:00 +0000 + + https://christitus.com/fix-libGL-errors/ + <p>I recently had a debian install where Steam would not launch. Here is how I fixed it when it.</p> +<p><em>Note: This is for nVidia based GPU systems</em></p> +<h2 id="error-screen">Error Screen</h2> +<p><img src="https://christitus.com/images/2022/fix-libGL-error.jpg" alt="libGL-error"></p> +<p><code>You are missing the following 32-bit libraries, and Steam may not run: libGL.so.1</code></p> +<h2 id="packages-required">Packages Required</h2> +<p>These packages are missing and will fix the above error.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo dpkg --add-architecture i386 +</span></span><span class="line"><span class="cl">sudo apt-get update +</span></span><span class="line"><span class="cl">sudo apt install libgl1-mesa-dri:i386 libgl1:i386 +</span></span><span class="line"><span class="cl">sudo apt-get upgrade steam -f +</span></span><span class="line"><span class="cl">sudo apt install nvidia-driver-libs:i386 +</span></span></code></pre></div><h2 id="launch-steam">Launch Steam</h2> +<p>You now can launch steam and have it launch properly.</p> + + + + Laptop Power Management + https://christitus.com/laptop-power-management/ + Fri, 26 Aug 2022 00:00:00 +0000 + + https://christitus.com/laptop-power-management/ + <p>Power management is a critical thing to understand in laptops. It&rsquo;s possible to buy an expensive laptop and end up not using it because of bad power management practices.</p> +<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Power Management is complete. <br>Things learned:<br>- Frequency adjustment makes massive battery difference. <br>- You can turn of CPU cores independently<br>- Intel P-States are a bit unpredictable.<br>- eGPUs will always drain a battery faster than just APU laptops.</p>&mdash; Chris Titus Tech (@christitustech) <a href="https://twitter.com/christitustech/status/1560314657142964224?ref_src=twsrc%5Etfw">August 18, 2022</a></blockquote> +<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> + +<p>Also, not taking care of the thermals on a laptop will lead to less laptop life, shorter battery, and unpleasant heat generation.</p> +<h2 id="cooling-pad">Cooling Pad</h2> +<p>Get any cheap amazon cooling pad from amazon. Here is a decent $30 one with lots of reviews. <a href="https://amzn.to/3SV0Y0l">https://amzn.to/3SV0Y0l</a></p> +<h2 id="redo-thermal-paste">Redo Thermal Paste</h2> +<p>By default, almost any and every laptop has excessive thermal compound which leads to higher temperatures. Simply removing the excess compound and apply just a drop of &ldquo;good&rdquo; thermal paste will drop temps by about 10 Celsius.</p> +<p>Here is an example of excess factory thermal compound application:</p> +<p><img src="https://christitus.com/images/2022/laptop-power/thermal.jpg" alt="termal"></p> +<h2 id="adjust-max-cpu-frequency">Adjust Max CPU Frequency</h2> +<p>Set your CPU governor to the maximum power it can use. I NEVER use a 100% of the CPU and in most instances rarely break above 50% of its total power. Typically, around 2 GHz is perfect for my day-to-day work. When working on battery, I put this down to 25% on a beefy laptop to conserve most of its power. On weaker laptops, you&rsquo;d probably double these numbers. 100% on AC Power and 50% on Battery.</p> +<h3 id="linux---cpupower">Linux - cpupower</h3> +<h4 id="required-dependencies">Required Dependencies</h4> +<p>Install the following packages</p> +<ul> +<li>cpupower</li> +<li>acpi-support</li> +<li>acpid</li> +<li>acpi</li> +</ul> +<p>Example Install:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">apt-get install acpi-support acpid acpi linux-cpupower cpufrequtils +</span></span></code></pre></div><h4 id="setting-minmax-power-example">Setting Min/Max Power Example</h4> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">cpupower frequency-set -g powersave -d 0.8G -u 1.2G +</span></span></code></pre></div><h4 id="check-frequency">Check Frequency</h4> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">cpufreq-info +</span></span></code></pre></div><h3 id="disable-turbo">Disable Turbo</h3> +<p>Turbo will draw more power and reduce battery life while increasing CPU temperature.</p> +<p>Run the following from a root user:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">echo 1 &gt; /sys/devices/system/cpu/intel_pstate/no_turbo +</span></span></code></pre></div><h3 id="turn-off-cpu-cores">Turn off CPU Cores</h3> +<p>The more CPU cores that your laptop uses, the power it will draw. On higher end laptops you can see as big as a 75% savings and extend the battery life x3.</p> +<p>Taking a CPU core offline (<em>Note: you can&rsquo;t offline cpu0</em>)</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">echo 0 &gt; /sys/devices/system/cpu/cpu#/online +</span></span></code></pre></div><p>To disable cores above 4 threads, run the following in a bash script:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">for ((i=4;i&lt;$(nproc);i++)); do echo 0 &gt; /sys/devices/system/cpu/cpu$i/online; done +</span></span></code></pre></div><h3 id="use-cpulimit-to-constrain-apps">Use CPULIMIT to Constrain Apps</h3> +<h4 id="install">Install</h4> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo apt install cpulimit +</span></span></code></pre></div><h4 id="adjust-exec-commands-in-desktop">Adjust EXEC commands in .desktop</h4> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">cpulimit --limit 70 /usr/bin/google-chrome-bin +</span></span></code></pre></div><p><em>Note: This would limit CPU usage for Google Chrome to 70%</em></p> +<h3 id="linux---adjust-gpu-power">Linux - adjust GPU power</h3> +<p>There are two methods for adjusting the power usage your GPU uses. I personally use both depending on the laptop, but eGPU&rsquo;s will eat up a battery laptop in no time.</p> +<h4 id="manually-adjust-mhz-of-gpu">Manually adjust MHz of GPU</h4> +<p>Set the following variables:</p> +<ul> +<li><code>/sys/class/drm/card0/gt_max_freq_mhz</code></li> +<li><code>/sys/class/drm/card0/gt_boost_freq_mhz</code></li> +</ul> +<p>Using cat to display current MHz and then simply echo the new lower value to these variables.</p> +<p>Example:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">echo &#34;1000&#34; &gt; /sys/class/drm/card0/gt_max_freq_mhz +</span></span></code></pre></div><h4 id="turning-off-gpu-with-prime-select">Turning off GPU with Prime-select</h4> +<p>While there are technically 3 options, I recommend only using NVIDIA and intel, as on-demand doesn&rsquo;t work very well.</p> +<h4 id="turning-off-gpu-with-envycontrol">Turning off GPU with Envycontrol</h4> +<p>Cool python project that rebuilds the init system to exclude nvidia.</p> +<p><a href="https://github.com/geminis3/EnvyControl">https://github.com/geminis3/EnvyControl</a></p> +<h3 id="windows---gui-power-management">Windows - GUI Power Management</h3> +<p>Launch the GUI power panel with Start ⇾ Run <code>powercfg.cpl</code></p> +<p><img src="https://christitus.com/images/2022/laptop-power/win-power.png" alt="win-power"></p> +<p>Then change the Min / Max CPU Power. I typically set these to 5% Min and 50% Max, but on weaker laptops you can set these higher.</p> +<h3 id="windows---autohotkey-script">Windows - AutoHotkey Script</h3> +<p>This script sets the max CPU state when plugged in to the wall (AC Power) and when it runs on battery (DC Power).</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">PowerWriteProcessorStateValueIndex(50, &#34;AC&#34;) +</span></span><span class="line"><span class="cl">PowerWriteProcessorStateValueIndex(25, &#34;DC&#34;) +</span></span><span class="line"><span class="cl">ExitApp +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl">;--------------------- +</span></span><span class="line"><span class="cl">PowerWriteProcessorStateValueIndex(Max := &#34;&#34;, Mode := &#34;&#34;) { +</span></span><span class="line"><span class="cl"> l:=PowerEnumeratePlans(ActivePlan), VarSetCapacity(GUID_ACTIVE_POWER_SAVING, 16, 0), VarSetCapacity(GUID_PROCESSOR_SETTINGS_SUBGROUP, 16, 0) +</span></span><span class="line"><span class="cl"> , DllCall(&#34;Ole32.dll\CLSIDFromString&#34;, &#34;WStr&#34;, &#34;{&#34; ActivePlan.GUID &#34;}&#34;, &#34;Ptr&#34;, &amp;GUID_ACTIVE_POWER_SAVING), VarSetCapacity(GUID_PROCESSOR_THROTTLE_MAXIMUM, 16, 0) +</span></span><span class="line"><span class="cl"> , DllCall(&#34;Ole32.dll\CLSIDFromString&#34;, &#34;WStr&#34;, &#34;{54533251-82be-4824-96c1-47b60b740d00}&#34;, &#34;Ptr&#34;, &amp;GUID_PROCESSOR_SETTINGS_SUBGROUP) +</span></span><span class="line"><span class="cl"> , DllCall(&#34;Ole32.dll\CLSIDFromString&#34;, &#34;WStr&#34;, &#34;{BC5038F7-23E0-4960-96DA-33ABAF5935EC}&#34;, &#34;Ptr&#34;, &amp;GUID_PROCESSOR_THROTTLE_MAXIMUM) +</span></span><span class="line"><span class="cl"> , DllCall(&#34;PowrProf.dll\PowerWrite&#34; Mode &#34;ValueIndex&#34;, &#34;Ptr&#34;, 0, &#34;Ptr&#34;, &amp;GUID_ACTIVE_POWER_SAVING +</span></span><span class="line"><span class="cl"> , &#34;Ptr&#34;, &amp;GUID_PROCESSOR_SETTINGS_SUBGROUP, &#34;Ptr&#34;, &amp;GUID_PROCESSOR_THROTTLE_MAXIMUM, &#34;UInt&#34;, Max, &#34;UInt&#34;) +</span></span><span class="line"><span class="cl"> for k, v in l +</span></span><span class="line"><span class="cl"> if !(v.Default) { +</span></span><span class="line"><span class="cl"> RunWait, % ComSpec &#34; /c powercfg /s &#34; v.GUID,, Hide +</span></span><span class="line"><span class="cl"> break +</span></span><span class="line"><span class="cl"> } RunWait, % ComSpec &#34; /c powercfg /s &#34; ActivePlan.GUID,, Hide +</span></span><span class="line"><span class="cl">} +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl">;------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl">;enumerates all power plans +</span></span><span class="line"><span class="cl">;for k, v in PowerEnumeratePlans() +</span></span><span class="line"><span class="cl">; MsgBox % &#34;#&#34; k &#34;`nGUID: &#34; v.GUID &#34;`Name: &#34; v.Name &#34;`nDefault?: &#34; v.Default +</span></span><span class="line"><span class="cl">PowerEnumeratePlans(ByRef ActivePlan := &#34;&#34;) { +</span></span><span class="line"><span class="cl"> List := {} +</span></span><span class="line"><span class="cl"> for k, v in StrSplit(CMD(&#34;powercfg /l&#34;), &#34;:&#34;, A_Space A_Tab) +</span></span><span class="line"><span class="cl"> if (A_Index&gt;1) { +</span></span><span class="line"><span class="cl"> Info := {}, Info.GUID := SubStr(Trim(v), 1, 36), Info.Default := !!InStr(v, &#34;*&#34;) +</span></span><span class="line"><span class="cl"> , Info.Name := Trim(StrSplit(SubStr(v, InStr(v, &#34;(&#34;)+1), &#34;)&#34;)[1]), List.Push(Info) +</span></span><span class="line"><span class="cl"> if (Info.Default) +</span></span><span class="line"><span class="cl"> ActivePlan := Info +</span></span><span class="line"><span class="cl"> } return List +</span></span><span class="line"><span class="cl">} +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl">;executes cmd command and return the result +</span></span><span class="line"><span class="cl">CMD(CMD := &#34;&#34;, Encoding := &#34;UTF-8&#34;, ByRef ExitCode := &#34;&#34;) { +</span></span><span class="line"><span class="cl"> DllCall(&#34;Kernel32.dll\CreatePipe&#34;, &#34;PtrP&#34;, hReadPipe, &#34;PtrP&#34;, hWritePipe, &#34;Ptr&#34;, 0, &#34;UInt&#34;, 0) +</span></span><span class="line"><span class="cl"> , DllCall(&#34;Kernel32.dll\SetHandleInformation&#34;, &#34;Ptr&#34;, hWritePipe, &#34;UInt&#34;, 1, &#34;UInt&#34;, 1) +</span></span><span class="line"><span class="cl"> , Size := VarSetCapacity(STARTUPINFO, A_PtrSize=4?68:104, 0), NumPut(Size, STARTUPINFO, 0, &#34;UInt&#34;) +</span></span><span class="line"><span class="cl"> , NumPut(0x100, STARTUPINFO, A_PtrSize=4?44:60, &#34;UInt&#34;), NumPut(hStdInRd, STARTUPINFO, A_PtrSize=4?56:80, &#34;Ptr&#34;) +</span></span><span class="line"><span class="cl"> , NumPut(hWritePipe, STARTUPINFO, A_PtrSize=4?60:88, &#34;Ptr&#34;), NumPut(hWritePipe, STARTUPINFO, A_PtrSize=4?64:96, &#34;Ptr&#34;) +</span></span><span class="line"><span class="cl"> , pi := CreateProcess(, ComSpec &#34; /c &#34; CMD,,,, 0x08000000,,, &amp;STARTUPINFO) +</span></span><span class="line"><span class="cl"> , DllCall(&#34;Kernel32.dll\CloseHandle&#34;, &#34;Ptr&#34;, hWritePipe), Size := VarSetCapacity(Buff, 4095) +</span></span><span class="line"><span class="cl"> while DllCall(&#34;Kernel32.dll\ReadFile&#34;, &#34;Ptr&#34;, hReadPipe, &#34;Ptr&#34;, &amp;Buff, &#34;UInt&#34;, Size, &#34;PtrP&#34;, Bytes, &#34;Ptr&#34;, 0) +</span></span><span class="line"><span class="cl"> OutputVar .= StrGet(&amp;Buff, Bytes, Encoding) +</span></span><span class="line"><span class="cl"> DllCall(&#34;Kernel32.dll\CloseHandle&#34;, &#34;Ptr&#34;, pi.handle), DllCall(&#34;Kernel32.dll\CloseHandle&#34;, &#34;Ptr&#34;, hReadPipe) +</span></span><span class="line"><span class="cl"> return OutputVar, DllCall(&#34;Kernel32.dll\GetExitCodeProcess&#34;, &#34;Ptr&#34;, pi.handle, &#34;UIntP&#34;, ExitCode) +</span></span><span class="line"><span class="cl">} CreateProcess(ApplicationName := &#34;&#34;, ByRef CommandLine := &#34;&#34;, ProcessAttributes := 0, ThreadAttributes := 0, InheritHandles := true, CreationFlags := 0x08000000, Environment := 0, CurrentDirectory := &#34;&#34;, StartupInfo := 0) { +</span></span><span class="line"><span class="cl"> VarSetCapacity(PROCESS_INFORMATION, A_PtrSize=4?16:24, 0) +</span></span><span class="line"><span class="cl"> , r := DllCall(&#34;Kernel32.dll\CreateProcess&#34;, &#34;Ptr&#34;, ApplicationName=&#34;&#34;?0:&amp;ApplicationName, &#34;Ptr&#34;, CommandLine=&#34;&#34;?0:&amp;CommandLine +</span></span><span class="line"><span class="cl"> , &#34;Ptr&#34;, ProcessAttributes, &#34;Ptr&#34;, ThreadAttributes, &#34;Int&#34;, !!InheritHandles, &#34;UInt&#34;, CreationFlags, &#34;Ptr&#34;, Environment, &#34;Ptr&#34;, CurrentDirectory=&#34;&#34;?0:&amp;CurrentDirectory +</span></span><span class="line"><span class="cl"> , &#34;Ptr&#34;, StartupInfo, &#34;Ptr&#34;, &amp;PROCESS_INFORMATION) +</span></span><span class="line"><span class="cl"> return r?{HANDLE: NumGet(PROCESS_INFORMATION, 0, &#34;Ptr&#34;), hThread: NumGet(PROCESS_INFORMATION, A_PtrSize, &#34;Ptr&#34;) +</span></span><span class="line"><span class="cl"> , ID: NumGet(PROCESS_INFORMATION, A_PtrSize=4?8:16, &#34;Ptr&#34;), ThreadID: NumGet(PROCESS_INFORMATION, A_PtrSize=4?12:24, &#34;Ptr&#34;)}:0, ErrorLevel := !r +</span></span><span class="line"><span class="cl">} +</span></span></code></pre></div><h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/11111111" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Is Windows Bad + https://christitus.com/is-windows-bad/ + Wed, 24 Aug 2022 00:00:00 +0000 + + https://christitus.com/is-windows-bad/ + <p>It&rsquo;s what we know. Windows is a tool and has evolved over the years while dominating the PC Market since the 90s. So it begs the question, is it bad?</p> +<h2 id="what-it-does-well">What it does well</h2> +<p>There are certain things Windows does better than any other OS. The operating system itself has an amazing assortment of compatibility and gaming.</p> +<p>If you want to play the most software and games that works with all your hardware, Windows is your best bet and that isn&rsquo;t changing anytime soon.</p> +<h2 id="why-use-something-else">Why use something else?</h2> +<p>Let&rsquo;s say you don&rsquo;t mind some software or hardware not working or you want to pick out specific hardware to use on another operating system. What do you gain?</p> +<ul> +<li>Better Security - Windows is know to be easily hackable, from the NSA tool leak in 2017, Ransomware, and out dated kernel design. Windows is an absolute security nightmare. Both Mac and Linux offer proper elevation support with a NIX design, while windows does not and relies on the tacked on UAC system.</li> +<li>Better Privacy - Windows has extremely egregious telemetry, but what information does Windows collect?</li> +</ul> +<table> +<thead> +<tr> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>Hardware information</td> +<td>CPU speed, memory capacity, battery, HDD size.</td> +</tr> +<tr> +<td>Network Data</td> +<td>Adapter speed, WiFi Data, and Mobile data if SIM exists</td> +</tr> +<tr> +<td>Event Metrics</td> +<td>Basic pc events</td> +</tr> +<tr> +<td>State Changes</td> +<td>App uptime, CPU allocation to what app, and crashes</td> +</tr> +<tr> +<td>Accessory data</td> +<td>What you have connected to the PC</td> +</tr> +<tr> +<td>Microsoft Store Logs</td> +<td>Purchases, installs, updates, viewed, launched, etc.</td> +</tr> +<tr> +<td>In-depth system specs</td> +<td>Greater detail on hardware capabilities</td> +</tr> +<tr> +<td>App logs</td> +<td>How often you use what and how quick they are</td> +</tr> +<tr> +<td>Browser activity logs</td> +<td>Shows what sites you visit and what you searched for</td> +</tr> +<tr> +<td>Enhanced Error Reporting</td> +<td>Dumps entire memory and submits anything running.</td> +</tr> +<tr> +<td>Keylogging</td> +<td>provided by &ldquo;Improve Inking and typing recognition&rdquo;</td> +</tr> +</tbody> +</table> +<ul> +<li>More Consistency - One of the biggest issues Windows has is the rolling update cycle that tends to mess up computers. There are ways businesses tame this process and I&rsquo;ve even shown how to have sane windows update settings, but the default configuration will typically land users in an undesirable place more often than not. Mac and Linux typically have much better update cycles and far fewer issues with system updates, and need fewer reboots.</li> +</ul> +<h2 id="the-microsoft-hate">The Microsoft HATE</h2> +<p>This all doesn&rsquo;t sound too bad, most people don&rsquo;t care about privacy or security as they freely give it away on social media. See this image if you want a good laugh at how bad people are at these practices.</p> +<p><img src="https://christitus.com/images/2022/social-eng.jpg" alt="social"></p> +<p>So why do people hate Microsoft and try to get away from Windows? The monopoly and absolute ruthless business model it has built over the past 30 years is something to marvel at.</p> +<h3 id="government-cooperation">Government Cooperation</h3> +<p>It has grown so influential from its massive government lobby and has even an entire wing dedicated to working with governments. While some of this is bad, not all of it is. Their monitoring has helped stop some cyberattacks, like Ukraine cyber attacks in 2022 and this close partnership even had the NSA and FBI remotely hack into Microsoft exchange servers and patch the system. (source: <a href="https://www.enterprisetimes.co.uk/2021/04/14/nsa-and-fbi-move-to-help-microsoft-with-its-exchange-server-vulnerabilities/">https://www.enterprisetimes.co.uk/2021/04/14/nsa-and-fbi-move-to-help-microsoft-with-its-exchange-server-vulnerabilities/</a>)</p> +<p>The downside to this is when the NSA tools leaked in 2017 with blatant backdoors that spawned a massive ransomware attack around the world with EternalBlue exploit that then spawned a host of WannaCry ransomware payloads delivered to millions of computers. (source: <a href="https://www.wired.com/story/eternalblue-leaked-nsa-spy-tool-hacked-world/">https://www.wired.com/story/eternalblue-leaked-nsa-spy-tool-hacked-world/</a>)</p> +<h3 id="the-companies-microsoft-killed">The Companies Microsoft Killed</h3> +<p>&ldquo;<strong>Embrace, extend, and extinguish</strong>&rdquo; (<strong>EEE</strong>), also known as &ldquo;<strong>embrace, extend, and exterminate</strong>&rdquo;, is a phrase that the U.S. Department of Justice found that was used internally by Microsoft&hellip; (source: <a href="https://en.wikipedia.org/wiki/Embrace,_extend,_and_extinguish">https://en.wikipedia.org/wiki/Embrace,_extend,_and_extinguish</a>)</p> +<p>They have successfully murdered companies and ruined countless lives while stifling innovation to get to where they are. Examples:</p> +<ul> +<li>Browser incompatibilities: Netscape killed off and why we were plagued by the hellscape of Internet Exploader and ActiveX controls for almost a decade before Chrome came along.</li> +<li>Office: They purposely held back the API to make other competitors, like WordPerfect, able to succeed when they launched in Windows 98. With no documentation this ensured Microsoft Office had to be purchased and used by the world killing many competitors. They also did this by making Office documents render improperly in other browsers that weren&rsquo;t Internet Explorer.</li> +<li>Purposely breaking Java programs on other systems so they weren&rsquo;t cross-platform. They&rsquo;ve settled with Sun for over 2 billion dollars in a lawsuit they lost back in 2002 and 20 million in 2001.</li> +<li>Why email sucks? Microsoft implemented MAPI protocol instead of using many common forms like SMTP, POP, or IMAP. On October 1st of 2022, they disabled the following protocols from Exchange Online: <code>Outlook, EWS, RPS, POP, IMAP, and EAS</code> and even SMTP gets disabled if not used.</li> +</ul> +<p>So the hate comes from the world that never happened because of Microsoft&rsquo;s greed. The missed innovations, the companies that were forced to shutdown, and the lives that it destroyed, all to make the Microsoft monopoly.</p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/Sh1kZD7EVj0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Nix Package Manager + https://christitus.com/nix-package-manager/ + Mon, 22 Aug 2022 00:00:00 +0000 + + https://christitus.com/nix-package-manager/ + <p>This standalone package manager is absolutely stunning and I can&rsquo;t believe I&rsquo;m just now discovering it&rsquo;s true power.</p> +<blockquote class="twitter-tweet"><p lang="en" dir="ltr">I was wrong, NIX is the best standalone package manager.</p>&mdash; Chris Titus Tech (@christitustech) <a href="https://twitter.com/christitustech/status/1559232526094417921?ref_src=twsrc%5Etfw">August 15, 2022</a></blockquote> +<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> + +<h2 id="installation">Installation</h2> +<p>Source: <a href="https://github.com/NixOS/nix">https://github.com/NixOS/nix</a></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">curl -L https://nixos.org/nix/install | sh +</span></span></code></pre></div><p><em>Note: I&rsquo;d recommend multi-user install if it prompts for it.</em></p> +<h2 id="finding-packages">Finding Packages</h2> +<p>I&rsquo;d recommend using their website to find packages to install, but make sure to click the &ldquo;unstable&rdquo; button has NixOS stable is a Linux Distribution few use.</p> +<p><a href="https://search.nixos.org/packages">https://search.nixos.org/packages</a></p> +<p>Or from terminal you can list all packages with <code>nix-env -qaP</code> then just grep what you are looking for. Example: <code>nix-env -qaP | grep hugo</code></p> +<h2 id="usage">Usage</h2> +<p>Here is the basic usage of nix, most revolve around the <code>nix-env</code> command. These are manually managed and require user intervention</p> +<ul> +<li>List Installed packages <code>nix-env -q</code></li> +<li>Install Packages <code>nix-env -iA nixpkgs.packagename</code></li> +<li>Erase Packages <code>nix-env -e packagename</code></li> +<li>Update All Packages <code>nix-env -u</code></li> +<li>Update Specific Packages <code>nix-env -u packagename</code></li> +<li>Hold Specific Package <code>nix-env --set-flag keep true packagename</code></li> +<li>List Backups (Generations) <code>nix-env --list-generations</code></li> +<li>Rollback to Last Backup <code>nix-env --rollback</code></li> +<li>Rollback to Specific Generation <code>nix-env --switch-generation #</code></li> +</ul> +<h2 id="help-and-manual">Help and Manual</h2> +<p>Official Manual is <a href="https://nixos.org/manual/nix/stable/">here</a>. You can also get more details with <code>man nix</code> or <code>man nix-env</code>.</p> +<h2 id="troubleshooting">Troubleshooting</h2> +<h3 id="programs-not-showing-up-in-start-menu">Programs not showing up in start menu</h3> +<p>NIX stores all the .desktop files for the programs it installs @ <code>/home/$USER/.nix-profile/share/applications/</code> and a simple symlink will fix them not showing up in your start menu.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">ln -s /home/$USER/.nix-profile/share/applications/* /home/$USER/.local/share/applications/ +</span></span></code></pre></div><h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/Ty8C2B910EI" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Life without a Smart Phone + https://christitus.com/switching-to-dumbphone/ + Wed, 17 Aug 2022 00:00:00 +0000 + + https://christitus.com/switching-to-dumbphone/ + <p>I recently switched to a Dumb Phone from the smart phone and many asked why? This is my breakdown of the entire experience and recommendations. This certainly won&rsquo;t be for everyone, but for those that attempt it, I can promise that it will be extremely rewarding for those that have the willpower to do it.</p> +<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Its been a week since I first switched to a dumb phone. <br>I&#39;m never going back. Smart phones cost me way to much time! <a href="https://t.co/aV4DEYKbM6">pic.twitter.com/aV4DEYKbM6</a></p>&mdash; Chris Titus Tech (@christitustech) <a href="https://twitter.com/christitustech/status/1557833634467414016?ref_src=twsrc%5Etfw">August 11, 2022</a></blockquote> +<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> + +<h2 id="why-use-a-dumb-phone">Why use a dumb phone?</h2> +<p>Here are the benefits for using a dumb phone that I have found:</p> +<ul> +<li>More Productivity</li> +<li>Mindfulness +<ul> +<li>Less Anxiety</li> +<li>More at rest</li> +<li>No longer overwhelmed</li> +</ul> +</li> +</ul> +<p>There is probably more, but these are the two massive things that has changed my life for the better. I can boil down these benefits to the fact I can&rsquo;t check my email, look up a restaurant, google some fact, browse social media, and many other apps dinging or grabbing my attention. The greatest strength of the smart phone is it can do ANYTHING, but that can lead to massive decision fatigue and it personally made me FAR less productive.</p> +<h2 id="my-journey-and-downsides">My Journey and Downsides</h2> +<p>I had no intention of using a dumb phone, but then after researching some privacy, and security phones I bought one that looked cool. Little did I know, the Punkt MP02 really was a dumb phone with an app for Signal, so it could be marketed as a &ldquo;Security Phone&rdquo;.</p> +<p>My first reaction was, &ldquo;This phone SUCKS!&rdquo;, but I needed to make a video about it, so I continued. Initially I was in shock without my smart phone:</p> +<ul> +<li>No News when on the toilet</li> +<li>Email on the go</li> +<li>Music while working out or walking</li> +<li>Workout Apps</li> +<li>Food Apps</li> +<li>Social Media: Twitter to kill time, or YouTube studio to check comments, etc.</li> +</ul> +<p>Within an hour or two I was bored during tasks my smart phone would fill in. Having said that, I really didn&rsquo;t even use my smart phone much. My digital wellbeing app clocked in at an average of 30 minute of usage a day. While many people are using their phones 3+ hours per day. <strong>The average in the world being 3 hours 15 minutes screen time per day and Americans spending 4 hours 16 minutes on mobile devices per day!</strong></p> +<p>After I became bored and didn&rsquo;t fill in every second, something magical happened. I actually had a cloud lift from me, and I started doing all the tasks I&rsquo;d been putting off. I did more in that one day then I had in the PAST WEEK!</p> +<h2 id="recommendations-and-cheating">Recommendations and Cheating</h2> +<p>There are some recommendations and &ldquo;cheating&rdquo; I do when it comes to quality of life. But before I get in to that, I have to say, &ldquo;You do not NEED your smartphone&rdquo;. All these things are simply conveniences and if push came to shove, I&rsquo;d rather lose these things than have them because of the benefits of a dumb phone.</p> +<h3 id="navigation">Navigation</h3> +<p>This is a big one, but on my dumb phone there is WiFi tethering. My workaround is simply to use an all-in-one android car deck I installed last year that utilizes the WiFi.</p> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/SXmFBWTxl-U" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + +<h3 id="uber-food-music-workout-and-bank-apps">Uber, Food, Music, Workout and Bank Apps</h3> +<p>Most of these are covered by using a computer and a webpage, however for those that do require a physical phone I can either use my old smartphone or get away with a android image off of <a href="https://www.osboxes.org/android-x86/">https://www.osboxes.org/android-x86/</a> and load it up in Virtualbox or VMWare. Here is a walkthrough video I did on that:</p> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/JQc6VXuwlWk" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + +<h3 id="group-messages">Group Messages</h3> +<p>This is one of the downsides, because most dumbphones can&rsquo;t do MMS or groups messages. The Punkt MP02 doesn&rsquo;t do group messages but can receive them independently and GIFs come in, but emoji&rsquo;s do not. Depending on the phone, these things may or may NOT work. One workaround is to use Google Fi for your carrier and then <a href="https://messages.google.com">https://messages.google.com</a></p> +<p><img src="https://christitus.com/images/2022/dumbphone/web-message.png" alt="web-message"></p> +<h3 id="camera-and-photos">Camera and Photos</h3> +<p>Use an actual camera and then upload them your storage. Like we did back in the day!</p> +<h2 id="will-i-go-back">Will I Go Back?</h2> +<p>I sincerely doubt it. If anything I might get a bit better dumb phone with a bit more options like music or even a good camera if that ever became an option. However, my well being is first and foremost and after I STOPPED lying to myself that I needed a smart phone. I haven&rsquo;t felt this good in a very LONG time.</p> +<p>There is also a lot of folks that simply addicted and can&rsquo;t quit their smartphone. Even though my usage was 30 minutes a day with minimal usage, I was addicted. They are designed that way. I was lying to myself when I said I&rsquo;ll just delete my social media apps or this or that. In the end, when boredom hit, I always would pick up my phone because there was always SOMETHING it could do to fill the time.</p> +<p>In the end, most of the population simply can&rsquo;t quit it and will remain addicted and working with it as a severe handicap on their life. This gives me the ultimate edge to get ahead and produce more content than a person with a smart phone.</p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/tzbKqTRuRzU" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Disable Win Defender + https://christitus.com/disable-win-defender/ + Fri, 12 Aug 2022 00:00:00 +0000 + + https://christitus.com/disable-win-defender/ + <p>Windows Defender can be a massive drain on system performance and often can have a lot of false positives. While I recommend Anti-virus for most, I don&rsquo;t like having it enabled on my systems that aren&rsquo;t used for web browsing.</p> +<h2 id="how-secure-is-windows-defender">How Secure is Windows Defender</h2> +<p>I often hear the phrase and have used the phrase &ldquo;Windows Defender is good enough&rdquo;, but often get mistaken in to thinking Defender is a good Anti-Virus. For detection rates it is good, but for protection it is NOT! Why? Anyone with a little bit of knowledge knows how to disable it without the user even knowing it. The services, registry entries, and built-in windows policies are designed to make it easy for an administrator to disable it. Why does Microsoft make it so easy to disable it? Simple, Windows in business environments never use Defender and administrators need to disable it.</p> +<h2 id="what-are-the-methods-to-disable-defender">What are the methods to disable defender?</h2> +<p>There are a multitude of ways to disable defender or render it useless. Most properly programmed viruses will utilize one or more of these methods below.</p> +<h3 id="windows-settings">Windows Settings</h3> +<p>Turn off Tamper Protection and Real-Time monitoring.</p> +<p><img src="https://christitus.com/images/2022/remove-win-defender/real-monitoring.png" alt="real-monitoring"></p> +<h3 id="registry">Registry</h3> +<p>There are so many registry settings, but the main ones to focus on are below:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Defender\Features] +</span></span><span class="line"><span class="cl">&#34;MpPlatformKillbitsFromEngine&#34;=hex:00,00,00,00,00,00,00,00 +</span></span><span class="line"><span class="cl">&#34;TamperProtectionSource&#34;=dword:00000000 +</span></span><span class="line"><span class="cl">&#34;MpCapability&#34;=hex:00,00,00,00,00,00,00,00 +</span></span><span class="line"><span class="cl">&#34;TamperProtection&#34;=dword:00000000 +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl">[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender] +</span></span><span class="line"><span class="cl">&#34;PUAProtection&#34;=dword:00000000 +</span></span><span class="line"><span class="cl">&#34;DisableRoutinelyTakingAction&#34;=dword:00000001 +</span></span><span class="line"><span class="cl">&#34;ServiceKeepAlive&#34;=dword:00000000 +</span></span><span class="line"><span class="cl">&#34;AllowFastServiceStartup&#34;=dword:00000000 +</span></span><span class="line"><span class="cl">&#34;DisableLocalAdminMerge&#34;=dword:00000001 +</span></span><span class="line"><span class="cl">&#34;DisableAntiSpyware&#34;=dword:00000001 +</span></span><span class="line"><span class="cl">&#34;RandomizeScheduleTaskTimes&#34;=dword:00000000 +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl">[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Microsoft Antimalware] +</span></span><span class="line"><span class="cl">&#34;ServiceKeepAlive&#34;=dword:00000000 +</span></span><span class="line"><span class="cl">&#34;AllowFastServiceStartup&#34;=dword:00000000 +</span></span><span class="line"><span class="cl">&#34;DisableRoutinelyTakingAction&#34;=dword:00000001 +</span></span><span class="line"><span class="cl">&#34;DisableAntiSpyware&#34;=dword:00000001 +</span></span><span class="line"><span class="cl">&#34;DisableAntiVirus&#34;=dword:00000001 +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl">[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender\Real-Time Protection] +</span></span><span class="line"><span class="cl">&#34;DisableRealtimeMonitoring&#34;=dword:00000001 +</span></span><span class="line"><span class="cl">&#34;DisableBehaviorMonitoring&#34;=dword:00000001 +</span></span><span class="line"><span class="cl">&#34;DisableOnAccessProtection&#34;=dword:00000001 +</span></span><span class="line"><span class="cl">&#34;DisableScanOnRealtimeEnable&#34;=dword:00000001 +</span></span><span class="line"><span class="cl">&#34;DisableIOAVProtection&#34;=dword:00000001 +</span></span><span class="line"><span class="cl">&#34;LocalSettingOverrideDisableOnAccessProtection&#34;=dword:00000000 +</span></span><span class="line"><span class="cl">&#34;LocalSettingOverrideRealtimeScanDirection&#34;=dword:00000000 +</span></span><span class="line"><span class="cl">&#34;LocalSettingOverrideDisableIOAVProtection&#34;=dword:00000000 +</span></span><span class="line"><span class="cl">&#34;LocalSettingOverrideDisableBehaviorMonitoring&#34;=dword:00000000 +</span></span><span class="line"><span class="cl">&#34;LocalSettingOverrideDisableIntrusionPreventionSystem&#34;=dword:00000000 +</span></span><span class="line"><span class="cl">&#34;LocalSettingOverrideDisableRealtimeMonitoring&#34;=dword:00000000 +</span></span><span class="line"><span class="cl">&#34;RealtimeScanDirection&#34;=dword:00000002 +</span></span><span class="line"><span class="cl">&#34;IOAVMaxSize&#34;=dword:00000512 +</span></span><span class="line"><span class="cl">&#34;DisableInformationProtectionControl&#34;=dword:00000001 +</span></span><span class="line"><span class="cl">&#34;DisableIntrusionPreventionSystem&#34;=dword:00000001 +</span></span><span class="line"><span class="cl">&#34;DisableRawWriteNotification&#34;=dword:00000001 +</span></span></code></pre></div><p>For a more comprehensive list check out: <a href="https://christitus.com/files/windefender_disable.reg">https://christitus.com/files/windefender_disable.reg</a></p> +<h3 id="services">Services</h3> +<p>List of Services Windows Defender uses and relies upon.</p> +<ul> +<li>WdNisSvc</li> +<li>WdNisDrv</li> +<li>WdFilter</li> +<li>WdBoot</li> +<li>wcncsvc</li> +</ul> +<h3 id="files">Files</h3> +<p>There are a ton of program files and logs for Windows Defender located at <code>C:\Program Files\Windows Defender</code></p> +<h3 id="powershell">Powershell</h3> +<p>This can be used to do temporary disable parts or all of Defender as well. Here is some basic command I used and shared on Twitter:</p> +<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Why I hate Windows defender in one picture... <a href="https://t.co/HFYXV38Ytz">pic.twitter.com/HFYXV38Ytz</a></p>&mdash; Chris Titus Tech (@christitustech) <a href="https://twitter.com/christitustech/status/1556368265139585026?ref_src=twsrc%5Etfw">August 7, 2022</a></blockquote> +<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> + +<h2 id="github-projects---caution">GitHub Projects - CAUTION!</h2> +<p>Here are a couple GitHub projects that will completely destroy defender and when used improperly can even be used to deliver virus payloads onto systems</p> +<ul> +<li><a href="https://github.com/jbara2002/windows-defender-remover">https://github.com/jbara2002/windows-defender-remover</a></li> +<li><a href="https://github.com/swagkarna/Defeat-Defender-V1.2">https://github.com/swagkarna/Defeat-Defender-V1.2</a></li> +<li><a href="https://github.com/qtkite/defender-control">https://github.com/qtkite/defender-control</a></li> +</ul> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/UywjKEMjSp0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Best Package Manager + https://christitus.com/best-package-manager/ + Mon, 08 Aug 2022 00:00:00 +0000 + + https://christitus.com/best-package-manager/ + <p>Instead of using the built-in package manager in Linux or some container that never puts the programs files in a usable spot, we will use Homebrew!</p> +<p>I know, it&rsquo;s an OS X package manager, but it works fantastic on Linux and solves MANY problems.</p> +<p>Main issues it addresses:</p> +<ul> +<li>Older packages from stable Linux distributions</li> +<li>Putting the installed packages in easy spots to reference them and modify them when needed.</li> +<li>Using sudo can be dangerous and brew installs it to a home directory instead of systemwide without needing sudo.</li> +</ul> +<p>A good example of this. On Debian and Fedora the package HUGO is old&hellip; like really old. Anywhere between version .60 and .90 where home brew installs version .101-extended</p> +<h2 id="installing-homebrew">Installing Homebrew</h2> +<h3 id="dependencies">Dependencies</h3> +<p><strong>Debian or Ubuntu</strong></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo apt-get install build-essential procps curl file git +</span></span></code></pre></div><p><strong>Fedora, CentOS, or Red Hat</strong></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo yum groupinstall &#39;Development Tools&#39; +</span></span><span class="line"><span class="cl">sudo yum install procps-ng curl file git +</span></span><span class="line"><span class="cl">sudo yum install libxcrypt-compat # needed by Fedora 30 and up +</span></span></code></pre></div><h3 id="install-script">Install Script</h3> +<p>One command to install it:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">/bin/bash -c &#34;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)&#34; +</span></span></code></pre></div><h3 id="make-brew-available-in-terminal">Make brew available in terminal</h3> +<p>By default homebrew puts itself in an easy to access directory. <code>/home/linuxbrew/.linuxbrew</code> but there are a variety methods to use it from your prompt.</p> +<h4 id="official-method">Official Method</h4> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">test -d ~/.linuxbrew &amp;&amp; eval &#34;$(~/.linuxbrew/bin/brew shellenv)&#34; +</span></span><span class="line"><span class="cl">test -d /home/linuxbrew/.linuxbrew &amp;&amp; eval &#34;$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)&#34; +</span></span><span class="line"><span class="cl">test -r ~/.bash_profile &amp;&amp; echo &#34;eval \&#34;\$($(brew --prefix)/bin/brew shellenv)\&#34;&#34; &gt;&gt; ~/.bash_profile +</span></span><span class="line"><span class="cl">echo &#34;eval \&#34;\$($(brew --prefix)/bin/brew shellenv)\&#34;&#34; &gt;&gt; ~/.profile +</span></span></code></pre></div><h4 id="the-bashrc-method">The .bashrc Method</h4> +<p>Add the following line to <code>~/.bashrc</code></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">eval &#34;$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)&#34; +</span></span></code></pre></div><p><em>Note: if you use ZSH then the file you need to edit is <code>~/.zshrc</code></em></p> +<h2 id="using-homebrew">Using Homebrew</h2> +<p>With homebrew setup here are the commands I use almost daily</p> +<ul> +<li><code>brew install programname</code> - Install programname using brew</li> +<li><code>brew search programname</code> - Search for programname in brew</li> +<li><code>brew uninstall programname</code> - Uninstall program</li> +<li><code>brew update</code> - Updates brew</li> +<li><code>brew upgrade program</code> - Updates just that one program</li> +<li><code>brew list</code> - List programs in brew</li> +</ul> +<p>Get Lost? <code>man brew</code> to look at all documentation in terminal or don&rsquo;t know what a program does? <code>brew info programname</code></p> +<p>That&rsquo;s it for the daily syntax</p> +<h2 id="understanding-homebrew-terms">Understanding Homebrew terms</h2> +<ul> +<li>keg - Program binaries created from source</li> +<li>bottle - Program binaries downloaded</li> +<li>cellar - Directory where kegs / binaries are stored</li> +<li>tap - git repository</li> +<li>cask - mac os native binary (not used in Linux)</li> +</ul> +<p>There is other stuff to homebrew but read the full documentation if interested here <a href="https://docs.brew.sh/Formula-Cookbook#homebrew-terminology">https://docs.brew.sh/Formula-Cookbook#homebrew-terminology</a></p> +<p>Basics of homebrew on Linux official documentation <a href="https://docs.brew.sh/Homebrew-on-Linux">https://docs.brew.sh/Homebrew-on-Linux</a></p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/QsYEvnV-P34" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + +<h2 id="thank-you-homebrew-team">Thank you Homebrew Team</h2> +<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Thanks <a href="https://twitter.com/MacHomebrew?ref_src=twsrc%5Etfw">@MacHomebrew</a> for making an amazing product and also letting us Linux users in on the fun!</p>&mdash; Chris Titus Tech (@christitustech) <a href="https://twitter.com/christitustech/status/1554153066823385089?ref_src=twsrc%5Etfw">August 1, 2022</a></blockquote> +<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> + + + + Save HOURS of work with Regex + https://christitus.com/regex/ + Fri, 05 Aug 2022 00:00:00 +0000 + + https://christitus.com/regex/ + <p>RegEx is a formidable tool that many just don&rsquo;t understand, but can save literally thousands of hours of work.</p> +<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Boom got it with RegEx... Thanks to the website RegExr for testing this insane string. <a href="https://t.co/FHVonwqcsh">pic.twitter.com/FHVonwqcsh</a></p>&mdash; Chris Titus Tech (@christitustech) <a href="https://twitter.com/christitustech/status/1553598175314845697?ref_src=twsrc%5Etfw">July 31, 2022</a></blockquote> +<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> + +<p>However, for many years I just couldn&rsquo;t be bothered to learn anything beside the basics <code>.*</code> or <code>[a-z]</code>. I just had a project pop up where I&rsquo;d have to spend hours finding and replacing a complex markdown line I was using to pull images and a video link. The solution was painfully obvious&hellip; either I get better with RegEx or spend hours finding and replacing text in hundreds of posts.</p> +<h2 id="understanding-regex">Understanding RegEx</h2> +<p>Learning all the syntax for RegEx is not happening for me and probably many others. There is a solution for this and you don&rsquo;t need to&hellip; <a href="https://regexr.com/">https://regexr.com/</a></p> +<p><img src="https://christitus.com/images/2022/regex/text-example.png" alt="text-example"></p> +<p>Now that you have an explainer of all the syntax and cheat sheet. We just need to know a few basic features of RegEx, so you can perfect the pattern that you need. Also, the need to understand groups and variables will make the find and replace much more powerful.</p> +<h2 id="making-the-perfect-pattern">Making the Perfect Pattern</h2> +<p>With our test example on regexr.com we can test our pattern to make sure we match exactly what we need. Now normally a guide would start talking about <code>.*</code> and other match characters, but frankly any site like regexr or regex101.com, will have those laid out for you.</p> +<p>Instead, let&rsquo;s talk about escaping characters and how to match weird expressions that have syntax like <code>[,(,+,?</code> and more. All these can really mess up matching your pattern. So you need to <em>escape</em> the with a <code>\</code> before the symbol, so it would look something like this <code>\[blah\]</code> this is regex speak for <code>[blah]</code> the escaping character makes it actually register the bracket or parenthesis. Without it, it will probably just give you some syntax error.</p> +<p>The websites I gave above are perfect for pointing out flaws in your pattern or maybe you missed escaping that + sign or question mark. It&rsquo;s why having these syntax sites available is vital.</p> +<h2 id="selection-groups">Selection Groups</h2> +<p>Now that you understand how to match things with RegEx you can wipe out things with ease, but what about saving that bit of the match you need?</p> +<p>Example (I want to save youtube video id):</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">img.youtube.com/vi/0q3rGKIMZg +</span></span></code></pre></div><p>Using this Regex will clean it up and save the id using the selection group.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">.*vi\/(.*) +</span></span></code></pre></div><p>This will match and SELECT everything after <code>vi/</code> with <code>(.*)</code> in the string, where <code>.*vi\/</code> matches <code>img.youtube.com/vi/</code>. The value <code>0q3rGKIMZg</code> will be stored in <code>$1</code> which is the first selection group. If you do multiple <code>()</code> selections the second one would be <code>$2</code> and so on.</p> +<p>Example new format from old <code>{{ youtube 0q3rGKIMZg }}</code></p> +<p>The replace field would simply be <code>{{ youtube $1 }}</code></p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/uwtPH6owqZA" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + The 3 Biggest Security Mistakes Linux Users Make + https://christitus.com/linux-security-mistakes/ + Wed, 03 Aug 2022 00:00:00 +0000 + + https://christitus.com/linux-security-mistakes/ + <p>Security is a journey, not a destination</p> +<p>So after making a couple videos showing how to increase performance in desktop computers running Linux, I was overwhelmed by the sheer scale of comments worried about mitigations. If you are worried about that, you should be even more worried about the things below.</p> +<p>Here are the 3 biggest things I see wrong in Linux installs that can easily be exploited or lead to massive problems. I&rsquo;m choosing some of the worst offenders from the basic security layers an attacker goes through.</p> +<p><img src="https://christitus.com/images/2022/linux-security-mistakes/basic-layers.png" alt="basic-layers"></p> +<h2 id="network-level---not-using-a-firewall">Network Level - Not using a Firewall</h2> +<p>Managing a firewall on a system can be a monumental task, but one of the most important is managing the traffic coming to and from your computer. The best packages for this in Linux is <code>ufw</code> and <code>fail2ban</code>.</p> +<h3 id="ufw">UFW</h3> +<p>Uncomplicated Firewall is easy to setup and understand. It blocks traffic and allows it.</p> +<h4 id="install-ufw">Install UFW</h4> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo apt install ufw +</span></span></code></pre></div><h4 id="my-recommended-rules">My recommended Rules</h4> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo ufw limit 22/tcp +</span></span><span class="line"><span class="cl">sudo ufw allow 80/tcp +</span></span><span class="line"><span class="cl">sudo ufw allow 443/tcp +</span></span><span class="line"><span class="cl">sudo ufw default deny incoming +</span></span><span class="line"><span class="cl">sudo ufw default allow outgoing +</span></span><span class="line"><span class="cl">sudo ufw enable +</span></span></code></pre></div><h3 id="fail2ban">Fail2Ban</h3> +<p>Fail2Ban is one of the best programs that is installed in every single Linux server I have EVER installed. This program is a intrusion prevention utility. Most install it, but forget to configure and use it. These are the settings I like to use.</p> +<h4 id="installing-fail2ban">Installing Fail2Ban</h4> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo apt install fail2ban +</span></span></code></pre></div><h4 id="my-fail2ban-settings-file">My Fail2Ban Settings File</h4> +<p>Fail2Ban by default doesn&rsquo;t really do much unless you adjust the settings file. Here is mine, but feel free to change it to your needs.</p> +<p>All configuration files are in <code>/etc/fail2ban</code></p> +<p>Configuration file examples and defaults are in two main files <code>/etc/fail2ban/fail2ban.conf</code> and <code>/etc/fail2ban/jail.conf</code></p> +<p>My Config - <code>/etc/fail2ban/jail.local</code></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">[DEFAULT] +</span></span><span class="line"><span class="cl">ignoreip = 127.0.0.1/8 ::1 +</span></span><span class="line"><span class="cl">bantime = 3600 +</span></span><span class="line"><span class="cl">findtime = 600 +</span></span><span class="line"><span class="cl">maxretry = 5 +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl">[sshd] +</span></span><span class="line"><span class="cl">enabled = true +</span></span></code></pre></div><p>Now in more complex service environments I would generally start adding services and programs like <code>ssh-jail.conf</code> to the <code>/etc/fail2ban/jail.d/</code> directory. Any program that hackers use is typically always under watch, like WordPress installs for example:</p> +<p><code>/etc/fail2ban/jail.d/wordpress.conf</code></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">[wordpress] +</span></span><span class="line"><span class="cl">enabled = true +</span></span><span class="line"><span class="cl">filter = wordpress +</span></span><span class="line"><span class="cl">logpath = /var/log/auth.log +</span></span><span class="line"><span class="cl">maxretry = 3 +</span></span><span class="line"><span class="cl">port = http,https +</span></span><span class="line"><span class="cl">bantime = 300 +</span></span></code></pre></div><h4 id="enabling-fail2ban">Enabling Fail2Ban</h4> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo systemctl enable fail2ban +</span></span><span class="line"><span class="cl">sudo systemctl start fail2ban +</span></span></code></pre></div><h2 id="operating-system-level---adding-repositories">Operating System Level - Adding Repositories</h2> +<p>Too many times do I see people installing and using 10+ repositories on a Linux install. Obviously, adding repositories to get the programs you want on your system is something you will do. However, there is a hierarchy to these repositories and if you just blindly trust and import all the keys to the repositories, they can and will override packages from the base distribution. This isn&rsquo;t good and can lead to security issues or even break your system. I&rsquo;d highly recommend putting a priority on these, so it will only use them when the package doesn&rsquo;t exist in that base repo.</p> +<p>If you don&rsquo;t use any priority, often times the package you want from the added repo is installed and updated, but sometimes they add OTHER packages in that repo that will also overwrite existing packages, which can lead to some undesired results.</p> +<h3 id="prioritizing-repositories">Prioritizing Repositories</h3> +<p>Official documentation for APT (Debian) - <a href="https://wiki.debian.org/DebianRepository/UseThirdParty">https://wiki.debian.org/DebianRepository/UseThirdParty</a></p> +<p>All priority preference files are stored in the <code>/etc/apt/preferences.d/</code> directory.</p> +<p>Example: <code>volian.pref</code></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Package: * +</span></span><span class="line"><span class="cl">Pin: origin deb.volian.org +</span></span><span class="line"><span class="cl">Pin-Priority: 100 +</span></span></code></pre></div><ul> +<li>Set specific packages to only install with the <code>Package: *</code> Line</li> +<li>Pin: Origin is the address of the repo</li> +<li>Pin-Priority is generally 100 which means it will update packages NOT in base repos. +<ul> +<li>1 = do not auto update</li> +<li>100 = update if not in other repos</li> +<li>over 100 = overwrite base repos</li> +</ul> +</li> +</ul> +<p>Arch doesn&rsquo;t have any priorities in pacman that I can find, but most are building from source with limited 3rd party repositories. Building from source presents even more dangers for those that are blindly installing programs through the AUR.</p> +<h2 id="application-level---not-using-apparmor-or-selinux">Application Level - Not using AppArmor or SELinux</h2> +<p>Most Linux distributions have one of these installed by default, but there is one major one that most forget. Arch Linux. A lot of install scripts forget apparmor and SELinux is too complex for many to install. These programs do one massive security feature that many just don&rsquo;t realize. They can sandbox and limit program access even when they get elevated. If an application profile doesn&rsquo;t exist, they typically limit its access to the home folder and limit hardware access. You can customize application profiles to expand or limit access as needed. Without having either of the programs installed, you are putting yourself at risk.</p> +<p>However, just the simple act of installing these programs often leads to them being used or setup. They typically are set up to be in complain mode for AppArmor or permissive mode for SELinux. While these are fine for logging and adding some security, it normally would NOT stop the program doing damage.</p> +<p>I&rsquo;ve set these up in server environments and it is not trivial to do or maintain. Most, if not all, Linux desktops don&rsquo;t bother with setting these to enforce mode and blocking programs that don&rsquo;t comply to their application profile. This requires the end user to have knowledge of how to set up profiles and generate them when they are missing, so the programs will work correctly.</p> +<p>To learn more about using them: +AppArmor Documentation <a href="https://gitlab.com/apparmor/apparmor/-/wikis/Documentation">https://gitlab.com/apparmor/apparmor/-/wikis/Documentation</a> +SELinux Documentation <a href="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/selinux_users_and_administrators_guide/index">https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/selinux_users_and_administrators_guide/index</a></p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/QxNsyrftJ8I" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Shrink VMWare VMDK File + https://christitus.com/shrink-vmware-vmdk/ + Sat, 30 Jul 2022 13:40:50 -0500 + + https://christitus.com/shrink-vmware-vmdk/ + <p>This goes over reducing the size of a VMDK file using open-vm-tools and is used often in VMWare environments.</p> +<h2 id="tools-needed">Tools Needed</h2> +<p>I&rsquo;d recommend VMWare Workstation Pro, but you can get away with just using player if you don&rsquo;t have a license.</p> +<p>Inside the Guest (Virtual Machine) you need to install <code>open-vm-tools</code> on Linux which should be in the base repository for most main distributions.</p> +<h2 id="shrinking-vmdk">Shrinking VMDK</h2> +<h3 id="on-guest">On Guest</h3> +<p>These are done on the GUEST (Inside Virtual Machine)</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">vmware-toolbox-cmd disk shrink / +</span></span></code></pre></div><p>If you are want to shrink a Windows Guest you need to install VMWare-Tools inside the VM. After the tools are installed, simply click the following in VMWare Workstation <code>VM Tab -&gt; Manage -&gt; Clean up Disks</code> (Windows ONLY)</p> +<h3 id="on-host">On Host</h3> +<p>From inside your VMWare Workstation install you will find the following program <code>vmware-vdiskmanager</code> this is where we finalize the vmdk by defragmenting it and doing the final shrink.</p> +<h4 id="defrag">Defrag</h4> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">vmware-vdiskmanager.exe -d /path/to/shrink.vmdk +</span></span></code></pre></div><h4 id="final-shrink">Final Shrink</h4> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">vmware-vdiskmanager.exe -k /path/to/shrink.vmdk +</span></span></code></pre></div><h4 id="example">Example</h4> +<p><img src="https://christitus.com/images/2022/vmware-vdisk.jpg" alt="vdisk"></p> +<h2 id="still-too-big">Still Too Big?</h2> +<p>If it is still too large, you can simply export the VM to OVF format inside VMWare Workstation. This will create a new vmdk file that will be considerably smaller. OVF is pretty easy to move to VirtualBox and other VM platforms as well.</p> +<p><code>export to ovf</code></p> +<p><img src="https://christitus.com/images/2022/vmware-ovf.jpg" alt="ovf"></p> + + + + Unlock Steam Deck + https://christitus.com/unlock-steam-deck/ + Wed, 27 Jul 2022 21:26:53 -0500 + + https://christitus.com/unlock-steam-deck/ + <p>This article shows you how to make the steamdeck writable and a full blown desktop that you can install apps on that aren&rsquo;t Flatpak, AppImage, or Snaps. Simply use <code>yay -S packagename</code> to install the app of your choice.</p> +<h2 id="make-desktop-usable-with-password">Make Desktop Usable with password</h2> +<p>set user password with <code>passwd</code> which then allows the use of sudo and various commands. By default the deck user comes with NO PASSWORD! without setting the user password you can NOT use <code>sudo</code></p> +<h2 id="making-the-steamdeck-writable">Making the steamdeck writable</h2> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo steamos-readonly disable +</span></span><span class="line"><span class="cl">echo &#34;keyserver hkps://keyserver.ubuntu.com&#34; &gt;&gt; /etc/pacman.d/gnupg/gpg.conf +</span></span><span class="line"><span class="cl">sudo pacman-key --init +</span></span><span class="line"><span class="cl">sudo pacman-key --populate +</span></span><span class="line"><span class="cl">sudo pacman-key --refresh-keys +</span></span><span class="line"><span class="cl">yay -S base-devel +</span></span></code></pre></div><h2 id="signing-issues---package-installs">Signing Issues - Package Installs</h2> +<p>The repositories for holo and steam deck are very interesting. Here are the base repos and what it is using.</p> +<p><code>/etc/pacman/mirrrorlist</code></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Server = https://steamdeck-packages.steamos.cloud/archlinux-mirror/$repo/os/$arch +</span></span></code></pre></div><p>The main issue is the gnupg signing is completely messed up and often fails when installing packages. This is because the core archlinux-keyring is badly out of date and it will show that any package you are trying to install is out of date, corrupt, or having marginal trust.</p> +<p>Obviously changing the repos to official arch ones would fix this, but then that would change the kernel and a variety of other packages. To fix the key signatures the easiest thing is to grab the up to date keyring from the core archlinux repos and manually install it.</p> +<p>Download Official archlinux-keyring ZST Package: <a href="https://archlinux.org/packages/core/any/archlinux-keyring/download">https://archlinux.org/packages/core/any/archlinux-keyring/download</a> +Then install the downloaded ZST file through pacman - Ex. <code>sudo pacman -U archlinux-keyring-20220713-2-any.pkg.tar.zst</code></p> +<p>This solves all your signing issues.</p> +<h2 id="making-your-own-steam-deck-htpc">Making your own Steam Deck HTPC</h2> +<p><img src="https://christitus.com/images/2022/holo.png" alt="holoiso"></p> +<p>The new steam interface for steam deck is absolutely a home run. It just works with so much functionality and much more when only controling your system with a controller.</p> +<p>Check out HOLO-ISO - <a href="https://github.com/theVakhovskeIsTaken/holoiso">https://github.com/theVakhovskeIsTaken/holoiso</a></p> +<h2 id="league-of-legends-on-linux--steam">League of Legends on Linux / Steam</h2> +<p>Many also asked about the League of Legends and other riot games on steam deck. Now this can be done on any Linux system, but the way its done changes all the time as Riot isn&rsquo;t very friendly to Linux. From the anti-cheat to the ridiculous launcher, it is always a nightmare to deal with unless the publisher stops smoking the devil&rsquo;s lettuce and actually listens to its customers. Because of the ever changing landscape around these two things stay subscribed to <a href="https://www.reddit.com/r/leagueoflinux/">https://www.reddit.com/r/leagueoflinux/</a> sub reddit. Those guys are working day and night to make sure that LoL keeps playing on Linux and are an amazing community&hellip; UNLIKE most of League communities haha.</p> +<h2 id="steam-deck---unexplored-potential">Steam Deck - Unexplored Potential</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/8oQdJjxn9EA" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Speedup Linux + https://christitus.com/speedup-linux/ + Sun, 24 Jul 2022 10:30:53 -0500 + + https://christitus.com/speedup-linux/ + <p>Linux by default is meant for servers and actually decreases the performance for greater security. While this great in business, when using Linux as a desktop it is not ideal unless your are serving other devices on your network with that machine.</p> +<h2 id="disable-mitigations">Disable Mitigations</h2> +<p>This will have a substantial increase in performance just by doing disable many mitigations that happen in multi-threaded systems. The more core count you have the greater the performance gain. Some performances increases can be as large as 30%, but the average increase is about 10%.</p> +<p>Add this to your <code>/etc/default/grub</code> under line <code>GRUB_CMDLINE_LINUX=&quot;rhgb quiet&quot;</code>:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">GRUB_CMDLINE_LINUX=&#34;rhgb quiet mitigations=off&#34; +</span></span></code></pre></div><h2 id="zswap-for-16gb-or-less-systems">ZSwap for 16GB or Less Systems</h2> +<p>Z Swap is the a neat Linux feature that compresses data that is about to enter your swap file. This causes it to be used quite a bit less and can give a performance uplift to those with a small amount of memory. If you have a system with 32GB or greater, I wouldn&rsquo;t recommend doing this.</p> +<p>Add this to your <code>/etc/default/grub</code>:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">GRUB_CMDLINE_LINUX=&#34;zswap.enabled=1 rhgb quiet mitigations=off&#34; +</span></span></code></pre></div><h2 id="systems-older-than-linux-511">Systems older than Linux 5.11</h2> +<p>There is a cool website called <a href="https://make-linux-fast-again.com/">https://make-linux-fast-again.com/</a> that has a massive amount of the flags including the ones used above. However, this is mainly for older Linux installs and why I really don&rsquo;t use it. These are all the flags that website recommends:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">noibrs noibpb nopti nospectre_v2 nospectre_v1 l1tf=off nospec_store_bypass_disable no_stf_barrier mds=off tsx=on tsx_async_abort=off mitigations=off +</span></span></code></pre></div><h2 id="is-this-really-needed">Is this really needed?</h2> +<p>While all this above isn&rsquo;t really needed, it is a really neat way to squeeze a bit performance out of your systems. It is ONLY recommended for those not sharing services and files through your network. It is also NOT recommended for those using Linux in a virtual machine as many of the mitigations are for VM protection. So use this RESPONSIBLY and don&rsquo;t just slap it on every Linux install.</p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/8XueTkMTNvc" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Star Trek Window Management + https://christitus.com/star-trek-os/ + Thu, 21 Jul 2022 12:07:52 -0500 + + https://christitus.com/star-trek-os/ + <p>The LCARS system from Star Trek is a staple in the geek world. Ever since it made its first appearence in the Next Generation TV series in the 90s people have been obsessed with recreating that system. Leave it to Linux to give a functional LCARS recreation for those Star Trek fans out there.</p> +<h2 id="the-lcars-desktop-environment">The LCARS Desktop Environment</h2> +<p>This was created and hosted on <a href="https://lcarsde.github.io/index.html">https://lcarsde.github.io/index.html</a>. The creator made 5 packages that you need to install before you can use it. The entire environment isn&rsquo;t all that practical unless you have a massive monitor because of all the screen real estate lost to the LCARS design. This isn&rsquo;t very up to date so I recommend using debian version 10 (buster) for maximum compatibility. Newer version of Debian have issues with the <code>python3-posix-ipc</code> dependancy.</p> +<p>Download base Debian 10 (buster) distro @ <a href="https://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/archive/10.12.0+nonfree/amd64/iso-cd/firmware-10.12.0-amd64-netinst.iso">https://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/archive/10.12.0+nonfree/amd64/iso-cd/firmware-10.12.0-amd64-netinst.iso</a></p> +<p>Install nothing but base system. No GUI components to keep it light.</p> +<h3 id="install-dependancies">Install Dependancies</h3> +<ul> +<li>Xorg</li> +<li>LightDM</li> +<li>Firefox (or other browser)</li> +</ul> +<p>Set Graphical install <code>sudo systemctl set-default graphical.target</code></p> +<p><em>Note: There are a ton of different python dependancies and you need to track these down to utilize the full desktop environment</em></p> +<h2 id="my-lcars-script">My LCARS script</h2> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">mkdir lcars-build +</span></span><span class="line"><span class="cl">cd lcars-build +</span></span><span class="line"><span class="cl">wget https://github.com/lcarsde/lcarswm/releases/download/22.1/lcarswm_22.1_amd64.deb +</span></span><span class="line"><span class="cl">wget https://github.com/lcarsde/menu/releases/download/22.1/lcarsde-app-menu_22.1_amd64.deb +</span></span><span class="line"><span class="cl">wget https://github.com/lcarsde/status-bar/releases/download/22.2/status-bar_22.2_amd64.deb +</span></span><span class="line"><span class="cl">wget https://github.com/lcarsde/application-starter/releases/download/21.1/lcarsde-application-starter_21.1_amd64.deb +</span></span><span class="line"><span class="cl">wget https://github.com/lcarsde/logout/releases/download/20.1/lcarsde-logout_20.1_amd64.deb +</span></span><span class="line"><span class="cl">sudo dpkg -i *.deb +</span></span><span class="line"><span class="cl">sudo apt -f install +</span></span></code></pre></div><h2 id="using-lcars">Using LCARS</h2> +<p>To use it after installation, you logout of your desktop and select LCARS instead of KDE,GNOME, or whatever your current system is. This is an extremely minimal install so you don&rsquo;t have to worry about it conflicting with your current install.</p> +<p>The complete manual is located @ <a href="https://lcarsde.github.io/manual.html">https://lcarsde.github.io/manual.html</a></p> +<h3 id="setting-up-intial-configuration">Setting up intial configuration</h3> +<p>Edit the file @ <code>~/.config/lcarde/status-config.xml</code> look for these lines and change them to your system:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">&lt;widget name=&#34;LcarsdeWifiStatus&#34;&gt; +</span></span><span class="line"><span class="cl"> 41 &lt;position x=&#34;4&#34; y=&#34;2&#34; width=&#34;1&#34; height=&#34;1&#34; /&gt; +</span></span><span class="line"><span class="cl"> 42 &lt;properties&gt; +</span></span><span class="line"><span class="cl"> 43 &lt;!-- Device should correspond to a folder in /sys/class/net that starts with &#34;w&#34; --&gt; +</span></span><span class="line"><span class="cl"> 44 &lt;property key=&#34;device&#34; **value=&#34;wlp2s0&#34;** /&gt; +</span></span><span class="line"><span class="cl"> 45 &lt;/properties&gt; +</span></span><span class="line"><span class="cl"> 46 &lt;/widget&gt; +</span></span><span class="line"><span class="cl"> 47 &lt;widget name=&#34;LcarsdeEthStatus&#34;&gt; +</span></span><span class="line"><span class="cl"> 48 &lt;position x=&#34;4&#34; y=&#34;1&#34; width=&#34;1&#34; height=&#34;1&#34; /&gt; +</span></span><span class="line"><span class="cl"> 49 &lt;properties&gt; +</span></span><span class="line"><span class="cl"> 50 &lt;!-- Device should correspond to a folder in /sys/class/net that starts with &#34;e&#34; --&gt; +</span></span><span class="line"><span class="cl"> 51 &lt;property key=&#34;device&#34; **value=&#34;enp0s20f0u2u3i5&#34;** /&gt; +</span></span><span class="line"><span class="cl"> 52 &lt;/properties&gt; +</span></span><span class="line"><span class="cl"> 53 &lt;/widget&gt; +</span></span></code></pre></div><p>Change the programs to what you use in <code>~/.config/lcarde/settings.xml</code> +Example:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">&lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&gt; +</span></span><span class="line"><span class="cl"> 2 &lt;lcarswm&gt; +</span></span><span class="line"><span class="cl"> 3 &lt;key-config&gt; +</span></span><span class="line"><span class="cl"> 4 &lt;!-- keys for executing programs --&gt; +</span></span><span class="line"><span class="cl"> 5 &lt;binding&gt; +</span></span><span class="line"><span class="cl"> 6 &lt;keys&gt;Lin+T&lt;/keys&gt; +</span></span><span class="line"><span class="cl"> 7 &lt;exec&gt;kitty&lt;/exec&gt; +</span></span><span class="line"><span class="cl"> 8 &lt;/binding&gt; +</span></span><span class="line"><span class="cl"> 9 &lt;binding&gt; +</span></span><span class="line"><span class="cl"> 10 &lt;keys&gt;Lin+B&lt;/keys&gt; +</span></span><span class="line"><span class="cl"> 11 &lt;exec&gt;brave-browser&lt;/exec&gt; +</span></span><span class="line"><span class="cl"> 12 &lt;/binding&gt; +</span></span></code></pre></div><h2 id="images">Images</h2> +<p>You can download my completed images if you don&rsquo;t want to build this yourself @ <a href="https://cttstore.com/star-trek-os">https://cttstore.com/star-trek-os</a></p> +<p>There is two image formats part of the download</p> +<ul> +<li>VMDK - Virtual Machine Format - VMWare, Virtualbox, and QEMU will all play this.</li> +<li>Clonezilla tar.gz - Image Backup - You can restore this to any machine using clonezilla after unzipping the files to a USB drive. Clone Any System walkthrough video @ <a href="https://youtu.be/yQ9NpWZ74BU">https://youtu.be/yQ9NpWZ74BU</a></li> +</ul> +<p>Login Information:</p> +<ul> +<li>User: Kirk</li> +<li>Pass: 1234</li> +<li>Hostname: Enterprise</li> +</ul> +<h2 id="walkthrough-video">Walkthrough Video</h2> +<p><em>Release Date: July 22, 2022</em></p> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/hbg-QgKOdac" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Stop Using APT + https://christitus.com/stop-using-apt/ + Tue, 19 Jul 2022 17:32:28 -0500 + + https://christitus.com/stop-using-apt/ + <p>APT is slow&hellip; single downloading and generally uses slow mirrors as it doesn&rsquo;t optimize them out of the box. It also doesn&rsquo;t have a history so rolling back updates can really suck.</p> +<p>Welp, all that is now fixed with <a href="https://gitlab.com/volian/nala">Nala</a> and it is absolutely wonderful. Not only does it fix all that listed above but it makes the updates look beautiful.</p> +<p><img src="https://christitus.com/images/2022/nala/nala.png" alt="nala-image"></p> +<h2 id="install">Install</h2> +<p>Add Repository - NOT NEEDED FOR Debian SID/testing</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">echo &#34;deb http://deb.volian.org/volian/ scar main&#34; | sudo tee /etc/apt/sources.list.d/volian-archive-scar-unstable.list; wget -qO - https://deb.volian.org/volian/scar.key | sudo tee /etc/apt/trusted.gpg.d/volian-archive-scar-unstable.gpg +</span></span></code></pre></div><p>Install Nala on any Debian Sid or Ubuntu 22+ with:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo apt update &amp;&amp; sudo apt install nala +</span></span></code></pre></div><p>Install on Debian Stable or Ubuntu 21 and below:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo apt update &amp;&amp; sudo apt install nala-legacy +</span></span></code></pre></div><h2 id="update-mirrors">Update Mirrors</h2> +<p>This will drastically speed up your downloads</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo nala fetch +</span></span></code></pre></div><p>Select the mirrors you want from the list. Typically you will want to select three. Here is an example: +<img src="https://christitus.com/images/2022/nala/mirror.png" alt="nala-mirror"></p> +<h2 id="view-update-history">View Update History</h2> +<p>Nala has a robust history and even an UNDO! These commands are a life saver.</p> +<p>View the history:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">nala history +</span></span></code></pre></div><p>Undo a history (<code>sudo nala history undo ID</code>):</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo nala history undo 1 +</span></span></code></pre></div><h2 id="convert-apt-to-nala">Convert APT to Nala</h2> +<p>Add the following to your <code>~/.bashrc</code> AND <code>/root/.bashrc</code> file:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">apt() { +</span></span><span class="line"><span class="cl"> command nala &#34;$@&#34; +</span></span><span class="line"><span class="cl">} +</span></span><span class="line"><span class="cl">sudo() { +</span></span><span class="line"><span class="cl"> if [ &#34;$1&#34; = &#34;apt&#34; ]; then +</span></span><span class="line"><span class="cl"> shift +</span></span><span class="line"><span class="cl"> command sudo nala &#34;$@&#34; +</span></span><span class="line"><span class="cl"> else +</span></span><span class="line"><span class="cl"> command sudo &#34;$@&#34; +</span></span><span class="line"><span class="cl"> fi +</span></span><span class="line"><span class="cl">} +</span></span></code></pre></div><p>From here you can install programs with apt or nala command and it will always work perfectly!</p> +<h2 id="conclusion">Conclusion</h2> +<p>This is everything I want in a package manager and more. My hat is off to the team that came up with all these drastic improvements and it has made my life so much easier on Debian based systems!</p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/oroSkR4Nn_w" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + You are NOT safe in Windows + https://christitus.com/not-safe-windows/ + Fri, 15 Jul 2022 13:14:39 -0500 + + https://christitus.com/not-safe-windows/ + <p>Thank you to all the Microsoft Windows users from all the Technicians that work on this operating system. Without your continued use, we wouldn&rsquo;t have jobs.</p> +<h2 id="why-is-windows-not-secure">Why is Windows NOT secure?</h2> +<p>Legacy systems and a fundamental flaw in system design. It is far to easy to get system level access through a variety of methods. Let&rsquo;s go over the systems that you can use to exploit a traditional Windows user, so you know what NOT to do.</p> +<h3 id="powershell">PowerShell</h3> +<p>Powershell is one of the most powerful tools in Windows, but it is at a cost. While it makes it incredibly easy to administrator and make modifications to massive amounts of systems quickly, it can be abused. Pretty much anything you want to do can be accomplished with Powershell. This is most evident in business systems where it is required to administer systems and even Office 365 in the cloud.</p> +<h3 id="task-scheduler">Task Scheduler</h3> +<p>So many processes end up running at a system level in Task scheduler and something the core system relied heavily on. This can not be disabled and is always one of the biggest Achilles heels for Windows. I am often disabling tasks to debloat systems such as auto-submission tools Microsoft uses like Telemetry and even Defender bug reports.</p> +<h3 id="visual-basic---vbs-scripts">Visual Basic - .vbs scripts</h3> +<p>VBS scripts often provide a level of scripting that isn&rsquo;t possible with many other methods. While this is good in business, it is very bad for the end user. I designed a vbs script to migrate on-premises outlook mailboxes to O365 mailboxes so a thousand users wouldn&rsquo;t have to redownload all their emails. However this can easily be abused for those malicious actors out there. Be cautious of this loophole and any vbs script that runs on your system.</p> +<h3 id="group-policy">Group Policy</h3> +<p>Again this is used in many pro+ systems and even if you aren&rsquo;t part of a domain can be abused by using <code>gpedit.msc</code> to create a local policy that can run scripts, lock user features, and much more. Home users typically don&rsquo;t have this functionally unless a hack is done.</p> +<p>If you want Group Polcy as a home user type the following in an elevated to Administrator prompt:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">dism /online /norestart /add-package:&#34;%SystemRoot%servicingPackages{{PackageFileName}}** +</span></span></code></pre></div><h3 id="registry">Registry</h3> +<p>So many things can be accomplished with the registry, such as auto login, and various hooks that can happen by just launching your web browser or windows explorer. Registry is basically the brain of windows and can be exploited easily to do pretty much anything.</p> +<h2 id="how-to-protect-yourself">How to protect yourself</h2> +<p>I highly recommend hardening your system with just basic tools that do NOT run in the background, but disable many of the tools above. These tools are wonderful in the right hands, but world ending the wrong ones.</p> +<p>A simple free hardening tool on Github will disable many of these attack surfaces and do FAR more than any antivirus or internet security suite can, while also not adding ANY overhead or extra processes to your system.</p> +<p>HardenTools to disable services: <a href="https://github.com/securitywithoutborders/hardentools">https://github.com/securitywithoutborders/hardentools</a></p> +<p><img src="https://christitus.com/images/2022/hardentools.png" alt="harden"></p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/Bh8HqxxI4pc" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Why I Hate Windows Defender + https://christitus.com/bad-windows-defender/ + Mon, 11 Jul 2022 11:36:33 -0500 + + https://christitus.com/bad-windows-defender/ + <p>Windows Defender is often seen as a good antivirus, but I want to inform you of a cost noone sees but developers because of Defender.</p> +<h2 id="is-windows-defender-good">Is Windows Defender Good?</h2> +<p>Yes. It does detect a ton of viruses and have good detection rates as long as you are online, since it relies heavily on its online connection. However, there is a dark side to having Microsoft control this entire part of your PC that we need to go over. The false positives are excessive and I believe it is by design.</p> +<h2 id="the-mafia-for-software-developers">The Mafia for Software Developers</h2> +<p><img src="https://christitus.com/images/2022-thumbs/bad-windows-defender.jpg" alt="bad-defender"></p> +<p>Smartscreen is powered by Windows Defender and you have to buy a $300 A YEAR code signing license with Extended Validation to bypass it. The EV cert is close to the mafia extorting business users for &ldquo;protection&rdquo;. If you don&rsquo;t use Defender, you don&rsquo;t need to worry about smartscreen. Using standard code signing with an external anti-virus will work close to the same as Defender is disabled when you use a 3rd party av.</p> +<h3 id="code-signing-cost">Code Signing Cost</h3> +<p><em>Cost for 1 year - prices as of 7/11/2022</em></p> + + + +<table + + class='table ' + + + title='' + aria-label='' +> + <thead> + <tr> + <th + title='Site' + aria-label='Site' + data-th_x='0' + data-id='0' + >Site</th> + <th + title='Extended Validation' + aria-label='Extended Validation' + data-th_x='1' + data-id='1' + >Extended Validation</th> + <th + title='Regular Validation' + aria-label='Regular Validation' + data-th_x='2' + data-id='2' + >Regular Validation</th></tr> + </thead><tbody> + + <tr + + data-tr_y='0' + ><td + + title='Site' + aria-label='Site' + + + + data-td_x='0' + >Comodo</td><td + + title='Extended Validation' + aria-label='Extended Validation' + + + + data-td_x='1' + >$319</td><td + + title='Regular Validation' + aria-label='Regular Validation' + + + + data-td_x='2' + >$85</td></tr> + <tr + + data-tr_y='1' + ><td + + title='Site' + aria-label='Site' + + + + data-td_x='0' + >Instant SSL</td><td + + title='Extended Validation' + aria-label='Extended Validation' + + + + data-td_x='1' + >$299</td><td + + title='Regular Validation' + aria-label='Regular Validation' + + + + data-td_x='2' + >$166</td></tr> + <tr + + data-tr_y='2' + ><td + + title='Site' + aria-label='Site' + + + + data-td_x='0' + >Sectigo</td><td + + title='Extended Validation' + aria-label='Extended Validation' + + + + data-td_x='1' + >$399</td><td + + title='Regular Validation' + aria-label='Regular Validation' + + + + data-td_x='2' + >$179</td></tr> + <tr + + data-tr_y='3' + ><td + + title='Site' + aria-label='Site' + + + + data-td_x='0' + >DigiCert</td><td + + title='Extended Validation' + aria-label='Extended Validation' + + + + data-td_x='1' + >$566</td><td + + title='Regular Validation' + aria-label='Regular Validation' + + + + data-td_x='2' + >$404</td></tr></tbody></table> + +<p>The big question is &ldquo;Why does extended validation cost so much more?&rdquo; and it is simply gatekeeping at its best. Many SSL companies will tell you it is because the &ldquo;vetting process is harder&rdquo;, but I smell bullshit on that. It costs usually double and sometimes more. The only difference is it requires a hardware cryptographic key and Microsoft smartscreen immediately gives it a pass on all scans.</p> + + + +<table + + class='table ' + + + title='' + aria-label='' +> + <thead> + <tr> + <th + title='Extended Validation' + aria-label='Extended Validation' + data-th_x='0' + data-id='0' + >Extended Validation</th> + <th + title='Regular Validation' + aria-label='Regular Validation' + data-th_x='1' + data-id='1' + >Regular Validation</th></tr> + </thead><tbody> + + <tr + + data-tr_y='0' + ><td + + title='Extended Validation' + aria-label='Extended Validation' + + + + data-td_x='0' + >Hardware Key</td><td + + title='Regular Validation' + aria-label='Regular Validation' + + + + data-td_x='1' + >Software Key</td></tr> + <tr + + data-tr_y='1' + ><td + + title='Extended Validation' + aria-label='Extended Validation' + + + + data-td_x='0' + >Smartscreen Bypassed</td><td + + title='Regular Validation' + aria-label='Regular Validation' + + + + data-td_x='1' + >Smartscreen Error</td></tr></tbody></table> + +<p>I can&rsquo;t find anything in regards to who is really profiting the most of the Extended Validation code signing and if Microsoft is getting a cut since it is basically the only reason to have one. However, the entire situation is a bit suspect and any development person I know loath the process that Extended Validation is.</p> +<h2 id="free-anti-virus-alternatives">Free Anti-Virus Alternatives</h2> +<p>Is there something better than windows defender that is free? I&rsquo;d say <a href="https://www.bitdefender.com/solutions/free.html">BitDefender Free</a> offers superior protection.</p> +<p>This is a drastic shift in recommendation for me, because I used to say &ldquo;All Free AV is worthless&rdquo;, but now I see this from a different angle. Don&rsquo;t get me wrong most FREE antivirus is glorified advertising for a paid product that essentially does the same thing. After looking at all the free offerings, I&rsquo;d say BitDefender Free is better than using Defender.</p> +<h2 id="paid-anti-virus">Paid Anti-Virus</h2> +<p>For those that want good detection rates, better privacy, and low overhead. The antivirus I have recommend has stayed the same for years. I recommend <a href="https://christitus.com/antivirus">ESET</a> for this because it is a proven antivirus that isn&rsquo;t as intrusive as the others.</p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/9P6r7DLS77Q" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Choosing the Right Linux Distro + https://christitus.com/choose-linux-distro/ + Tue, 28 Jun 2022 17:12:25 -0500 + + https://christitus.com/choose-linux-distro/ + <p>Choosing a Linux distribution can be difficult, especially if you don&rsquo;t know much about Linux. However, over the past several years I&rsquo;ve tried almost every Distribution that you can choose. There are some that I have not installed, because it was just more of the same.</p> +<p><img src="https://christitus.com/images/2022/choose-linux-distribution/distros.png" alt="distros"></p> +<p>To start with there is a misconception that there is thousands of choices in Linux Distributions. While technically true, there is really only 3 distributions you need to know about for desktop use, but before we get into that you need to know about what makes up a distribution. This is mandatory to understand why there is so many different ones that splinter off of these three.</p> +<h2 id="what-is-in-a-distribution">What is in a Distribution</h2> +<p>Windows and Mac are called Operating Systems, NOT distributions&hellip; but in Linux this isn&rsquo;t the case. Why? That is because each Linux offering has different options at its core. With Windows and Mac you always get the same bootloader, file manager, etc. and in Linux these can differ drastically from one to the next. So this is what makes up the Linux distribution.</p> +<h3 id="bootloader">Bootloader</h3> +<p>This can is usually either GRUB or systemd-boot. This may not mean much to you, but i&rsquo;ll explain the difference. GRUB has been around for ages and can be themed while having a ton of flexibility. It supports UEFI and Legacy, while systemd-boot is pretty much included with every modern linux distribution and only boots via UEFI and has a limited menu system. I highly encourage you that want a themed multi-boot system to check out my Top 5 Bootloader project that auto-installs multiple themes: <a href="https://christitus.com/bootloader-themes/">https://christitus.com/bootloader-themes/</a></p> +<h3 id="init-system">Init System</h3> +<p>When your system is initializing on startup it needs to verify all the devices it will use and get the system ready for boot. Almost every Linux system these days use systemd. Systemd is very big and inclusive, but to many is bloated. It does much more than just initializing the system. It has Timers, bootloader, services, and much more. I did a YouTube video explaining everything in systemd if you want to learn more. <a href="https://youtu.be/hc7J-zWEty8">https://youtu.be/hc7J-zWEty8</a> +There is other options out there for Linux and certain fringe distributions that use them, but if you want other options check out init.d and precursors to systemd. They are much faster and if looking at building an ultimate minimal system this is the route to take.</p> +<h3 id="display-render">Display Render</h3> +<p>To draw graphics on the screen we need a render. There are only two major ones you need to know about. Wayland and Xorg. Wayland is the new kid that should be faster and better, but is lacking features and compatibility. Xorg is the old, wise man that just works, but is starting to show its age. To me, I always choose Xorg because Wayland always runs into problems. Xorg has two features that Wayland is lacking for me right now. It has X11 forwarding for running GUI programs remotely through an SSH connection and using legacy programs for sharing a keyboard/mouse across screens using synergy/barrier. I did a video on this here: <a href="https://youtu.be/Fci_ALdEzGc">https://youtu.be/Fci_ALdEzGc</a>. To many it simply doesn&rsquo;t matter, because they both fundamentally do the same thing.</p> +<h3 id="display-manager">Display Manager</h3> +<p>This really should be called a Login Manager or user selector, but in Linux the entire ecosystem is run by extremely smart technical people, that just so happen to be terrible at marketing. So the &ldquo;Display Manager&rdquo; comes in many flavors and this is where we start to run into many personal options in Distributions. Personally, I really don&rsquo;t care about this, but there are three main ones that are used and can be configured differently:</p> +<ul> +<li>lightdm</li> +<li>sddm</li> +<li>gdm +While there are others, these three pretty much are always chosen for a distribution. SDDM is generally bundled with KDE systems (which we will get into here in a bit), GDM is for GNOME systems, and lightdm (my personal fav) is pretty much a catch all.</li> +</ul> +<h3 id="desktop-environments">Desktop Environments</h3> +<p>Think of Desktop Environments as the tools that make up the control center in an Operating System. Want to change the display resolution, theme, colors, fonts, etc. well all that stuff is in the desktop environment. Now you don&rsquo;t technically need a full blow DE with all this stuff. The main thing you do need is a Window Manager to control where windows are placed. With all that said lets layout the common DEs:</p> +<ul> +<li>GNOME</li> +<li>KDE</li> +<li>XFCE</li> +<li>Window Managers</li> +<li>and many, many, more. +This could be a 100 page manual with all the options, but I want to give you the basics. GNOME gives more of a mac-esque style and KDE gives that windows look and feed. XFCE is more bare-bones with the essential tools and not much else. Where a basic &ldquo;window manager&rdquo; is just the window manager without any utilities. You might think&hellip; &ldquo;How the hell do you change the resolution? or font? with a window manger&hellip;&rdquo; This is accomplished either by hard coding it in to the configuration files or by installing an independent utility.</li> +</ul> +<h3 id="package-managers">Package Managers</h3> +<p>This is how distributions install programs. Here are the major ones you need to know about.</p> +<ul> +<li>APT - Debian distros <code>apt install programname</code></li> +<li>DNF / YUM - RHEL distros <code>dnf install programname</code></li> +<li>Pacman - Arch distros <code>pacman -S programname</code></li> +</ul> +<h2 id="distributions">Distributions</h2> +<p>So now that you know what they are made up of we can easily get to deciding what you really want your computing experience to be like. Figure out what components above you like and do NOT like. Then swap them out for something better. The main gripe I have with Windows and Mac is I find their file manager absolutely terrible. I want to switch them and rip out the junk they give me, but we can&rsquo;t as they are integral to the function of the operating system. In Linux, we get that freedom. Here are the three &ldquo;distributions&rdquo; that pretty much everything is based on and what the base package installs are. Remember you can change the things you do NOT like from the stock settings.</p> +<h3 id="debian-linux">Debian Linux</h3> +<p><img src="https://christitus.com/images/2022/choose-linux-distribution/debian.png" alt="debian"></p> +<p>Debian uses a stable release cycle and generally has older packages, but they don&rsquo;t usually have many bugs and are very reliable. This is typically my go to for desktops I don&rsquo;t change much.</p> +<ul> +<li>Bootloader - GRUB</li> +<li>Init System - systemd</li> +<li>Display Render - Xorg</li> +<li>Display Manager - SDDM/GDM</li> +<li>Desktop Environment - KDE/GNOME</li> +<li>Package Manager - APT</li> +</ul> +<h3 id="arch-linux">Arch Linux</h3> +<p><img src="https://christitus.com/images/2022/choose-linux-distribution/arch.png" alt="arch"></p> +<p>Very new packages with a massive user repository to grab programs you might be missing and builds them for you. The main issue is if you forget to update your system for a period of months it is prone to breaking. Backups are MANDATORY if you use this for your daily use. The benefits are you get the latest and greatest and is often thought to be the best for drivers and hardware that is just released. Its unique that you get to choose every component and can utilize pretty much any COMBINATION of components listed above. The only constant is its package manager which is PACMAN. The other unique aspect is it has a helper program that can install things through the AUR (Arch User Repository) and boy does it have options here&hellip; I&rsquo;m going to recommend the top three</p> +<ul> +<li>paru</li> +<li>yay</li> +<li>trizen +They follow the same syntax as pacman except you run them at a user level and they can install pretty much any package. For a complete list visit: <a href="https://aur.archlinux.org/">https://aur.archlinux.org/</a></li> +</ul> +<h3 id="fedora-linux">Fedora Linux</h3> +<p><img src="https://christitus.com/images/2022/choose-linux-distribution/fedora.png" alt="fedora"></p> +<p>This is a RHEL (Red Hat Enterprise Linux) based distribution. It strikes a balance between newer packages and Linux kernels between Debian and Arch. Its not as new as Arch, but not as old as Debian. It has different SPINS but its main download uses the following:</p> +<ul> +<li>Bootloader - Systemd</li> +<li>Init System - systemd</li> +<li>Display Render - Wayland</li> +<li>Desktop Environment - GNOME</li> +<li>Package Manager - DNF</li> +</ul> +<h2 id="conclusion">Conclusion</h2> +<p>So the best distribution is the one that suits your needs and preferences. Instead of the one size fits all approach of Mac and Windows, Linux takes a completely different approach. Learn the above and try out the different options and you will make the perfect system for your needs. You will also understand why all the top 5 distros and other Linux garbage on the internet is worthless. That is because there is no perfect distro, however there is the perfect distro for YOU! It just so happens that it is different for each user and you have the options that no other system on earth give you with Linux.</p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/dL05DoJ0qsQ" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Ubuntu's Decline + https://christitus.com/ubuntu-decline/ + Mon, 27 Jun 2022 15:52:45 -0500 + + https://christitus.com/ubuntu-decline/ + <p>When Ubuntu came on the scene in 2004, it made desktop Linux viable to many with its ease of use and friendly layout. Instead of constantly improving this and becoming the &ldquo;King of All Distributions&rdquo; it took a very different path. While I still use Ubuntu server with some caveats, I will NOT use Ubuntu Desktop.</p> +<p><img src="https://christitus.com/images/2022/ubuntu-decline/ubuntu.png" alt="ubuntu"></p> +<h2 id="what-ubuntu-does-right">What Ubuntu does right</h2> +<p>Before we roast Ubuntu and its decline, we need to understand why they rose to the top. Not only did they make Linux desktop easy, but they did the same in the server realm as well. They also made highly successful and well designed products for Linux, like the Unity Desktop Environment. They were one of the first to also make it easy for us to use nVidia cards on our systems without much fuss.</p> +<h2 id="the-things-that-lead-to-the-decline">The things that lead to the decline</h2> +<p>This is not going to be an exhaustive list, but rather the large things they have done to ensure their downfall and what has caused many to leave Ubuntu to never return.</p> +<h3 id="snaps">Snaps</h3> +<p><img src="https://christitus.com/images/2022/ubuntu-decline/snaps.png" alt="snaps"></p> +<p>By far the biggest issue with Ubuntu is Snaps. They created a universal package manager that can work on any system. Sounds amazing, right? WRONG! The two biggest issues are simple: Its slow as hell and closed source.</p> +<p>How is it slow? Well, it can take upwards of 10-15 seconds to launch Firefox snap, which is a web browser that would normally take MAYBE 1-2 seconds. What the hell Canonical!?! It&rsquo;s obviously not ready, so why are forcing everyone to use snaps? Do they just not like users? Do they think their users are just too stupid to know its this slow?</p> +<p>Closed Source. This can be summed up to there is only one place to download packages, Canonical. Want to open up a Snap store for a competing distribution? Too bad, its closed source. Is this the worst thing about it? No, but why bother with it when there are better solutions like AppImage and Flatpak which ARE open source?</p> +<h3 id="spyware">Spyware</h3> +<p>Back in Ubuntu 14 they were submitting search results to Canonical. Then in Ubuntu 16 they introduced a bundled amazon store which they were compensated for. Too many this was just simply spyware on their distribution. A blatant cash grab if you will&hellip; However, to me it screams of desperation. They want or need money and this was the easiest way to accomplish this. Apple and Microsoft does this&hellip; why not Canonical? The answer is surprisingly simple, many users ran from big tech for privacy and why choose Ubuntu when their are so many better distributions.</p> +<h3 id="lack-of-commitment">Lack of commitment</h3> +<p>The last reason many users have given up on Ubuntu is it just feels like Canonical is padding their balance sheet for an eventual buyout from some biggest tech firm. The days of innovation are over and they have killed so many projects that no one trusts them anymore. It has been eroded away by not listening to the community, doing things not in the best interest of their users, and abandoning many, many projects. Here is the short list:</p> +<ul> +<li>Ubuntu Touch</li> +<li>Unity Desktop Environment</li> +<li>Mir Display Manager</li> +<li>Ubuntu One (Cloud services)</li> +<li>PPA Repos - .DEB Packages being phased out from Software Centre</li> +</ul> +<h2 id="the-future">The Future</h2> +<p>The future of Ubuntu Desktop is pretty bleak. It feels like we are watching it circle the toilet bowl to be forever gone in a few years. I want to give two outcomes&hellip;</p> +<p>It continues down this path, forcing everyone to use snaps and fades to irrelevance until the entire desktop offering is discontinued.</p> +<p>It cuts it losses with snaps and starts streamlining their distro. Gone are the days of slow boot times and bloated distribution installs. It reverts to what it began as&hellip; a user friendly and easy to user distribution that just works.</p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/pMfqCzbSmQU" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Is Antivirus Worthless? + https://christitus.com/antivirus-worthless/ + Wed, 22 Jun 2022 16:44:33 -0500 + + https://christitus.com/antivirus-worthless/ + <p>To many advanced users, Antivirus IS worthless. That is because it uses system resources and provides more annoyances than benefits. However, for many users it is required as they will not know what is a virus or not.</p> +<h2 id="how-to-scan">How to Scan</h2> +<p>The biggest issue with antivirus is some show false positives and others show nothing when it is a virus. So what is the best way to scan?</p> +<p><a href="https://virustotal.com">https://virustotal.com</a> is my recommendation. It will help you determine if that exe or zip file you just downloaded from a shady source is infected. This will do a far better job than an individual antivirus scans, since virustotal is an aggregate and uses antivirus engines for EVERY major antivirus.</p> +<h2 id="what-not-to-do">What not to do</h2> +<p>Downloading free antivirus is terrible and typically you will be giving away your privacy as they will be submitting the URLs you visit in many free packages, like Kasperky Cloud Free. Avast and AVG on the other hand you will be inidated with popups and upsells to a bloated internet security suite that does nothing but slow your computer down. I&rsquo;ve also seen people install multiple AntiVirus programs, which just slows down a PC considerably while providing little to no extra protection.</p> +<p>So Never do any of these things!</p> +<ul> +<li>Download FREE AntiVirus</li> +<li>Install, Buy, or Download ANY Internet Security Suite</li> +<li>Installing multiple AntiVirus programs</li> +</ul> +<h2 id="false-positives">False Positives</h2> +<p>I&rsquo;ve been giving out an exe file for my Debloat Utility to anyone that pays $5 on cttstore.com to help fund its future development. However, since it is a free and open source project that is a PowerShell script that gets converted to EXE it has caused MANY false positives. The reason is many Antivirus companies are lazy and block EVERY powershell script that is converted to EXE. Microsoft, AVG, Avast, etc. which you can see below.</p> +<p>PowerShell to EXE Disclaimer +<img src="https://christitus.com/images/2022/antivirus-worthless/virus-ps1-exe.png" alt="ps1toexe"></p> +<p>VirusTotal Result from PowerShell Script to EXE +<img src="https://christitus.com/images/2022/antivirus-worthless/script-virus.png" alt="script-virustotal"></p> +<p>Obviously with false positives there are times where AntiVirus programs completely miss viruses. How does this happen and how I changed the exe to bypass antivirus programs. There are two methods I&rsquo;ve used to reduce or even completely remove antivirus scans.</p> +<h3 id="code-signed-exes-have-less-false-positives">Code Signed EXEs have less false positives</h3> +<p>Code Signing is the practice of using cryptographic keys to sign EXE files like below. +<img src="https://christitus.com/images/2022/antivirus-worthless/signed-file.png" alt="signed-file"></p> +<p>Good antivirus programs will NOT flag my EXE when I used a code signing key. However, if I don&rsquo;t sign the EXE it will flag it as a virus. So, why doesn&rsquo;t everyone use a code signing key? It&rsquo;s expensive. Roughly it is $100 a year for the &ldquo;basic&rdquo; code signing and to bypass Microsoft SmartScreen for &ldquo;enhanced&rdquo; code signing it will set you back almost $275 a year. Feels kinda like extortion, but I can appreciate that I now have a digital signature for my exe so folks know it came from me.</p> +<p>Let&rsquo;s move on to the easiest way to obscure your exe to bypass Antivirus.</p> +<h3 id="encrypted-files-can-not-be-scanned-for-viruses">Encrypted Files can not be scanned for viruses</h3> +<p>Simply created an encrypted file will bypass any scans. I find the easiest way to do this is using 7-zip with SHA256 encryptioon and a password. This is how I distribute my EXE now so I don&rsquo;t have to worry about antiviruses. So, be EXTREMELY CAREFUL when opening files with passwords, as your antivirus can not scan it. If you do not trust the source you downloaded it&hellip; DO NOT OPEN IT!</p> +<p>Here is an example of a encrypted file: +<img src="https://christitus.com/images/2022/antivirus-worthless/encrypted-file.png" alt="encrypted-file"></p> +<h2 id="recommended-antivirus">Recommended AntiVirus</h2> +<p>If you don&rsquo;t want to spend any money then simply use Microsoft&rsquo;s Defender. Its decent with it&rsquo;s cloud protection and is already baked into Windows. Its detection rates are passable and has a small system impact.</p> +<p>The biggest factors to look at when considering antivirus is System Impact and History/Detection Rates.</p> +<p>ESET NOD32 Antivirus is the best I&rsquo;ve found. They were one of the original antivirus programs with NOD32&rsquo;s creation in 1987 and ESET being founded by the developers of NOD32 in 1992. The basic antivirus is fast has very little passive performance loss and fantastic detection rates. I recommend just doing the basic <a href="https://www.jdoqocy.com/click-100287975-15083621">NOD32 Antivirus</a></p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/UXT17bQ2W2Q" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Future Internet + https://christitus.com/future-internet/ + Sat, 11 Jun 2022 15:07:10 -0500 + + https://christitus.com/future-internet/ + <p>Renewing website domains, paying for web hosting, and having them expire are all going to be a thing of the past. +Using IPFS (Inter-planetary File System) is a way to store websites decentralized and without any money. How fast or how slow it will be, is determined by how popular it is with IPFS nodes. +This guide shows how to host a website, owning a web domain forever, and redirecting these domains to traditional website hosts.</p> +<h2 id="ipfs---a-better-storage-system">IPFS - A Better Storage System</h2> +<p>IPFS is absolutely amazing as you can run a node on anything and share your files. If they are used by other people then they will populate to their nodes and I&rsquo;ve shared and used video files over 1 GB in size! The main issue is there isn&rsquo;t many browsers that support IPFS and it is slower than normal storage right now. However, you never have to worry about hosting costs and as long as the content is accessed by others on a regular basis it will live forever!</p> +<h3 id="improving-ipfs-in-brave-browser">Improving IPFS in Brave Browser</h3> +<p>I highly recommend using IPFS Companion if you plan on doing this regularly. You don&rsquo;t have to run your own node, but can that is up to you. Using this add-on will help resolve IPFS addresses much faster even in Gateway only mode.</p> +<p>Enable IPFS Companion Extension</p> +<ul> +<li><a href="https://docs.ipfs.io/install/ipfs-companion/">https://docs.ipfs.io/install/ipfs-companion/</a></li> +</ul> +<p>After installing IPFS Companion change the following brave settings under Settings -&gt; IPFS</p> +<ul> +<li>Enable IPFS Public Gateway Fallback (Not Required, but recommended)</li> +<li>Enable IPFS Companion +<img src="https://christitus.com/images/2022/future-internet/ipfs-settings.png" alt="ipfs-settings"></li> +</ul> +<p>Enable Blockchain domains - The Unstoppable Domains extension (In the future, this should be baked into many browsers. Brave natively supports .crypto)</p> +<ul> +<li><a href="https://unstoppabledomains.com/extension">https://unstoppabledomains.com/extension</a></li> +</ul> +<h2 id="blockchains---not-all-created-equal">Blockchains - Not all created equal</h2> +<p>The technology powering blockchains are amazing, but most just care about the monetary gain. I&rsquo;m more interested in actually using the blockchain and where all the meta data lives for decentralized web or Web3. So what blockchains have I used for this? Lets review:</p> +<ul> +<li>Ethereum was one of the original ones that is incredible slow and expensive. I feel like this has turned from a usable blockchain into something only millionaires can use. Maybe this will change in the future, but right now it isn&rsquo;t usable because of the cost to submit transactions. ENS Domains uses ethereum.</li> +<li>Polygon is a bridge blockchain that drastically improves upon what ethereum started. Fees are non-existent and is very functional. Transfer times are generally about a minute. This is currently what unstoppable domains uses.</li> +<li>Solana is not something I recommend, but is considered the fastest blockchain out there. However, It has crashed multiple times and halted completely. I am also skeptical that is even decentralized with the problems it has had. It is very easy to work on and something to watch.</li> +<li>Cardano is probably my favorite out of all these blockchains for the future. It is very decentralized, transactions can be as fast as 20 seconds and up to a couple minutes. Its roadmap is probably the most promising blockchain with future transactions hitting upwards of 10,000+ transactions per second in a decentralized format. Another possible chain that can be used in the future.</li> +</ul> +<h2 id="buying-websites-forever">Buying Websites Forever</h2> +<p>Currently ens domains requires renewing websites, while unstoppable domains provides them forever. This entire space is exploding, so getting a good name is becoming more and more difficult just like the traditional web. There is a very healthy resale market on Opensea.io that folks are using to squat or resell domains purchased through unstoppable domains. If adoption keeps moving this direction, we will soon see some pretty ridiculous prices on domain names. Buying direct from unstoppable domains ranges from $10 to $100 per domain name, depending on domain ending. +<img src="https://christitus.com/images/2022/future-internet/domains.png" alt="domains"></p> +<p>Here is discount link for unstoppable if you are interested in picking up a domain: <a href="https://unstoppabledomains.pxf.io/MX3zVM">https://unstoppabledomains.pxf.io/MX3zVM</a></p> +<h2 id="uploading-static-sites">Uploading Static Sites</h2> +<p>Hosting your website through unstoppable domains is pretty easy, but just know you are limited on size if using their uploader. They have a 20 MB Limit!</p> +<p>So for large static sites, simply put them all on a IPFS node local or remote and copy the IPFS hash into unstoppable domains to host ANY size of website.</p> +<p>I personally build my entire static site using hugo because its free / open source. You can then simply upload to IPFS the entire /public folder once you do this. If you are going to go this route, I&rsquo;d recommend hosting an IPFS node so you can avoid the upload process entirely!</p> +<h2 id="redirect-to-traditional-website">Redirect to Traditional Website</h2> +<p>The simplist way to do this is with a meta redirect using a standard index.html (PLAIN TEXT ONLY!)</p> +<p>index.html</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">&lt;!DOCTYPE html&gt; +</span></span><span class="line"><span class="cl">&lt;html&gt; +</span></span><span class="line"><span class="cl"> &lt;head&gt; +</span></span><span class="line"><span class="cl"> &lt;title&gt;HTML Meta Tag&lt;/title&gt; +</span></span><span class="line"><span class="cl"> &lt;meta http-equiv = &#34;refresh&#34; content = &#34;1; url = YOUR WEBSITE URL HERE&#34; /&gt; +</span></span><span class="line"><span class="cl"> &lt;/head&gt; +</span></span><span class="line"><span class="cl"> &lt;body&gt; +</span></span><span class="line"><span class="cl"> &lt;p&gt;YOUR WEBSITE DESCRIPTION HERE &lt;/p&gt; +</span></span><span class="line"><span class="cl"> &lt;/body&gt; +</span></span><span class="line"><span class="cl">&lt;/html&gt; +</span></span></code></pre></div><h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/GERBV2Bv-A4" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + The Ultimate Windows Utility + https://christitus.com/windows-tool/ + Fri, 13 May 2022 13:07:19 -0500 + + https://christitus.com/windows-tool/ + <p>This is a tool that has evolved over several years and achieves much more than just debloating a Windows install. I have expanded it to install the programs you select, which is a bigger selection than ninite. The classic debloat is there, but also includes a tweaks section with quality of life features. To round out everything, I have included my recommended settings for Windows update that I use in a variety of businesses. Misuse of this utility can break your install so please be careful and I do not provide any help or assistance should this happen!</p> +<h2 id="one-command---download-and-usage">One Command - Download and Usage</h2> +<p>From an Elevated (Run as Administrator) PowerShell prompt</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">iwr -useb https://christitus.com/win | iex +</span></span></code></pre></div><h2 id="parts-of-utility">Parts of Utility</h2> +<p>There are four main parts of this utility but I can expand this to an infinite number of tabs if expansion is needed and will probably happen in the future. As of the writing of this article there is 4 main parts: install, debloat, features and old panels, and windows updates. Let me breakdown what each part does and what you should use.</p> +<h3 id="install">Install</h3> +<p><img src="https://christitus.com/images/2022/winutil/screen-install.png" alt="install"></p> +<p>The install is basically a better version of ninite that many people use. It leverages Microsoft&rsquo;s winget utility to not only install tons of software that you select with a check-mark, but also gives you the ability to upgrade all the software quickly. By using this utility you will save hours on the install, but also make it very easy to keep all your programs up to date.</p> +<h3 id="debloat">Debloat</h3> +<p><img src="https://christitus.com/images/2022/winutil/screen-debloat.png" alt="debloat"></p> +<p>Debloating windows is always a moving target and there are many utilities out there. Many of them are too heavy handed in my opinion. This takes a more minimal approach that should not damage your Windows install. At the top there are three buttons Desktop, Laptop, and Minimal. These are curated selections based on my recommendations</p> +<p><strong>Desktop</strong> - This is for Desktops <em>DUH</em>, but it will disable features like power throttling and many services will be set to not auto start. This will give your desktop the best performance without any downside.</p> +<p><strong>Laptop</strong> - This one is just like desktop but doesn&rsquo;t mess with power settings as we don&rsquo;t want to kill our laptops battery.</p> +<p><strong>Minimal</strong> - This one will just do the absolute basic privacy / security settings. Very minor optimizations will also be made.</p> +<p>I must warn you to NOT use all the settings at once, or simple remove everything from the MS Store. Many times this will debloat the install but will BREAK the MS Store or uninstall any games / apps that were installed using it. This is why this option is never selected, but I left it there for those that really want to remove it. I personally do NOT recommend this, but I understand those that want to remove it</p> +<p>Note: This part of the utility can break an install if used carelessly, but it does make a restore point so if you have a lot problems with it, you can use System Restore to rollback the changes or the Undo All option. THIS IS SOFTWARE IS PROVIDE WITHOUT ANY WARRANTY AND I AM NOT RESPONSIBLE FOR ANY MISUSE.</p> +<h3 id="features-and-legacy-win-panels">Features and Legacy Win Panels</h3> +<p><img src="https://christitus.com/images/2022/winutil/screen-features.png" alt="features"></p> +<p>This tab makes it easier to enable built-in features that are off by default. Many new installs need these and I wanted to make it easier than going through and manually installing them one by one.</p> +<p>There is also the old school legacy panels that I use on a daily basis. I still find these to be more efficient than the new panels that Microsoft has put in Windows 10 and 11.</p> +<h3 id="windows-updates">Windows Updates</h3> +<p><img src="https://christitus.com/images/2022/winutil/screen-updates.png" alt="updates"></p> +<p>Windows updates set to defaults are crazy. They install and download at weird times and often update far too much. I give 2 options my recommended one that only installs security updates and allowing features updates after they have been proven over 1 year.</p> +<p>However, there is a disable all button. I do NOT recommend doing this, but is there for people that have specific software that they don&rsquo;t update and don&rsquo;t want their windows install changing at all. This is NOT secure, but often more stable and why you&rsquo;d want to do something like this.</p> +<h2 id="walkthrough-video">Walkthrough Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/tPRv-ATUBe4" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Easily moving Linux installs + https://christitus.com/chezmoi/ + Mon, 25 Apr 2022 17:04:25 -0500 + + https://christitus.com/chezmoi/ + <p>Are you tired of having to reset all your app settings on a new install? Using a simple tool you will never have to reconfig your app settings again. Also adding new apps and programs are extremely simple and intuitive. Stop wasting your time and start using Chezmoi to restore your app settings. This isn&rsquo;t meant to be a system backup but a settings backup.</p> +<h2 id="why-chezmoi">Why Chezmoi</h2> +<p>Chezmoi offers the most simplistic approach and versioning that is simply is my preferred solution over the other dot file tools below. Here is a brief diagram of how it works. <em>Note: I do not use git from command line in my tutorial for commits and pushes</em></p> +<p><img src="https://christitus.com/images/2022/chezmoi/diagram.png" alt="diagram.png"></p> +<h2 id="notes-about-other-dot-file-tools">Notes about other dot file tools</h2> +<ul> +<li><strong>GNU/Stow</strong> is a very popular one, but I don&rsquo;t like using it because of its reliance on Symlinks</li> +<li><strong>Bare GIT repos</strong> are also another way of doing this, but managing the files can be cumbersome</li> +<li><strong>Git / Ansible playbooks</strong> a great way to deploy new systems, but can be complex to maintain and keep up to date.</li> +<li><strong>Home Directory Backups</strong> many times end up backing up too much and overly bloat a new system or add in unwanted settings</li> +</ul> +<h2 id="installation">Installation</h2> +<p>First we install Chezmoi to the /bin folder. I recommend system wide below but you can also do the install to <code>~/.local/bin</code> if you only want to install for current user</p> +<p>System-wide install <code>/bin</code> <em>Recommended</em></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">su +</span></span><span class="line"><span class="cl">cd / +</span></span><span class="line"><span class="cl">sh -c &#34;$(curl -fsLS chezmoi.io/get)&#34; +</span></span><span class="line"><span class="cl">exit +</span></span></code></pre></div><p>User install <code>~/.local/bin</code></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">cd ~/.local +</span></span><span class="line"><span class="cl">sh -c &#34;$(curl -fsLS chezmoi.io/get)&#34; +</span></span></code></pre></div><p><em>Note: Most systems have ~/.local/bin, however a few do not</em></p> +<h2 id="setting-up-config-repository">Setting up config repository</h2> +<p>First Setup a new repository for your config files on GitHub</p> +<p><img src="https://christitus.com/images/2022/chezmoi/new-repo.png" alt="new-repo.png"></p> +<p>I called mine &ldquo;dotfiles&rdquo; <a href="https://github.com/ChrisTitusTech/dotfiles">https://github.com/ChrisTitusTech/dotfiles</a></p> +<p>We now simply initialize chezmoi with that new GitHub repository</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">chezmoi init https://github.com/ChrisTitusTech/dotfiles +</span></span></code></pre></div><h2 id="adding-files-and-applying-changes">Adding files and Applying changes</h2> +<p>chezmoi uses a git based aliases to add files and merge them. To add something to your dotconfigs you&rsquo;d simply do this command as an example: <code>chezmoi add .bashrc</code></p> +<p>This copies the file to the working directory ~/.local/share/chezmoi and allows it to be a part of your repository. Just like the name suggests, the working directory is where you should be doing all your edits once they are added.</p> +<p>Once you edit your file you need to &ldquo;apply&rdquo; it back to its home so they are used with <code>chezmoi apply</code></p> +<p>What happens if you edit the &ldquo;original&rdquo; file in the home directory? simply merge that change with the working directory with <code>chezmoi merge filename</code></p> +<p>Now you are done for the day and you want to submit the changes to the remote repo so you can apply these changes to your other computers. You simply change directory to chezmoi with <code>chezmoi cd</code> or <code>cd ~/.local/share/chezmoi</code> and <code>git add files</code> -&gt; <code>git commit -m &quot;initial commit&quot;</code> -&gt; <code>git push</code> in the command line. However, I really like the desktop application GitHub desktop and prefer to add the ~/.local/share/chezmoi directory to it and do the add, commit, and push in that GUI GitHub Directory shown below.</p> +<p><img src="https://christitus.com/images/2022/chezmoi/git-desktop.png" alt="git-desktop.png"></p> + + + + My Obsidian Setup + https://christitus.com/obsidian/ + Fri, 22 Apr 2022 08:32:54 -0500 + + https://christitus.com/obsidian/ + <p>Notes are vital to our productivity but often people either take too many notes or none at all. I sought to fix this by using a simplistic approach in the Obsidian app. I&rsquo;ve tried notion and a variety of other offerings that always fell flat. Let me show you how I set this app for maximum productivity.</p> +<h2 id="install-plugins">Install Plugins</h2> +<p>Open Obsidian Settings +<img src="https://christitus.com/images/2022/04-obsidian/plugins.png" alt="settings"></p> +<ul> +<li>Template (Core)</li> +<li>Kanban</li> +<li>Dataview (Progress Bar)</li> +<li>Homepage</li> +</ul> +<h2 id="template-core-plugin">Template Core Plugin</h2> +<ul> +<li>Make Template folder in file view</li> +<li>Set Template Folder under Template in Obsidian settings</li> +</ul> +<h2 id="kanban-plugin">Kanban Plugin</h2> +<p><img src="https://christitus.com/images/2022/04-obsidian/kanban-settings.png" alt="kanban settings"></p> +<p><code>Click on settings cog for your board</code></p> +<p><em>NOT the settings for the obsidian program</em></p> +<p><strong>Set your default template, Note folder to put new files in, and lane width.</strong></p> +<p><img src="https://christitus.com/images/2022/04-obsidian/kanban-settings2.png" alt="kanban settings2"></p> +<p><em>Note: I recommend leaving 270 width for 1080p screens</em></p> +<h2 id="homepage-plugin">Homepage Plugin</h2> +<p>Adds Home button and just makes it easy to always get back to your kanban to-do page. The homepage button my default will close all open notes and open the to-do or what ever note you specify. Here are my settings:</p> +<p><img src="https://christitus.com/images/2022/04-obsidian/homepage.png" alt="homepage plugin"></p> +<h2 id="dataview-plugin">Dataview Plugin</h2> +<p>This is for progress bar, or if you want to do filters, tags, yaml headers, and other sorting techniques. It does WAY more than I use it for at the moment. Since I&rsquo;m limiting my notes to maybe 10-20 notes I don&rsquo;t need the other stuff, but it is there incase I expand. For now, I will use the following code in my templates to add a progress bar that tracks any checkboxes and how many are checked compared to total.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">`=&#34;![progress](https://progress-bar.dev/&#34; + round(length(filter(this.file.tasks.completed, (t) =&gt; t = true)) / length(this.file.tasks.text) * 100) + &#34;/)&#34;` +</span></span></code></pre></div><h3 id="walkthrough-video">Walkthrough Video</h3> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/zGCv6aDDfP8" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + 30 Days in ChromeOS + https://christitus.com/30days-chromeos/ + Mon, 11 Apr 2022 08:48:13 -0500 + + https://christitus.com/30days-chromeos/ + <p>This article details how I survived 30 days in ChromeOS as a poweruser. I don&rsquo;t use Chrome Browser and I don&rsquo;t enjoy using Andorid apps. This is how I used ChromeOS like a desktop instead of a mobile phone. No, I didn&rsquo;t enable developer mode for this.</p> +<h2 id="chromeos-changes-to-supercharge-the-install">ChromeOS Changes to Supercharge the Install</h2> +<p>The biggest thing about ChromeOS that it has a huge amount of Pros, but is missing some things out of the box that many desktop users need. I changed the browser, photo editing software, gaming, game streaming, and many other tools using ChromeOS&rsquo;s built in Linux environment. The container system (crostini) is absolutely amazing and I was able to utilize all these Linux/Windows tools on my system.</p> +<p><strong>Launch Settings and type in search <code>Linux</code></strong></p> +<h3 id="setting-up-the-linux-environment">Setting up the Linux Environment</h3> +<p>By default setting up a Linux environment in Chrome is as easy as checking a box in Settings. We just need to modify the environment ChromeOS gives us.</p> +<p><img src="https://christitus.com/images/2022/04-chromeos/chromeos-linux.png" alt="linux"></p> +<p>Then we change the stock repositories in the linux environment so that we can easily install our programs. All the below commands are done in Terminal &ndash;</p> +<p><img src="https://christitus.com/images/2022/04-chromeos/Terminal.png" alt="terminal"></p> +<p><strong>Install Text Editor</strong></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo apt update &amp;&amp; sudo apt install nano +</span></span></code></pre></div><p><strong>Edit the download repos so we can install more</strong></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo nano /etc/apt/sources.list +</span></span></code></pre></div><p><strong>Edit the file to look like this:</strong></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">deb https://deb.debian.org/debian sid main contrib non-free +</span></span></code></pre></div><p><em>Save and Exit</em></p> +<p><strong>Update system and install any packages</strong></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo apt update +</span></span><span class="line"><span class="cl">sudo apt install packagename +</span></span></code></pre></div><p><em>Rename package name to be the package you need. Ex. <code>sudo apt install gimp</code></em></p> +<p>With the environment now setup, we can get a ton of packages into our ChromeOS that automatically add to the start menu. We can add more than this by installing deb packages, adding repositories, or building programs from source using the linux tar.gz files. The sky is the limit!</p> +<h3 id="install-your-desktop-programs">Install Your desktop programs</h3> +<p>Getting the browser you use on your desktop is the first thing I do. Chrome is great, but not everyone uses it and I prefer Brave a bit more, where others prefer Firefox. You can simple follow the linux install instructions for your browser of choice. Here is some basic ways to install the browser from the Linux Terminal.</p> +<h4 id="firefox">Firefox</h4> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo apt install firefox +</span></span></code></pre></div><h4 id="brave">Brave</h4> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo apt install apt-transport-https curl +</span></span><span class="line"><span class="cl">sudo curl -fsSLo /usr/share/keyrings/brave-browser-archive-keyring.gpg https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg +</span></span><span class="line"><span class="cl">echo &#34;deb [signed-by=/usr/share/keyrings/brave-browser-archive-keyring.gpg arch=amd64] https://brave-browser-apt-release.s3.brave.com/ stable main&#34;|sudo tee /etc/apt/sources.list.d/brave-browser-release.list +</span></span><span class="line"><span class="cl">sudo apt update +</span></span><span class="line"><span class="cl">sudo apt install brave-browser +</span></span></code></pre></div><p>The remaining programs can be installed using any Linux guide that is based around &ldquo;Debian&rdquo; and most can simple be installed using sudo apt install command. There were a couple programs I installed by download the .deb file. which can be installed using <code>sudo dpkg -i packagename.deb</code></p> +<h3 id="pros-and-cons-of-using-chromeos">Pros and Cons of Using ChromeOS</h3> +<h4 id="pros">Pros</h4> +<ul> +<li>More than a web browser</li> +<li>Installing other browsers and programs +<ol> +<li>Brave</li> +<li>GIMP</li> +<li>Linux Programs</li> +</ol> +</li> +<li>Performance - Good, but video can be laggy.</li> +<li>Perfect for old or low powered equipment</li> +<li>Amazing power management</li> +</ul> +<h4 id="cons">Cons</h4> +<ul> +<li>No Windows Apps</li> +<li>3d/Video acceleration is crap</li> +<li>Everything is Google +<ol> +<li>GApps - Sheets, Word, Etc.</li> +<li>Google Drive</li> +<li>Google Account is a must</li> +</ol> +</li> +<li>Files and System navigation is lacking - USB Drives and recognition issues with external media</li> +</ul> +<h3 id="installing-on-an-old-machine">Installing on an Old Machine</h3> +<ul> +<li>Google Extension and 8GB+ Thumbdrive +<ol> +<li>Install via Google Extension <em>(Required)</em> <a href="https://chrome.google.com/webstore/detail/chromebook-recovery-utili/pocpnlppkickgojjlmhdmidojbmbodfm">https://chrome.google.com/webstore/detail/chromebook-recovery-utili/pocpnlppkickgojjlmhdmidojbmbodfm</a></li> +</ol> +</li> +</ul> +<h2 id="conclusion">Conclusion</h2> +<p>ChromeOS has some amazing use cases, but is definitely not for everyone. I have a couple old low powered computers that I can repurpose with ChromeOS to bring them new life, but I will not be daily driving it on my main machine.</p> +<h3 id="walkthrough-video">Walkthrough Video</h3> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/fVRZlqmGrUk" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Robocopy - Copying files the right way in Windows + https://christitus.com/robocopy/ + Wed, 19 Jan 2022 17:39:34 -0600 + + https://christitus.com/robocopy/ + <p>This guide shows how to copy files in windows when dealing with large volumes of files and very long file paths past 255 characters.</p> +<h2 id="what-is-robocopy-and-why-use-it">What is Robocopy and Why use it?</h2> +<p>Robocopy is a build in command line program that is fantastic at copying files quickly and bypasses many of the downsides of the standard copy process of windows.</p> +<p>The downsides of Window&rsquo;s standard file copy are:</p> +<ul> +<li>Has to read ALL files being copied BEFORE it will copy the first file</li> +<li>Artificial character limit of 255 that includes the filename and filepath.</li> +<li>GUI limitations for LARGE amounts of files.</li> +</ul> +<h2 id="how-to-use-robocopy">How to use Robocopy</h2> +<p>Launch into the Command Prompt or Powershell by right-clicking Start Menu</p> +<p><img src="https://christitus.com/images/2022/01-Robocopy/start-menu.png" alt="start-menu"></p> +<p>From this interface you can now run Robocopy.</p> +<p>Basic Syntax:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">C:\&gt; robocopy &#34;Source Directory&#34; &#34;Destination Directory&#34; /e /w:5 /r:2 /COPY:DATSOU /DCOPY:DAT /MT +</span></span></code></pre></div><p>Full syntax can be shown with <code>robocopy /?</code> but be careful with /MIR and move style copies as this can overwrite and erase existing files in the destination directory.</p> +<p>Notable Options with Robocopy</p> +<ul> +<li>/e - Copy all folders including empty ones</li> +<li>/r - Retry times /r:0 means no retry on failed copy</li> +<li>/w - Wait time /w:0 means no wait between retry on failed copy</li> +<li>/COPYALL OR /COPY:DATSOU - Copy Data, Attributes, Timestamps, Security, Owner, and Auditing Info for files</li> +<li>/DCOPY:DAT - Copy Data,Attributes and Timestamps for Directories (Other Options are E=EAs-Extended Attributes, X=Skip alt data streams, but are almost never used)</li> +<li>/MT:n - Multithread transfer with n threads. Example /MT:4 - Use 4 threads to copy files. If no threads set, it will default to 8.</li> +<li>/MIR - Mirror Source to Destination - WARNING: WILL DELETE ANY FILES THAT DO NOT MATCH IN DESTINATION!</li> +<li>/MOVE - Moves from Source to Destination - WARNING: WILL DELETE ALL FILES FROM SOURCE AFTER COPY!</li> +<li>/LFSM:100M - Operate in Low Free Space Mode with 100 Megabytes. 10M = 10 Megabytes 1G = 1 Gigabyte</li> +<li>/B - Backup Mode - Great for system backups if you are part of Administrator or Backup Users group - NOT RECOMMENDED - Use 3rd party backup software</li> +<li>/ZB - Restartable Backup Mode - Tries to copy files with restartable and if it fails it restarts in backup mode - NOT RECOMMENDED - Use 3rd party backup software</li> +<li>/RH:1700-0900 - Scheduled run between 5PM and 9AM and will pause if it is during &ldquo;business hours of 9AM-5PM&rdquo;</li> +<li>/LOG+:C:\robocopy.log - Outputs everything to C:\robocopy.log (Note: if NOT running as admin you need to put this in your user folder C:\Users\username\robocopy.log) the + adds to the file.</li> +<li>/TEE - If using LOG and you also want console output, put the /TEE option in.</li> +</ul> +<p>I don&rsquo;t recommend using backup, restartable mode, or jobs. Jobs typically miss options and 3rd party solution like veeam are FAR better for backups than robocopy EVER will be.</p> +<h3 id="walkthrough-video">Walkthrough Video</h3> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/0q3rGK_IMZg" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Setup Qemu in Debian Linux + https://christitus.com/vm-setup-in-linux/ + Wed, 12 Jan 2022 16:28:59 -0500 + + https://christitus.com/vm-setup-in-linux/ + <p>This is guide on setting up QEMU in Debian Linux.</p> +<h2 id="check-virtualization-extension">Check Virtualization Extension</h2> +<p>Run this command to make sure you&rsquo;ve enabled virtualization in on your computer. It should be above 0</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">egrep -c &#39;(vmx|svm)&#39; /proc/cpuinfo +</span></span></code></pre></div><p>If the output is zero then go to bios settings and enable VT-x (Virtualization Technology Extension) for Intel processor and AMD-V for AMD processor.</p> +<h2 id="install-qemu-and-virtual-machine-manager">Install QEMU and Virtual Machine Manager</h2> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo apt install qemu-kvm qemu-system qemu-utils python3 python3-pip libvirt-clients libvirt-daemon-system bridge-utils virtinst libvirt-daemon virt-manager -y +</span></span></code></pre></div><p>Verify that Libvirtd service is started</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo systemctl status libvirtd.service +</span></span></code></pre></div><p><img src="https://christitus.com/images/2022/libvirtd-service.png" alt="libvirtd-service"></p> +<h2 id="start-default-network-for-networking">Start Default Network for Networking</h2> +<p>VIRSH is a command to directly interact with our VMs from terminal. We use it to list networks, vm-status and various other tools when we need to make tweaks. Here is how we start the default and make it auto-start after reboot.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo virsh net-start default +</span></span></code></pre></div><p>Network default started</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo virsh net-autostart default +</span></span></code></pre></div><p>Network default marked as autostarted</p> +<p>Check status with:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo virsh net-list --all +</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl"> Name State Autostart Persistent +</span></span><span class="line"><span class="cl">---------------------------------------------- +</span></span><span class="line"><span class="cl"> default active yes yes +</span></span></code></pre></div><h2 id="add-user-to-libvirt-to-allow-access-to-vms">Add User to libvirt to Allow Access to VMs</h2> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo usermod -aG libvirt $USER +</span></span><span class="line"><span class="cl">sudo usermod -aG libvirt-qemu $USER +</span></span><span class="line"><span class="cl">sudo usermod -aG kvm $USER +</span></span><span class="line"><span class="cl">sudo usermod -aG input $USER +</span></span><span class="line"><span class="cl">sudo usermod -aG disk $USER +</span></span></code></pre></div><p>Reboot and you are Finished!</p> +<h3 id="walkthrough-video">Walkthrough Video</h3> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/Kq849CpGd88" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Setup Qemu in Arch Linux + https://christitus.com/setup-qemu-in-archlinux/ + Tue, 11 Jan 2022 09:52:18 -0600 + + https://christitus.com/setup-qemu-in-archlinux/ + <h2 id="setting-up-virtual-machines-in-qemu-on-arch-linux">Setting up Virtual Machines in QEMU on Arch Linux</h2> +<p>QEMU/KVM Dependancies to install:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo pacman -S qemu virt-manager virt-viewer dnsmasq vde2 bridge-utils openbsd-netcat ebtables iptables libguestfs +</span></span></code></pre></div><p><em>Note: Make sure you update your system with a $ sudo pacman -Syu BEFORE you install the dependencies</em></p> +<h2 id="make-libvirt-group-for-your-user">Make Libvirt Group for your user</h2> +<p>Edit <code>/etc/libvirt/libvirtd.conf</code> +(Change the following Lines)</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">unix_sock_group = &#34;libvirt&#34; +</span></span><span class="line"><span class="cl">unix_sock_rw_perms = &#34;0770&#34; +</span></span></code></pre></div><p>Then add your user and create group:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo usermod -a -G libvirt $(whoami) +</span></span><span class="line"><span class="cl">newgrp libvirt +</span></span></code></pre></div><h2 id="reboot-and-launch-virt-manager">Reboot and launch virt-manager!</h2> + + + + Uninstall Microsoft Edge + https://christitus.com/uninstall-edge/ + Fri, 06 Aug 2021 11:55:48 -0500 + + https://christitus.com/uninstall-edge/ + <p>This goes over Removing Microsoft Edge Chromium edition and keeping it removed.</p> +<h2 id="the-problem">The Problem</h2> +<p>Microsoft Edge has taken over PDF viewer, and other default web tasks. Even when manually removing it will reinstall via windows updates.</p> +<h2 id="removing-the-base-install">Removing the Base Install</h2> +<p>We first need to find the Edge install of the chromium edition in your Program Files.</p> +<p>Location:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">C:\Program Files (x86)\Microsoft\Edge\Application\ +</span></span></code></pre></div><p>The setup program is what we need to uninstall edge. Go to the location above and drill down from the number and Install folder</p> +<p>Example:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">C:\Program Files (x86)\Microsoft\Edge\Application\92.0.902.62\Installer +</span></span></code></pre></div><p>Once you find your path you can now uninstall edge with the following command <em>(Note: YOURS WILL BE DIFFERENT!)</em></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">C:\Program Files (x86)\Microsoft\Edge\Application\92.0.902.62\Installer\setup.exe --uninstall --system-level --verbose-logging --force-uninstall +</span></span></code></pre></div><h2 id="keep-it-from-coming-back-for-now">Keep it from coming back&hellip; for now</h2> +<p>You now need to add a registry entry. The following location <code>Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\EdgeUpdate</code> needs to be added with a DWORD called <code>DoNotUpdateToEdgeWithChromium</code> with a value of <code>1</code>.</p> +<p>You can do this with a simply reg file. (<code>stopedge.reg</code>)</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Windows Registry Editor Version 5.00 +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl">[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\EdgeUpdate] +</span></span><span class="line"><span class="cl">&#34;DoNotUpdateToEdgeWithChromium&#34;=dword:00000001 +</span></span></code></pre></div><p>Create this file or download the file @ <a href="https://christitus.com/files/stopedge.zip">https://christitus.com/files/stopedge.zip</a></p> +<p>Run this to prevent edge reinstallation. <em>Note: Microsoft will kill this workaround in the future and force edge on you</em></p> + + + + Bspwm on KDE + https://christitus.com/bspwm-on-KDE/ + Tue, 20 Jul 2021 14:46:40 -0500 + + https://christitus.com/bspwm-on-KDE/ + <p>This goes over switching the window manager of KDE to bspwm.</p> +<h2 id="dependency-installs">Dependency Installs</h2> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo apt install bspwm +</span></span></code></pre></div><h2 id="configuration">Configuration</h2> +<p>Create three files with the following contents</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">mkdir -p ~/.config/bspwm +</span></span><span class="line"><span class="cl">mkdir -p ~/.config/sxhkd +</span></span><span class="line"><span class="cl">wget -O ~/.config/bspwm/bspwmrc https://raw.githubusercontent.com/ChrisTitusTech/BSPWM-on-KDE/main/bspwmrc +</span></span><span class="line"><span class="cl">wget -O ~/.config/sxhkd/sxhkdrc https://raw.githubusercontent.com/ChrisTitusTech/BSPWM-on-KDE/main/sxhkdrc +</span></span><span class="line"><span class="cl">chmod +x ~/.config/bspwm/bspwmrc +</span></span><span class="line"><span class="cl">chmod +x ~/.config/sxhkd/sxhkdrc +</span></span><span class="line"><span class="cl">sudo wget -O /usr/share/xsessions/plasma-bspwm.desktop https://raw.githubusercontent.com/ChrisTitusTech/BSPWM-on-KDE/main/plasma-bspwm.desktop +</span></span></code></pre></div><h2 id="documentation">Documentation</h2> +<p>/usr/share/xsessions/plasma-bspwm.desktop</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">[Desktop Entry] +</span></span><span class="line"><span class="cl">Type=XSession +</span></span><span class="line"><span class="cl">Exec=env KDEWM=/usr/bin/bspwm /usr/bin/startplasma-x11 +</span></span><span class="line"><span class="cl">TryExec=/usr/bin/startplasma-x11 +</span></span><span class="line"><span class="cl">DesktopNames=KDE +</span></span><span class="line"><span class="cl">Name=Plasma bspwm +</span></span></code></pre></div><p>bspwmrc and sxhkdrc are using both the stock example files @ <code>/usr/share/doc/bspwm/examples</code></p> + + + + Update Any PC to Windows 11 + https://christitus.com/update-any-pc-to-windows11/ + Tue, 29 Jun 2021 11:21:54 -0500 + + https://christitus.com/update-any-pc-to-windows11/ + <p>This is a guide going over updating any PC to Windows 11 that &ldquo;doesn&rsquo;t meet requirements&rdquo; or doesn&rsquo;t use Secure Boot or has a TPM 2.0 chip.</p> +<h2 id="methods">Methods</h2> +<ol> +<li>Download appraiserres.dll from Windows 10 install and replace this file in the Windows 11 Sources directory (Windows 11 ISO required)</li> +<li>Use Registry edits below to upgrade your PC in the insider channel. This will be patched out before official release. Video showing regedit: <a href="https://youtu.be/fk5B-a7vZ_w">https://youtu.be/fk5B-a7vZ_w</a></li> +<li>Bypass the requirement prompt by using Command Prompt. Here is a video showing fresh install: <a href="https://youtu.be/wK40EFgzmqM">https://youtu.be/wK40EFgzmqM</a></li> +</ol> +<h2 id="upgrade-path">Upgrade Path</h2> +<p>The path for upgrading to 11 requires you to have an activated Windows 10 PC and be subscribed to the insider builds.</p> +<p>Insider builds can be registerd for use @ <a href="https://insider.windows.com/">https://insider.windows.com/</a></p> +<h2 id="system-modifications">System Modifications</h2> +<p>Windows 11 does checks for TPM and Secure boot before it allows the upgrade process to start. However, these can be bypassed.</p> +<p><em>Note: It is important to understand Microsoft can at ANY TIME enforce these rules or ignore these modifications which means you would NO LONGER recieve updates</em></p> +<p>Here is the registry edits that need to be made: (win11bypass.reg)</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Windows Registry Editor Version 5.00 +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl">[HKEY_LOCAL_MACHINE\SYSTEM\Setup\LabConfig] +</span></span><span class="line"><span class="cl">&#34;BypassTPMCheck&#34;=dword:00000001 +</span></span><span class="line"><span class="cl">&#34;BypassSecureBootCheck&#34;=dword:00000001 +</span></span></code></pre></div><p>Download Reg File here: <a href="https://christitus.com/files/win11bypass.zip">https://christitus.com/files/win11bypass.zip</a></p> +<p><em>REBOOT AFTER MODIFICATIONS MADE</em></p> +<p><img src="https://christitus.com/images/2021/06-win11upgrade/regedit.png" alt="regedit"></p> +<h2 id="upgrade">Upgrade</h2> +<p>Now you can simply finish your insider build sign up and then click update</p> +<p>Once it finishes updating you should see a screen to update to the latest Windows 11 build (22000.52) or Greater</p> +<p><img src="https://christitus.com/images/2021/06-win11upgrade/winver.png" alt="winver"></p> + + + + Rocky Linux + https://christitus.com/rocky-linux/ + Mon, 03 May 2021 12:12:16 -0500 + + https://christitus.com/rocky-linux/ + <p>This guide goes over setting up KDE on Rocky Linux from a base server install with no GUI.</p> +<h2 id="download-and-install-server-setup">Download and Install Server Setup</h2> +<p>Download the Rocky Linux ISO from: <a href="https://rockylinux.org/download/">https://rockylinux.org/download/</a><br> +<em>Note: I downloaded DVD 8GB, which is offline and no downloading</em></p> +<p>During Setup, I recommend a dedicated drive and choosing only SERVER with NO GUI!</p> +<p>Go ahead and walkthrough the rest of the install</p> +<h2 id="configuration">Configuration</h2> +<h3 id="enable-powertools-and-rpmfusion-repositories">Enable PowerTools and RPMFusion Repositories</h3> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo dnf upgrade -y +</span></span><span class="line"><span class="cl">sudo dnf install --nogpgcheck https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm +</span></span><span class="line"><span class="cl">sudo dnf install --nogpgcheck https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm https://mirrors.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-8.noarch.rpm +</span></span><span class="line"><span class="cl">sudo dnf config-manager --set-enabled PowerTools +</span></span></code></pre></div><p><em>Note: If you can&rsquo;t install PowerTools with config-manager, you can manually enable it through the repo file in <code>/etc/yum.repos.d</code></em></p> +<h3 id="dependencies">Dependencies</h3> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo dnf update -y +</span></span><span class="line"><span class="cl">sudo dnf install xorg-x11-server-Xorg xorg-x11-xauth xorg-x11-apps -y +</span></span><span class="line"><span class="cl">sudo dnf install plasma-desktop kscreen sddm kde-gtk-config dolphin konsole kate -y +</span></span></code></pre></div><h3 id="set-graphical-interface-on-startup">Set Graphical Interface on Startup</h3> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo systemctl set-default graphical.target +</span></span><span class="line"><span class="cl">sudo systemctl enable sddm +</span></span></code></pre></div><p><em>Note: If using GTK Apps, I highly recommend building and installing <code>Kvantum</code> from <code>git clone https://github.com/tsujan/Kvantum.git</code></em></p> +<h4 id="nvidia-cards-only">NVIDIA Cards ONLY</h4> +<p>If you have an nvidia card it can be tricky to install so I recommend doing it before Xorg is started and you have a GUI.</p> +<ol> +<li>First install Dev tools below with dkms and kernel-devel</li> +</ol> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo dnf groupinstall &#34;Development Tools&#34; +</span></span><span class="line"><span class="cl">sudo dnf install kernel-devel epel-release +</span></span><span class="line"><span class="cl">sudo dnf install dkms +</span></span></code></pre></div><ol start="2"> +<li> +<p>Download NVIDIA Drivers from <a href="https://www.nvidia.com/en-us/drivers/unix/">https://www.nvidia.com/en-us/drivers/unix/</a></p> +</li> +<li> +<p>Disable nouveau by editing <code>/etc/default/grub</code></p> +</li> +</ol> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">GRUB_CMDLINE_LINUX=&#34;crashkernel=auto rhgb quiet nouveau.modeset=0&#34; +</span></span></code></pre></div><p>Write out the changes (Note Choose BIOS OR EFI&hellip; NOT BOTH!)</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">BIOS: +</span></span><span class="line"><span class="cl">$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg +</span></span><span class="line"><span class="cl">EFI: +</span></span><span class="line"><span class="cl">$ sudo grub2-mkconfig -o /boot/efi/EFI/rocky/grub.cfg +</span></span></code></pre></div><ol start="4"> +<li> +<p>(GUI Only) If you booted into KDE or GUI interface from TTY2 (Ctrl+Alt+F2) login and type <code>sudo systemctl isolate multi-user.target</code></p> +</li> +<li> +<p>Now Install NVIDIA and reboot <code>sudo bash NVIDIA-Linux-x86_64-*</code></p> +</li> +</ol> +<h3 id="setup-your-development-tools-for-builds">Setup your Development Tools for Builds</h3> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo dnf groupinstall &#34;Development Tools&#34; +</span></span><span class="line"><span class="cl">sudo dnf install cmake gcc-c++ libX11-devel libXext-devel qt5-qtx11extras-devel qt5-qtbase-devel qt5-qtsvg-devel qt5-qttools-devel kf5-kwindowsystem-devel make procps-ng curl file git +</span></span></code></pre></div><p>Install Homebrew</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">/bin/bash -c &#34;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)&#34; +</span></span></code></pre></div><p><em>Note: Installer messed up and put it in <code>/home/linuxbrew/.linuxbrew</code> I moved this to my home folder and linked the brew executable to <code>~/bin</code></em></p> +<p>Add Homebrew to the end bash or zsh rc file</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">eval $(~/.linuxbrew/bin/brew shellenv) +</span></span></code></pre></div><h3 id="install-tools-of-your-choice">Install Tools of your Choice</h3> +<p>This is a base install so you will need a file explorer, terminal, browser, etc.</p> +<p>Choose whatever you want!</p> +<p>Examples:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo dnf install terminator firefox zsh +</span></span></code></pre></div><h4 id="vscodium-on-rocky-linux">VSCodium on Rocky Linux</h4> +<p>Source: <a href="https://github.com/VSCodium/vscodium">https://github.com/VSCodium/vscodium</a></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo rpm --import https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/-/raw/master/pub.gpg +</span></span><span class="line"><span class="cl">printf &#34;[gitlab.com_paulcarroty_vscodium_repo]\nname=gitlab.com_paulcarroty_vscodium_repo\nbaseurl=https://paulcarroty.gitlab.io/vscodium-deb-rpm-repo/rpms/\nenabled=1\ngpgcheck=1\nrepo_gpgcheck=1\ngpgkey=https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/-/raw/master/pub.gpg&#34; |sudo tee -a /etc/yum.repos.d/vscodium.repo +</span></span><span class="line"><span class="cl">sudo dnf install codium +</span></span></code></pre></div><h4 id="new-packages-with-appimage-or-flatpak">New Packages with AppImage or Flatpak</h4> +<p>Install flatpak with <code>sudo dnf install flatpak</code></p> +<p>See What package are availiable: <a href="https://flathub.org/home">https://flathub.org/home</a></p> +<p>Install the flathub repo on Rocky Linux <code>flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo</code></p> +<p>GIMP 2.10 <code>sudo flatpak install https://flathub.org/repo/appstream/org.gimp.GIMP.flatpakref</code><br> +Steam <code>sudo flatpak install flathub com.valvesoftware.Steam</code></p> +<h2 id="the-rocky-difference">The Rocky Difference</h2> +<p><em>Security by default</em> - Be aware this uses Enforced SELinux and Firewalld on install. This means applications will more often than not be sandboxed and will block all incoming traffic</p> +<p><em>Stability in mind</em> Yes, the packages are old by default but it means they stable</p> +<p><em>Productivity Machine</em> No constant updates, it just works&hellip;</p> + + + + Creating a Website on Raspberry Pi + https://christitus.com/pi-website/ + Tue, 20 Apr 2021 10:02:56 -0500 + + https://christitus.com/pi-website/ + <p>This is a guide on how to create a website on a Raspberry Pi. This will teach you the basics of using a LAMP stack.</p> +<h2 id="overview">Overview</h2> +<p>This is perfect for setting up your first website and learning not only administering a wordpress site, but learning Linux. You will need a Raspberry Pi, a couple hours, and a computer to download the image on. The Raspberry Pi (RPI) is a perfect device for learning these things.</p> +<p>Also check out the official projects site from RaspberryPi +Source: <a href="https://projects.raspberrypi.org/en/projects/lamp-web-server-with-wordpress">https://projects.raspberrypi.org/en/projects/lamp-web-server-with-wordpress</a></p> +<h2 id="downloading-the-rpi-imager">Downloading the RPI Imager</h2> +<p>Download the Imager for your operating system. This supports all three OS&rsquo;s (Windows, Mac, and Linux).</p> +<p><a href="https://www.raspberrypi.org/downloads/">https://www.raspberrypi.org/downloads/</a></p> +<ul> +<li>Run and Install the Imager</li> +<li>Select Raspberry Pi OS (other) -&gt; Raspberry Pi OS Lite (32-bit) +<ul> +<li>Note: This is the one with NO Desktop Environment</li> +</ul> +</li> +<li>Insert the SD Card into your Computer</li> +<li>Click Write</li> +</ul> +<h2 id="install-dependencies">Install Dependencies</h2> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo apt-get install apache2 php mariadb-server php-mysql -y +</span></span><span class="line"><span class="cl">sudo service apache2 restart +</span></span></code></pre></div><h2 id="install-wordpress">Install Wordpress</h2> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">cd /var/www/html/ +</span></span><span class="line"><span class="cl">sudo rm * +</span></span><span class="line"><span class="cl">sudo wget http://wordpress.org/latest.tar.gz +</span></span><span class="line"><span class="cl">sudo tar xzf latest.tar.gz +</span></span><span class="line"><span class="cl">sudo mv wordpress/* . +</span></span><span class="line"><span class="cl">sudo rm -rf wordpress latest.tar.gz +</span></span><span class="line"><span class="cl">sudo chown -R www-data: . +</span></span></code></pre></div><h2 id="setup-wordpress-database">Setup WordPress Database</h2> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo mysql_secure_installation +</span></span></code></pre></div><ul> +<li>You will be asked Enter current password for root (enter for none): — press Enter.</li> +<li>Type in Y and press Enter to Set root password?.</li> +<li>Type in a password at the New password: prompt, and press Enter. Important: remember this root password, as you will need it later to set up WordPress.</li> +<li>Type in Y to Remove anonymous users.</li> +<li>Type in Y to Disallow root login remotely.</li> +<li>Type in Y to Remove test database and access to it.</li> +<li>Type in Y to Reload privilege tables now.</li> +</ul> +<p><em>When complete, you will see the message All done! and Thanks for using MariaDB!.</em></p> +<p>Login to MySQL with <code>sudo mysql -uroot -p</code> and enter the password you set above.</p> +<p>You will see the terminal prompt change and you can enter the following:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">create database wordpress; +</span></span><span class="line"><span class="cl">GRANT ALL PRIVILEGES ON wordpress.* TO &#39;root&#39;@&#39;localhost&#39; IDENTIFIED BY &#39;YOURPASSWORD&#39;; +</span></span><span class="line"><span class="cl">FLUSH PRIVILEGES; +</span></span></code></pre></div><p><em>IMPORTANT: Exit SQL Prompt with <code>Ctrl + D</code> and change <code>YOURPASSWORD</code> above to your password!</em></p> +<p>Reboot with <code>sudo reboot</code></p> +<h2 id="wordpress-configuration">Wordpress Configuration</h2> +<p>Remote Access can be done with SSH from any system. Find your Raspberry Pi IP with <code>ip a</code>. This IP is only your Local IP and not accessible from the outside world.</p> +<p>Initial setup can be done from any computer in the same network as the RPI. Type your pi ip address from above into your browsers address bar.</p> +<p><em>Example: https://192.168.1.123</em></p> +<p>Remote Login after initial setup append <code>/wp-admin</code> to the address</p> +<p><em>Example: https://192.168.1.123/wp-admin</em></p> +<h2 id="recommended-server-settings">Recommended Server settings</h2> +<p>Finally we need to make some quality of life improvements so you don&rsquo;t have weird looking addresses. This is called &ldquo;Friendly Permalinks&rdquo;.</p> +<p>In the <em>WP Admin Portal</em>:</p> +<ul> +<li>Go to <em>Setting</em>, then <em>Permalinks</em></li> +<li>Select the <em>Post name</em> option and click <em>Save Changes</em></li> +</ul> +<p>From <em>SSH or Terminal on the RPI</em> you need to enter the following:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo a2enmod rewrite +</span></span><span class="line"><span class="cl">sudo nano /etc/apache2/sites-available/000-default.conf +</span></span></code></pre></div><p>000-default.conf edits (Add this midway in the file)</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">&lt;Directory &#34;/var/www/html&#34;&gt; +</span></span><span class="line"><span class="cl"> AllowOverride All +</span></span><span class="line"><span class="cl">&lt;/Directory&gt; +</span></span></code></pre></div><p>Save the File by press Ctrl + O and Exit with Ctrl + X</p> +<p>Now restart Apache Web with <code>sudo service apache2 restart</code></p> + + + + GRUB Bootloader Themes + https://christitus.com/bootloader-themes/ + Mon, 01 Mar 2021 14:53:09 -0600 + + https://christitus.com/bootloader-themes/ + <p>Do you dual boot often? Well make the Bootloader Selection Screen Awesome! Here are my top 5 GRUB Bootloader themes.</p> +<h2 id="all-in-one-pack">All-In-One Pack</h2> +<p>This Pack is everything below so you can swap between them. It is a custom script I made so I can choose any of my favorite bootloaders below. This may not include original project updates as they happen, so check the source links below if one of the themes doesn&rsquo;t work for you!</p> +<h3 id="installation">Installation</h3> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">git clone https://github.com/ChrisTitusTech/Top-5-Bootloader-Themes +</span></span><span class="line"><span class="cl">cd Top-5-Bootloader-Themes +</span></span><span class="line"><span class="cl">sudo ./install.sh +</span></span></code></pre></div><h2 id="cyberre">CyberRE</h2> +<p><img src="https://christitus.com/images/2021/02-bootloader/cyberre.jpg" alt="CyberRE"></p> +<p>Source: <a href="https://www.gnome-look.org/p/1420727/">https://www.gnome-look.org/p/1420727/</a></p> +<h2 id="cyberpunk">CyberPunk</h2> +<p><img src="https://christitus.com/images/2021/02-bootloader/cyberpunk.jpg" alt="Cyberpunk"></p> +<p>Source: <a href="https://www.gnome-look.org/p/1429443/">https://www.gnome-look.org/p/1429443/</a></p> +<h2 id="fallout">Fallout</h2> +<p><img src="https://christitus.com/images/2021/02-bootloader/fallout.jpg" alt="Fallout"></p> +<p>Source: <a href="https://www.gnome-look.org/p/1230882/">https://www.gnome-look.org/p/1230882/</a></p> +<h2 id="vimix">Vimix</h2> +<p><img src="https://christitus.com/images/2021/02-bootloader/vimix.jpg" alt="Vimix"></p> +<p>Source: <a href="https://www.gnome-look.org/p/1009236/">https://www.gnome-look.org/p/1009236/</a></p> +<h2 id="shodan">Shodan</h2> +<p><img src="https://christitus.com/images/2021/02-bootloader/shodan.jpg" alt="Shodan"></p> +<p>Source: <a href="https://www.gnome-look.org/p/1251112/">https://www.gnome-look.org/p/1251112/</a></p> + + + + Ultimate Windows 10 Install ISO + https://christitus.com/Ultimate-Windows-10-Install-ISO/ + Wed, 20 Jan 2021 10:23:43 -0600 + + https://christitus.com/Ultimate-Windows-10-Install-ISO/ + <p>This goes over creating the best installation media possible for a fresh Windows 10</p> +<h2 id="downloading-windows-10-iso">Downloading Windows 10 ISO</h2> +<p>I only use official Microsoft sources for Windows installation. At the time of the writing the following link is where I&rsquo;d download either the ISO directly or the media creation tool that you select ISO on.</p> +<p><a href="https://www.microsoft.com/en-us/software-download/windows10">https://www.microsoft.com/en-us/software-download/windows10</a></p> +<h2 id="mounting-and-modifying-the-iso">Mounting and Modifying the ISO</h2> +<h3 id="using-msmg-toolkit">Using MSMG Toolkit</h3> +<p>Download MSMG Toolkit from their website.</p> +<p><a href="https://msmgtoolkit.in/download.html">https://msmgtoolkit.in/download.html</a></p> +<p><img src="https://christitus.com/images/2021/01-win10iso/msmg.png" alt="msmg"></p> +<h3 id="expand-and-mount-windows">Expand and Mount Windows</h3> +<p>From the Source menu select expand and then mount in MSMG Toolkit. Below is a full video where I use MSMG toolkit to remove many components in Win10.</p> +<p>How to Make a Custom Windows 10 ISO with <em>MSMG Toolkit</em> Video<br> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/R6XPff38iSc" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> +</p> +<h3 id="install-drivers">Install Drivers</h3> +<p>Download and extract your drivers with the following Powershell command:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">DISM.exe /Online /Export-Driver /Destination:%HOMEDRIVE%%HOMEPATH%\Downloads\Drivers +</span></span></code></pre></div><p>You can install ANY inf files to the below directories. <em>EXE and Setup files DO NOT WORK!</em></p> +<p>If you want to install EVERY DRIVER IN EXISTENCE&hellip; download the offline files using <a href="https://sdi-tool.org/">https://sdi-tool.org/</a> and go into the drivers directory and extract all of the 7z files. This will be time intensive and require about 60 GB or more for the install media</p> +<p>Put the inf and driver x64 files here: <code>ToolKit_Directory\Drivers\Install\w10\x64</code><br> +Put the inf and driver x86 files here: <code>ToolKit_Directory\Drivers\Install\w10\x86</code> <em>Note: Most people don&rsquo;t do 32-bit installs and can skip this</em></p> +<p>Other notable tools: 3DP Chip Network Drivers <a href="https://www.3dpchip.com/3dpchip/3dp/net_down_en.php">https://www.3dpchip.com/3dpchip/3dp/net_down_en.php</a> - This installs pretty much any network driver on the fly.</p> +<h3 id="install-updates">Install Updates</h3> +<p>Download the Windows updates from the Official Microsoft Catalog. We need two specific updates that cover most of the big updates missing from our ISO download.</p> +<ul> +<li>Servicing Stack Update <a href="https://www.catalog.update.microsoft.com/Search.aspx?q=Servicing%20Stack%20Update%20Windows%2010">https://www.catalog.update.microsoft.com/Search.aspx?q=Servicing%20Stack%20Update%20Windows%2010</a></li> +<li>Cumulative Update <a href="https://www.catalog.update.microsoft.com/Search.aspx?q=Cumulative%20Update%20Windows%2010">https://www.catalog.update.microsoft.com/Search.aspx?q=Cumulative%20Update%20Windows%2010</a></li> +</ul> +<p><em>Note: Be sure and download your version 20H2, 2009, 1909, etc. and x64 architecture for most computers</em></p> +<p>Put these in <code>ToolKit_Directory\Updates\w10\x64</code></p> +<h2 id="create-the-iso">Create the ISO</h2> +<h3 id="make-autounattendxml">Make Autounattend.xml</h3> +<p>Now let&rsquo;s make it so we will automatically install Windows 10 without answering a bunch of questions. I use a cheatsheet where it just makes it for me from: <a href="https://www.windowsafg.com/win10x86_x64.html">https://www.windowsafg.com/win10x86_x64.html</a></p> +<p>Fill out the form and then click download at the bottom of the page.</p> +<p><img src="https://christitus.com/images/2021/01-win10iso/autounattend.jpg" alt="autounattend"></p> +<h3 id="apply-changes-and-exit-msmg-toolkit">Apply Changes and Exit MSMG Toolkit</h3> +<p>Select the Apply Changes option and exit MSMG Toolkit. We aren&rsquo;t done as we need to implement the autounattend.xml file into the ISO and add any extra tools we want. This can be the Network Driver EXE or any other executable you want. Another good example would be the nVidia Geforce Experience.</p> +<h3 id="mount-iso-and-copy-files">Mount ISO and Copy Files</h3> +<p>Mount the completed ISO file. (<em>Right-Click the Windows10.ISO file and select mount</em>)</p> +<p><img src="https://christitus.com/images/2021/01-win10iso/mount.png" alt="mount"></p> + + + + Windows 10 Optimization Guide + https://christitus.com/Windows-10-Optimization-Guide/ + Wed, 30 Dec 2020 14:34:52 -0600 + + https://christitus.com/Windows-10-Optimization-Guide/ + <p>This guide goes over using a Custom ISO, Removing Windows 10 Components, and Optimizing Windows 10 Settings.</p> +<h2 id="custom-iso">Custom ISO</h2> +<p>The whole purpose of a custom ISO is to make the initial install as slim as possible. You don&rsquo;t have to uninstall bloat if it never gets installed to begin with!</p> +<p>Easiest Method <em>NTLite</em> ($30) - <a href="https://www.ntlite.com/">https://www.ntlite.com/</a></p> +<p>Free Method <em>MSMG Toolkit</em> - <a href="https://msmgtoolkit.in/">https://msmgtoolkit.in/</a></p> +<p>How to Make a Custom Windows 10 ISO with <em>MSMG Toolkit</em> Video<br> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/R6XPff38iSc" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> +</p> +<h3 id="microsoft-method-for-custom-iso-advanced-users-only">Microsoft Method for Custom ISO (Advanced Users Only)</h3> +<p>Downloading in Installing ADK (Microsoft Image Tools) <a href="https://docs.microsoft.com/en-us/windows-hardware/get-started/adk-install">https://docs.microsoft.com/en-us/windows-hardware/get-started/adk-install</a> +Using sysprep from Microsoft <a href="https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/sysprep--generalize--a-windows-installation">https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/sysprep--generalize--a-windows-installation</a></p> +<p>I highly recommend a video by Craft Computing going over Windows Deployment Services if you are interested in this method - <a href="https://youtu.be/PdKMiFKGQuc">https://youtu.be/PdKMiFKGQuc</a></p> +<h2 id="installing-windows-10-and-removing-components">Installing Windows 10 and Removing Components</h2> +<p>The Full AME Experience. Most people will NOT want to do this as it will remove functionality from Windows 10, that you CAN NOT put back in. Some of the components can be taken out in the Custom ISO phase, but this takes it to another level.</p> +<p><em>Note: I do NOT recommend this for MOST machines</em></p> +<p>Components Removed</p> +<ul> +<li>Windows Update</li> +<li>Windows Store</li> +<li>Media Player Functions</li> +<li>Telemetry</li> +<li>Windows Activation (YOU MUST Activate Windows Before this Tweak!) <em>If you fail to do this, you will have a watermark you can&rsquo;t get rid of</em></li> +<li>DirectX 12</li> +</ul> +<p>Source files for Tweaks <a href="https://ameliorated.info/">https://ameliorated.info/</a> or my GitHub mirror <a href="https://github.com/ChrisTitusTech/windows-lite-2004">https://github.com/ChrisTitusTech/windows-lite-2004</a></p> +<p><img src="https://christitus.com/images/2021/01-win10/ame.jpg" alt="ame"></p> +<h3 id="installation-overview">Installation Overview</h3> +<ul> +<li>Install Windows 10 (Stock or Custom ISO)</li> +<li>Activate Windows 10 and Disconnect from Internet afterwards</li> +<li>Run <code>amelioration_2004.bat</code> as Admin and Pre-Amelioration</li> +<li>Reboot to Linux (I recommend Linux Mint)</li> +<li>Run <code>sudo ./ameliorate_2004.sh</code> in Terminal on Live Linux USB</li> +<li>Reboot back to Windows</li> +<li>Run <code>amelioration_2004.bat</code> as Admin and Post-Amelioration</li> +</ul> +<h3 id="driver-installation">Driver Installation</h3> +<p>Recommend using the Offline Snappy Driver Installer <a href="https://sdi-tool.org/">https://sdi-tool.org/</a>. This is about 50 GB, but has every driver you need.</p> +<h3 id="ame-step-by-step-documentation">AME Step-by-Step Documentation</h3> +<p><a href="https://wiki.ameliorated.info/doku.php?id=documentation_2004">https://wiki.ameliorated.info/doku.php?id=documentation_2004</a></p> +<h3 id="running-updates">Running Updates</h3> +<ul> +<li>Download Latest Servicing Stack Update (<em>Check Month - Windows verison- Architecture x64</em>) <a href="https://www.catalog.update.microsoft.com/Search.aspx?q=Servicing%20Stack%20Update%20Windows%2010">https://www.catalog.update.microsoft.com/Search.aspx?q=Servicing%20Stack%20Update%20Windows%2010</a></li> +<li>Download Cumulative Update (<em>Check Month/Version/Arch AND Run After rebooting above</em>) <a href="https://www.catalog.update.microsoft.com/Search.aspx?q=Cumulative%20Update%20Windows%2010">https://www.catalog.update.microsoft.com/Search.aspx?q=Cumulative%20Update%20Windows%2010</a></li> +</ul> +<p>Extract Updates<br> +<code>expand -F:* .\Windows10SSU.msu C:\Update1</code><br> +<code>dism /online /add-package /packagepath=C:\1\Windows10.0-SSU.cab</code><br> +Reboot<br> +<code>expand -F:* .\Windows10Cumulative.msu C:\Update2</code><br> +<code>dism /online /add-package /packagepath=C:\2\Windows10.0-Cumulative.cab</code><br> +Reboot and Run<br> +<code>dism /online /Cleanup-Image /StartComponentCleanup</code></p> +<p><em>Note: File Names change and will be different from above!</em></p> +<h2 id="optimizing-windows-10-settings">Optimizing Windows 10 Settings</h2> +<p>To finish things off we do some custom tweaks with the Official CTT Windows 10 Toolbox. This is something I have been customizing for years and refining every single month to work on any Windows 10 Installation.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">iex ((New-Object System.Net.WebClient).DownloadString(&#39;https://git.io/JJ8R4&#39;)) +</span></span></code></pre></div><h3 id="what-this-script-can-do">What this script can do</h3> +<ul> +<li>Installs Chocolatey, Notepad++, Irfanview, VLC, Java, and asks if you want Adobe Reader or Brave.</li> +<li>Removes all Windows Store Apps EXCEPT office, xbox, and WSL.</li> +<li>Removed Telemetry</li> +<li>Disables Cortana</li> +<li>Deletes various schedules tasks that rebloat the system</li> +<li>Removes Other Bloatware (Candy Crush, etc.)</li> +<li>Fixes problems that other scripts causes (lock screen and personalization options restricted)</li> +</ul> +<p>Based on User feedback, this no longer uninstalls OneDrive or Office.</p> +<h3 id="toolbox-walkthrough-video">Toolbox Walkthrough Video</h3> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/V27McA7ch6w" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + +<h3 id="windows-services-to-disable">Windows Services to Disable</h3> +<ol> +<li>Windows Defender &amp; Firewall</li> +<li>Windows Mobile Hotspot Service</li> +<li>Bluetooth Support Service</li> +<li>Print Spooler (Required for Printing)</li> +<li>Fax</li> +<li>Remote Desktop Configuration and Remote Desktop Services</li> +<li>Windows Insider Service</li> +<li>Secondary Logon</li> +<li>Downloaded Maps Manager</li> +<li>Touch Keyboard and Handwriting Panel Service</li> +<li>Offline Files</li> +<li>Windows Connect Now</li> +<li>Remote Registry</li> +<li>Application Layer Gateway Service</li> +<li>Smart Card</li> +<li>Windows Image Acquisition</li> +<li>Security Center</li> +<li>Connected User Experiences and Telemetry</li> +<li>Retail Demo Service</li> +<li>Windows Media Player Network Sharing Service</li> +<li>AllJoyn Router Service</li> +<li>Geolocation Service</li> +<li>Windows Biometric Service (Required for Fingerprint logon)</li> +<li>Program Compatibility Assistant Service</li> +<li>Enterprise App Management Service</li> +</ol> + + + + Macos Sysadmin Tips + https://christitus.com/macos-sysadmin-tips/ + Mon, 14 Dec 2020 17:25:22 -0600 + + https://christitus.com/macos-sysadmin-tips/ + <p>This comes from a reader that was a Sysadmin and transitioned from Linux to MacOS because of a visual impairment.</p> +<p>He choose macOS because of it&rsquo;s screen reader and shared all these tips, which I found extremely valuable. Thank you Nik for sharing! It felt only right to share his thoughtful email with a lot of explanations that are hard to find on the net.</p> +<h2 id="launchd">launchd</h2> +<p>Launchd is Darwin/MacOS’s init system. The init portion of systemd is heavily modeled after launchd, but unlike systemd, launchd isn’t a monolithic system manager but only an init system. It&rsquo;s a relatively simple design that follows the unix philosophy. Any further functionality is implemented by daemons that can be disabled with a launchd override plist.</p> +<p>For info how to use launchd, check the man pages and read this document from the documentation archive: <a href="https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/Introduction.html">https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/Introduction.html</a></p> +<p>You might also want to take a look at the launchd source code for a deeper understanding.</p> +<p>I use Xcode’s graphical plist editor to configure daemons because I find it less annoying than editing XML with vim, but there are also light weight plist editors that don&rsquo;t require you to start big ol Xcode every time you want to change something in a daemon.</p> +<p>Job scheduling can be done either with launchd&rsquo;s native tools or with cron.</p> +<h2 id="xnu">XNU</h2> +<p>XNU is Darwin’s kernel. It has a fascinating design and I highly recommend reading the source code. It’s a hybrid kernel that uses the Mach microkernel as its foundation and adds a BSD layer derived from FreeBSD and NetBSD on top to provide UNIX functionality. They are slowly turning XNU into more of a microkernel by moving drivers into the userland.</p> +<p>The nvram utility can set bootflags. I generally run all my systems with verbose boot, and on some, I also tweak Mach scheduling. I also run a special bootflag on my (jailbroken) iPhone to keep kernel memory usage down so I can assign more memory to my phone’s needlessly complex launchd setup. You can find lists of bootflags with google, but might have to read kernel source code for the more obscure ones.</p> +<p>Kernel sources for macOS 11 have not been released yet, so I assume it is currently not possible to compile a custom kernel for the M1 due to lack of drivers, but I haven’t tried it. The documentation archive contains a detailed overview of the kernel, but some of the information is outdated by now: <a href="https://developer.apple.com/library/archive/documentation/Darwin/Conceptual/KernelProgramming/About/About.html">https://developer.apple.com/library/archive/documentation/Darwin/Conceptual/KernelProgramming/About/About.html</a></p> +<h2 id="smart-folders">Smart Folders</h2> +<p>You can save Finder searches as a so called smart folder, where the found files will be symlinked into the folder. This is useful for a lot of things, such as symlinking all files of a certain file format to the same folder, so you can have a Photos folder that will contain symlinks of all .png files on the system. The symlinks refresh automatically, so when ever you add a new .png somewhere to the filesystem, it would get symlinked to this folder.</p> +<h2 id="automator-and-folder-actions">Automator and Folder Actions</h2> +<p>You can create custom automation routines with automator. Automator also supports a variety of shell scripting languages such as Python or Bash. Automator actions can be used in a number of ways, such as an icon in your dock that runs the action on any file you drag onto it, or as a right click menu entry, or as a folder action. Folder actions bind automator scripts to folders and execute them on any file you put in the folder. You can for example combine the Bash support of Automator with ImageMagick or FFMPEG to automatically add watermarks to any photo or video you save to a specific folder.</p> +<p>Automator also supports AppleScript, which is kind of a weird and arcane language, but offers many UI automization capabilities, that I frequently bind to voice commands for disability accommodation. It also integrates voiceover&rsquo;s text-to-speech which I find incredibly useful to build notification systems for blind people. AppleScript functions can be called from Bash, so I usually just use Bash scripts and access AppleScript when I need it.</p> +<p>There is also a paid third party automization tool called Keyboard Maestro, that is supposedly better than Automator, but I don’t have any experience with it.</p> +<h2 id="package-management">Package Management</h2> +<p>Pkgutil is Darwin’s native package manager. It does not support dependency resolution, and requires manual package removal, so it should only be used for things that you don’t want to uninstall like custom kernel extensions or patches. Darwin comes with the pkgbuild utility to create installable .pkg files from a root file structure, and can even build a customizable gui installer for them.</p> +<p>My package management workflow is as follows:</p> +<p>I use macports (an implementation of the BSD Ports System) for applications that have too many dependencies to build them manually.</p> +<p>I use xbps (from void linux) to build and manage packages of unix utilities that I want to use across multiple systems. This is the one I use most. I used to use pacman, but xbps integrates git nicely, so I can just run a git server as my personal binary package repo, and pacman was too much of a headache to compile for mac, frankly. I will probably eventually transition to using macports for custom packages too, but xbps just makes it incredibly easy to build packages, and I’m already experienced with it because of void linux.</p> +<p>I use pkgutil to build packages for kexts, launchd daemons and system tweaks that I want to use across multiple systems.</p> +<p>I use a program’s included makefile for utilities that I only want to use on the system that I’m compiling them on.</p> +<p>I’ve been considering building a custom binary package manager with Swift and plists to replace this workflow, but I don’t know if I’m actually gonna do that.</p> +<h2 id="directory-structure">Directory Structure</h2> +<p>The system partition is mounted as read-only in more recent versions of macOS, but if you want to tweak lower level stuff, you can either temporarily mount the partition with write privs with the standard mount command while in recovery mode, or run ‘csrutil disable’ in the recovery mode terminal to disable read-only mounting entirely. But make sure you keep timeshift backups around if you’re gonna mess with the system partition. I do not recommend that you ‘debloat’ macOS, and instead use launchd overrides to disable things like Find My Mac. Deleted system apps will just be reinstalled during updates, and they aren’t wasting resources while they aren’t loaded, so you don’t have much to gain except a few more megabytes of ssd space.</p> +<p>Enable hidden files with command + shift + . and explore the file structure.</p> +<p>User-installed unix utilities belong in /usr/local/bin.</p> +<p>/usr/bin contains the default tools. FreeBSD’s cpuctl is included and works with the M1. This can be useful to disable all CPU cores except one of the power saving cores, as a custom ultra-low power mode on MacBooks, but there is also a boot flag to disable CPU cores. Another useful one is firmwarepasswd to password lock the bootloader. I use that + full drive encryption on devices that I take through airports. You might also want to check out diskutil and its manpage for command line partition management.</p> +<p>/Applications contains your gui apps. You can drag this folder into your dock to get a much better grid view than launchpad, or right click on it to change it to a list view, which gives you something like the Windows 98 start menu. Applications are folders that you can explore by right clicking on them in finder or with the cd command. Applications don’t need to be in the /Applications directory to be run, so you can put them on an external drive. They will not show up in launchpad or the applications list in your dock if you place them somewhere else, but you can just symlink them from an external drive to /Applications. Spotlight will still be able to find apps even if they aren’t symlinked to /Applications. The Mac version of QuickTime is pretty great btw. The windows version has nothing in common with it except the name, so give it a chance if you were put off by your experience with it on windows.</p> +<p>/Library contains settings plists and libraries. A lot can be customized here so I recommend digging around. There is also a Library folder in /System for deeper configuration, and one in your home directory for user-specific tweaks.</p> +<h2 id="window-management">Window Management</h2> +<p>I only ever use splitview for a terminal + safari combo, so I don&rsquo;t mind that it doesn&rsquo;t offer more complex tiling functionality, but there are a number of tiling window management plugins such as Yabai, amethyst or chunkwm. I don&rsquo;t have any experience with those because I was a CWM user on the *BSDs.</p> +<p>If you have a mouse with thumb buttons, I highly recommend going into System Preferences -&gt; Mission Control and binding Mission Control to Mouse 4 and Application Windows to Mouse 5. All non-mini macs ship with either a touch pad or a mouse that has a touch surface, so where you would use gestures to control window management, but since you don&rsquo;t have that, it would be good to bind it to buttons instead. Mouse 5 will show you all windows of the currently active application, and mouse 4 will show you all windows and virtual desktops. You can also set up hot corners to emulate Gnome and KDE&rsquo;s window management.</p> +<h2 id="safari-adblocking">Safari Adblocking</h2> +<p>I need to use Safari because it&rsquo;s the only browser with proper screen reader support. I like it over all for its performance, memory and battery efficiency, but an annoying issue is that there are no good adblockers for it because it restricts the level of access that extensions have to your traffic. AdGuard (not on the App Store) is a pretty decent alternative that works not only on MacOS but also Android and iOS and blocks ads systemwide, but a pihole would work too. I also run Little Snitch (also not on the App Store) for traffic monitoring.</p> + + + + 2020 Buyers Guide + https://christitus.com/2020-buyers-guide/ + Fri, 20 Nov 2020 13:46:56 -0600 + + https://christitus.com/2020-buyers-guide/ + <p>Looking for a Tech Gift this holiday season? Here are the things I have my eye on and are worth considering.</p> +<h2 id="amazon-fire-tablet">Amazon Fire Tablet</h2> +<ul> +<li>7&quot; <a href="https://amzn.to/2UzZZ8T">https://amzn.to/2UzZZ8T</a></li> +<li>10&quot; <a href="https://amzn.to/35H7Yax">https://amzn.to/35H7Yax</a></li> +</ul> +<p><img src="https://christitus.com/images/2020/buyers-guide/debloat-fire.jpg" alt="Debloat-Fire"></p> +<p>Video Overview on how to debloat: <a href="https://youtu.be/yLoymK65dJE">https://youtu.be/yLoymK65dJE</a></p> +<h2 id="cell-phones">Cell Phones</h2> +<p><img src="https://christitus.com/images/2020/buyers-guide/cellphones.jpg" alt="Cellphones"></p> +<ul> +<li>Google 4a - $350 - <a href="https://amzn.to/2IKfTLr">https://amzn.to/2IKfTLr</a></li> +<li>PinePhone - $200 - <a href="https://www.pine64.org/pinephone/">https://www.pine64.org/pinephone/</a></li> +<li>XDA Pro1-X - $639 - <a href="https://www.indiegogo.com/projects/pro1-x-smartphone-functionality-choice-control">https://www.indiegogo.com/projects/pro1-x-smartphone-functionality-choice-control</a></li> +</ul> +<p>Both PinePhone and XDA Pro1-X are Linux phones and may not be practical for everyday use unless you load Lineage or a solid mobile OS on it, but man are they fun to play with.</p> +<p>Google 4a is the practical choice and is a rock solid phone that comes unlocked to where you can wipe out Google and move to Lineage for those security and privacy oriented folks. This is the best value in my opinion.</p> +<h2 id="monitors">Monitors</h2> +<p><img src="https://christitus.com/images/2020/buyers-guide/monitors.jpg" alt="Monitors"></p> +<ul> +<li>Cheap Spectre Monitors - <a href="https://amzn.to/3pxmv0l">https://amzn.to/3pxmv0l</a> - <em>Prices range from $80 to $250</em></li> +<li>BenQ High-End Monitors - <a href="https://amzn.to/2K9wxV0">https://amzn.to/2K9wxV0</a> - <em>Prices range from $300 to $450</em></li> +<li>Current Gaming Monitor Pick - BenQ ZOWIE 24&quot; 144Hz - $199 - <a href="https://amzn.to/32VJ05h">https://amzn.to/32VJ05h</a></li> +</ul> +<h2 id="peripherals">Peripherals</h2> +<p><img src="https://christitus.com/images/2020/buyers-guide/razer.jpg" alt="Razer"></p> +<ul> +<li>Razer Cynosa Lite - $40 - <a href="https://amzn.to/3f6ZfS1">https://amzn.to/3f6ZfS1</a></li> +<li>Razer DeathAdder Essential Mouse - $30 - <a href="https://amzn.to/3lGFAe9">https://amzn.to/3lGFAe9</a></li> +</ul> +<p>Why Razer? Did they pay me or something? <em>Nope!</em><br> +Razer has a bunch of cool features, but also has a great open source project called OpenRazer <a href="https://openrazer.github.io/">https://openrazer.github.io/</a> for any operating system. You can do all kinds of fun macros with them and I picked these two above because they are rather quiet and I hate noise. Most people would prefer a full mechanical and if you are interested in this check out the project above and pick a compatible device for your needs!</p> +<h3 id="logitech-options">Logitech Options</h3> +<ul> +<li>MK545 Keyboard and Mouse Combo from Logitech - $50 - <a href="https://amzn.to/3pEPSxO">https://amzn.to/3pEPSxO</a></li> +</ul> +<h4 id="3-device-switching-keyboard-and-mouse">3 Device Switching Keyboard and Mouse</h4> +<ul> +<li>M720 Logitech M720 Wireless Triathlon Mouse $30 - <a href="https://amzn.to/3fseOUu">https://amzn.to/3fseOUu</a></li> +<li>Logitech K780 Multi-Device Wireless Keyboard $100 - <a href="https://amzn.to/33bKBUO">https://amzn.to/33bKBUO</a></li> +</ul> +<h2 id="tituspi">TitusPi</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/wyvS1FxR4ic" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + +<ul> +<li>Raspberry Pi 4 8GB Kit - $105 - <a href="https://amzn.to/2K7CuBR">https://amzn.to/2K7CuBR</a></li> +<li>Raspberry Pi 4 Image - $5 - <a href="https://www.cttstore.com/tituspi">https://www.cttstore.com/tituspi</a> OR Build it yourself <a href="https://github.com/ChrisTitusTech/TitusPi">https://github.com/ChrisTitusTech/TitusPi</a></li> +</ul> +<h2 id="audiovideo-production-stuff">Audio/Video Production Stuff</h2> +<p>Here is Equipment I use for A/V and recommend to others. Below is a video going over my entire studio setup, but I left out the impractical gear that many wouldn&rsquo;t want.</p> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/cuBay8QzYH4" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + +<ul> +<li>Camera - M200 - $550 - <a href="https://amzn.to/32T9qEU">https://amzn.to/32T9qEU</a></li> +<li>Camera Lens - Canon 22M 2.0 - $200 - <a href="https://amzn.to/3pzW0r0">https://amzn.to/3pzW0r0</a></li> +<li>Microphone - Rode VideoMicro - $60 - <a href="https://amzn.to/2IBn093">https://amzn.to/2IBn093</a></li> +<li>Capture Card - Magewell - $900 - <a href="https://amzn.to/3pFZiZJ">https://amzn.to/3pFZiZJ</a></li> +<li>StreamDeck - Button Macros - $150 - <a href="https://amzn.to/38SiJsk">https://amzn.to/38SiJsk</a> +<ul> +<li>Streamdeck_ui Open Source Project <a href="https://timothycrosley.github.io/streamdeck-ui/">https://timothycrosley.github.io/streamdeck-ui/</a></li> +</ul> +</li> +<li>Microphone Standalone - Shure MV7 - $250 - <a href="https://amzn.to/3kGstbi">https://amzn.to/3kGstbi</a></li> +</ul> +<h2 id="computers-and-graphics-cards">Computers and Graphics Cards</h2> +<p><img src="https://christitus.com/images/2020/buyers-guide/outofstock.jpg" alt="OutofStock"></p> +<p>Good Luck! All the stock out there is way out of date and any of the new hotness is Out of Stock. Wait til 2021!</p> +<p>But&hellip; If you want to see something cool for a laptop in 2020, check out this &ldquo;little&rdquo; machine. <a href="https://kfocus.org/">https://kfocus.org/</a> #NotSponsored</p> + + + + Linux MacOS + https://christitus.com/linux-macos/ + Mon, 05 Oct 2020 13:03:31 -0500 + + https://christitus.com/linux-macos/ + <p>This Project is to make Ubuntu and other derivative distributions (Mint, PopOS, etc.) look like MacOS. <em>Version 20+ is required</em></p> +<p><em>Source Files in this project</em></p> +<ul> +<li><a href="https://www.gnome-look.org/p/1148692/">https://www.gnome-look.org/p/1148692/</a> - Capitine Cursors</li> +<li><a href="https://www.pling.com/p/1403328/">https://www.pling.com/p/1403328/</a> - WhiteSur GTK Theme</li> +<li><a href="https://www.pling.com/p/1399044/">https://www.pling.com/p/1399044/</a> - BigSur Icon Theme</li> +<li><a href="https://github.com/PRATAP-KUMAR/focalgdm3">https://github.com/PRATAP-KUMAR/focalgdm3</a> - Login Theme</li> +<li><a href="https://albertlauncher.github.io/docs/installing/">https://albertlauncher.github.io/docs/installing/</a> - Albert</li> +<li><a href="https://www.pling.com/p/1401527/">https://www.pling.com/p/1401527/</a> - Cairo Dock</li> +</ul> +<h2 id="installation">Installation</h2> +<h3 id="dependency-installs">Dependency Installs</h3> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo apt install git gnome-shell-extensions chrome-gnome-shell gnome-tweak-tool -y +</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">git clone https://github.com/ChrisTitusTech/Linux-MacOS-GNOME.git ~/MacOS +</span></span><span class="line"><span class="cl">mkdir ~/.themes +</span></span><span class="line"><span class="cl">mkdir ~/.icons +</span></span><span class="line"><span class="cl">mv ~/MacOS/themes/* ~/.themes +</span></span><span class="line"><span class="cl">mv ~/MacOS/icons/* ~/.icons +</span></span><span class="line"><span class="cl">sudo mv ~/MacOS/walls/* /usr/share/backgrounds/ +</span></span></code></pre></div><h3 id="gnome-tweaks">Gnome Tweaks</h3> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">gsettings set org.gnome.mutter center-new-windows &#39;true&#39; +</span></span><span class="line"><span class="cl">gsettings set org.gnome.desktop.wm.preferences button-layout &#39;close,minimize,maximize:&#39; +</span></span><span class="line"><span class="cl">gsettings set org.gnome.desktop.interface gtk-theme &#34;WhiteSur-dark&#34; +</span></span><span class="line"><span class="cl">gsettings set org.gnome.desktop.wm.preferences theme &#34;WhiteSur-dark&#34; +</span></span><span class="line"><span class="cl">gsettings set org.gnome.desktop.interface icon-theme &#39;BigSur&#39; +</span></span><span class="line"><span class="cl">gsettings set org.gnome.desktop.interface cursor-theme &#39;capitaine-cursors-light&#39; +</span></span><span class="line"><span class="cl">gsettings set org.gnome.desktop.background picture-uri &#39;file:///usr/share/backgrounds/macOS-BS3.jpg&#39; +</span></span><span class="line"><span class="cl">gsettings get org.gnome.desktop.screensaver picture-uri &#39;file:///usr/share/backgrounds/macOS-BS1.jpg&#39; +</span></span></code></pre></div><h3 id="albert-search-and-cairo-dock">Albert Search and Cairo Dock</h3> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">curl https://build.opensuse.org/projects/home:manuelschneid3r/public_key | sudo apt-key add - +</span></span><span class="line"><span class="cl">echo &#39;deb http://download.opensuse.org/repositories/home:/manuelschneid3r/xUbuntu_20.04/ /&#39; | sudo tee /etc/apt/sources.list.d/home:manuelschneid3r.list +</span></span><span class="line"><span class="cl">sudo wget -nv https://download.opensuse.org/repositories/home:manuelschneid3r/xUbuntu_20.04/Release.key -O &#34;/etc/apt/trusted.gpg.d/home:manuelschneid3r.asc&#34; +</span></span><span class="line"><span class="cl">sudo apt update +</span></span><span class="line"><span class="cl">sudo apt install albert cairo-dock cairo-dock-plug-ins -y +</span></span></code></pre></div><ul> +<li>Launch Albert</li> +<li>Set Hotkey - Meta + F</li> +<li>Set Theme Arc Dark Blue</li> +<li>Enable Albert Extensions</li> +</ul> +<h3 id="gnome-extensions">Gnome Extensions</h3> +<p>Enable Extensions by visiting <a href="https://extensions.gnome.org/">https://extensions.gnome.org/</a> install add-on and reload browser</p> +<p>Install the Following Extensions</p> +<ul> +<li>User Themes - <a href="https://extensions.gnome.org/extension/19/user-themes/">https://extensions.gnome.org/extension/19/user-themes/</a></li> +<li>Frippery Move Clock - <a href="https://extensions.gnome.org/extension/2/move-clock/">https://extensions.gnome.org/extension/2/move-clock/</a></li> +<li>Dynamic Panel Transparency - <a href="https://extensions.gnome.org/extension/1011/dynamic-panel-transparency/">https://extensions.gnome.org/extension/1011/dynamic-panel-transparency/</a></li> +<li>Panel OSD - <a href="https://extensions.gnome.org/extension/708/panel-osd/">https://extensions.gnome.org/extension/708/panel-osd/</a></li> +</ul> +<h3 id="manual-extension-configurations">Manual Extension Configurations</h3> +<ul> +<li>Panel OSD - Change Horizontal and Vertical to 98</li> +<li>Cairo Dock - Set to Startup Applications</li> +<li>Cairo Dock Themes - Import all gz files to Cairo configure in ~/MacOS/cairo</li> +<li>Cairo Dock Configure - Turn of Icon effects and animations and hide dock when overlapping windows</li> +<li>Cairo Dock Launchpad - Add Custom Launchpad Shortcut <code>dbus-send --session --type=method_call --dest=org.gnome.Shell /org/gnome/Shell org.gnome.Shell.Eval string:'Main.shellDBusService.ShowApplications();'</code></li> +<li>Disable Ubuntu Dock (Not Needed on PopOS)</li> +<li>Dynamic Panel Transparency - Background Tab - Max Opacity 100 - Min Opacity 50</li> +</ul> + + + + Disable Snaps + https://christitus.com/disable-snaps/ + Tue, 08 Sep 2020 13:44:58 -0500 + + https://christitus.com/disable-snaps/ + <p>This goes over how to Disable Snaps and making sure it doesn&rsquo;t automatically reinstall.</p> +<h2 id="list-and-uninstall-snaps">List and Uninstall Snaps</h2> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">snap list # This shows you what snaps are installed +</span></span><span class="line"><span class="cl">sudo snap remove program # Fill in all snaps listed above +</span></span></code></pre></div><h2 id="purge-snaps-and-block-reinstall">Purge Snaps and Block Reinstall</h2> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo apt purge snapd +</span></span><span class="line"><span class="cl">sudo apt-mark hold snapd +</span></span></code></pre></div><h2 id="verify-uninstall">Verify Uninstall</h2> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">apt list --install | grep snap +</span></span></code></pre></div><p>Check your Output for any snap packages</p> + + + + Everything You Need to Know About Crypto + https://christitus.com/crypto/ + Thu, 03 Sep 2020 11:33:12 -0500 + + https://christitus.com/crypto/ + <p>This article goes over everything you need to know about crypto in 2020.</p> +<p><img src="https://christitus.com/images/crypto/coins.png" alt="coins"></p> +<h2 id="what-is-it-and-practical-application">What is it and Practical Application</h2> +<p>Cryptocurrency is a set of different projects like Bitcoin or Ethereum that are decentralized and have billions of dollars tied up in them. They are wildly volatile speculative assets that&rsquo;s valuation will swing wildly from one moment to the next. However, This article isn&rsquo;t about how much its worth or how much it will be worth. This is about it&rsquo;s practical application and how it will change the world we live in. Just by having this knowledge you will be able to profit and be ready for that future.</p> +<p>Practical application of crypto is all over our society today. Many banks are using it, and wealthy individuals are utilizing it. Here are the ways it is used today:</p> +<ul> +<li>International Bank transfers (Ripple) - Long wire delays and intermediary banking is becoming a relic of the past. Banks can leverage it to make trustless transfers between banks in seconds around the world.</li> +<li>International Money Transfers (Bitcoin) - Want to send money to a relative in a different nation? Well using Bitcoin is probably the easiest way to get this done with almost no fees. You could send $1000 for less than $1 fee.</li> +<li>Banking Replacement (Yield Farming) - Some companies are providing loans and holding crypto while passing along a profits to those holding crypto with them. Think of a savings account on steroids or collateral loans.</li> +<li>Synthetic Assets (Synthetix) - What to trade Apple stock, gold, or other assets that exist? Sythetic assets are tracked using the blockchain and traded either for the said asset or for the dollar amount the asset is worth.</li> +<li>Send Private Transactions (Monero) - Send money between two entities completely that is completely private. <em>Please note: Bitcoin and other projects are actively tracked, while some are still privacy oriented, much like physical cash.</em></li> +<li>Insurance, Data Backup, and all kinds of data that you will always want a ledger of.</li> +</ul> +<p><img src="https://christitus.com/images/crypto/wallet.png" alt="wallet"></p> +<h2 id="how-to-store-crypto">How to Store Crypto</h2> +<p>There are two ways of thinking about storing crypto. You can either hold it all yourself or you can use a custodian where you rely on a company to hold it for you, much like a bank. Let&rsquo;s address both ways:</p> +<h3 id="storing-crypto-in-your-wallet">Storing Crypto in Your Wallet</h3> +<p>There are digital wallets where you can safely store your crypto and access it. They come in two types with different pros and cons.</p> +<h4 id="hot-wallets">Hot Wallets</h4> +<p>Hot wallets refer to software that runs on your computer with a password that protects the crypto.</p> +<p>Pros:</p> +<ul> +<li>Convenient</li> +<li>Quick Access</li> +<li>Fast exchanges</li> +</ul> +<p>Cons:</p> +<ul> +<li>Security: Computer compromised or Private key theft</li> +<li>Backups: If you lose your password or misplace your keys/seed&hellip; there is no recovery.</li> +</ul> +<p>Recommended Wallets:</p> +<ul> +<li>(Desktop &amp; Mobile) Exodus <a href="https://www.exodus.io">https://www.exodus.io</a> +<img src="https://christitus.com/images/crypto/exodus.png" alt="exodus"></li> +<li>Other advanced wallets I&rsquo;d recommend come from the official projects or opensource on github.com</li> +</ul> +<h4 id="cold-wallets">Cold Wallets</h4> +<p>Cold wallets refer to hardware that hides the keys so the computer never sees them, but you authorize transactions on the device itself.</p> +<p>Pros:</p> +<ul> +<li>Secure</li> +<li>Transfers take place on isolated device</li> +</ul> +<p>Cons:</p> +<ul> +<li>Not as Quick</li> +<li>If you misplace your device, you can only recover things through a seed (phrase written on paper)</li> +<li>Backups: If you misplace both the seed and device&hellip; everything is gone</li> +</ul> +<p>Recommended Wallets:</p> +<ul> +<li><img src="https://christitus.com/images/crypto/ledger.png" alt="ledger"> Ledger <a href="https://www.ledger.com">https://www.ledger.com</a></li> +<li><img src="https://christitus.com/images/crypto/trezor.png" alt="trezor"> Trezor <a href="https://trezor.io">https://trezor.io</a></li> +</ul> +<h3 id="storing-crypto-with-a-custodian">Storing Crypto with a Custodian</h3> +<p>These are companies that you are sending your money to for safe keeping, much like a bank. They can be insured, but none of them are federally insured like a traditional bank account. I lump these companies into three categories, on and off ramps, exchanges, and yield farmers. Here are my take and recommendations on each of these. <em>Note: I like to use companies in my local country for regulatory reasons and safety</em></p> +<h4 id="on-and-off-ramp-companies">On and Off Ramp Companies</h4> +<p><img src="https://christitus.com/images/crypto/coinbase.jpg" alt="coinbase"></p> +<p>Companies like Coinbase or Gemini are the two I use often. These companies are based in the United States and you can link your bank account to them to transfer Crypto to Dollar directly into your checking account. The fees are high and they should only be used for the purpose. While they do offer other services, it will be at a premium. <em>Please Note: DO NOT use credit cards to purchase crypto! You will have exorbitant fees and it is NOT worth it!</em><br> +I don&rsquo;t recommend storing money here, but they do have a good track record. If you only want to hold crypto and do nothing with it, then it is relatively safe with these institutions.</p> +<p>Coinbase Referral Link: <a href="https://christitus.com/coinbase">https://christitus.com/coinbase</a> +Gemini Referral Link: <a href="https://christitus.com/gemini">https://christitus.com/gemini</a></p> +<h4 id="exchanges">Exchanges</h4> +<p><img src="https://christitus.com/images/crypto/bittrex.jpg" alt="bittrex"></p> +<p>These companies are all over the place. The two I like the most are Bittrex(US) and Binance(Japan). They are the juggernauts in the space and when making crypto to crypto transfers they have the most options with the lowest fees. Many exchanges have been hacked over the years, so I don&rsquo;t store any money here, but use it to exchange crypto. A good example is using Bittrex to transfer LBC tokens to ETH or BTC.<br> +You don&rsquo;t have to use a company to exchange crypto, as you can use a decentralized exchange like Uniswap, but the fees are typically more. However, the convenience of not having to register with a form of ID is nice. Other exchange services like Uniswap exist but are centralized, examples are Simpleswap and Shapeshift, but they are starting to require ID (KYC Compliance) as well.<br> +<em>TLDR:</em> Don&rsquo;t store money here, but use it to exchange out one currency for another</p> +<p>Bittrex Referral Code: 4KR-KYJ-BQG</p> +<h4 id="yield-companies">Yield Companies</h4> +<p><em>2022 Update:</em> Do NOT use them. Celsius, Voyager Digital, and many others have proven that this method is not only extremely risky, but possibly fraudulent. Be skeptical on any companies that is promising returns by holding assets with them in crypto.</p> +<h2 id="mining-crypto-using-a-graphics-card">Mining Crypto Using a Graphics Card</h2> +<p><img src="https://christitus.com/images/crypto/mining.jpg" alt="mining"></p> +<p>With the DeFi explosion and transaction fees going sky high we can make a profile with a good graphics card. Ethereum will be transitioning to Proof of Stake which means mining it with a graphics card will not be feasible sometime in 2021. However, until that time if interest stay the same or increases, mining will be profitable. Here is how I recommend mining during this time with just a single or small graphics card setup.</p> +<p>Profitability:</p> +<ul> +<li>Check <a href="https://ethgasstation.info">https://ethgasstation.info</a> and if standard GWEI fee is over 100 then chances are you will be profitable</li> +<li>Check <a href="https://whattomine.com">https://whattomine.com</a> and see current daily payouts based on your graphics cards</li> +<li>Again&hellip; Do NOT buy tons of equipment. This will dry up in the next year and will NOT make money</li> +</ul> +<p>Basic Mining Process:</p> +<ol> +<li>Setup a Wallet using Exodus.io</li> +<li>Setup an account with Mining Pool Hub</li> +<li>Use a LTC Wallet Address from Exodus and Setup Auto-Exchange to Litecoin in Mining pool hub</li> +<li>Install PhoenixMiner 5.1c - <a href="https://bitcointalk.org/index.php?topic=2647654.0">Forum Post</a></li> +<li>Use the string for PhoenixMiner @ <a href="https://ethereum.miningpoolhub.com">https://ethereum.miningpoolhub.com</a></li> +<li>LTC will be autoexchange and withdrawn to your Exodus Wallet +<em>Note: Make sure to setup the Auto Withdrawl feature when setting up AutoExchange</em><br> +<em>Note 2: Litecoin is used for minimal fees and fast transactions</em></li> +</ol> +<p>I highly recommend <a href="https://minerstat.com">https://minerstat.com</a> for using a dedicated machine for mining. This will ensure maximum uptime and reliability.</p> + + + + How to Use SSH with Github + https://christitus.com/ssh-github/ + Thu, 03 Sep 2020 10:57:46 -0500 + + https://christitus.com/ssh-github/ + <p>Setting Up SSH Authentication with GitHub for Secure Access with 2FA GitHub Accounts</p> +<p><img src="https://christitus.com/images/ssh.png" alt="ssh"></p> +<h2 id="creating-ssh-keys">Creating SSH Keys</h2> +<p>Type this in to create GitHub Keys for your computer</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">ssh-keygen -t rsa -b 4096 -C &#34;your_email@example.com&#34; +</span></span></code></pre></div><p>Notes:</p> +<ul> +<li>I typically save this in ~/.ssh/github</li> +<li>You don&rsquo;t have to put a password if you aren&rsquo;t worried about security</li> +</ul> +<h2 id="adding-the-new-key-to-github-and-local-ssh-agent">Adding the New Key to GitHub and Local SSH-Agent</h2> +<p>Type the following on the local machine to add your key to the agent.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">eval &#34;$(ssh-agent -s)&#34; +</span></span><span class="line"><span class="cl">ssh-add ~/.ssh/github +</span></span></code></pre></div><p>Copy the contents of <code>~/.ssh/github.pub</code> to the new key field in GitHub. If you have xclip installed type this <code>cat ~/.ssh/github.pub | xclip -sel clip</code> to copy the contents.</p> +<p><img src="https://christitus.com/images/2020/github-ssh.jpg" alt="github-pub"></p> +<h2 id="test-github-ssh-access">Test GitHub SSH Access</h2> +<p>Type the following to verify you have completed the setup properly</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">ssh -T git@github.com +</span></span></code></pre></div><h2 id="ssh-github-clone-syntax-and-updating-repositories">SSH GitHub Clone Syntax and Updating Repositories</h2> +<p>Here is how to clone new repositories instead of using https://</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">git clone git@github.com:USERNAME/Repo.git +</span></span></code></pre></div><p>Update existing repositories to use SSH instead of https</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">git remote set-url origin git@github.com:USERNAME/Repo.git +</span></span></code></pre></div><h2 id="conclusion">Conclusion</h2> +<p>This is the best way to clone and push updates to repositories if you have 2-Factor enabled on your GitHub account.</p> + + + + Common Computer Issues + https://christitus.com/common-computer-issues/ + Fri, 28 Aug 2020 05:42:25 -0500 + + https://christitus.com/common-computer-issues/ + <p>These are all the issues we discussed on a live stream. I took all the community questions and made this webpage for them.</p> +<h2 id="windows-10---automated-tasks">Windows 10 - Automated Tasks</h2> +<p>Q: How can I make a YouTube video sit there paused on someone&rsquo;s screen in Windows 10 and instantly start playing aloud upon unlocking the screen/waking from sleep?</p> +<p>A: Task Scheduler can do all sorts of tasks and you can set the triggers to be on login or at certain times of the day.</p> +<h2 id="linux---display-issues">Linux - Display Issues</h2> +<p>Solution for Display constantly resetting or getting incorrectly configured</p> +<p>3 Solutions (All will work)</p> +<ul> +<li>Xorg Custom Settings +<ul> +<li>When display render is launched it will automatically configure each display to these specification from <code>/etc/X11/xorg.conf.d/10-monitor.conf</code></li> +</ul> +</li> +</ul> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl"># /etc/X11/xorg.conf.d/10-monitor.conf +</span></span><span class="line"><span class="cl">Section &#34;Monitor&#34; +</span></span><span class="line"><span class="cl">### Monitor Identity - Typically HDMI-0 or DisplayPort-0 +</span></span><span class="line"><span class="cl"> Identifier &#34;HDMI1&#34; +</span></span><span class="line"><span class="cl"> Option &#34;PreferredMode&#34; &#34;1920x1080&#34; +</span></span><span class="line"><span class="cl"> Option &#34;TargetRefresh&#34; &#34;60&#34; +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl">### Positioning the Monitor +</span></span><span class="line"><span class="cl">## Basic +</span></span><span class="line"><span class="cl"> Option &#34;LeftOf or RightOf or Above or Below&#34; &#34;DisplayPort-0&#34; +</span></span><span class="line"><span class="cl">## Advanced +</span></span><span class="line"><span class="cl"> Option &#34;Position&#34; &#34;1680 0&#34; #Note you can always set both to 0 0 to mirror +</span></span><span class="line"><span class="cl">## Disable a Monitor +</span></span><span class="line"><span class="cl"> Option &#34;Disable&#34; &#34;true&#34; +</span></span><span class="line"><span class="cl">EndSection +</span></span></code></pre></div><ul> +<li>Autorandr - Automatic monitor settings +<ul> +<li><a href="https://github.com/phillipberndt/autorandr">https://github.com/phillipberndt/autorandr</a> - This automatically selects a display configuration based on connected devices</li> +</ul> +</li> +<li>Xrandr Script +<ul> +<li>Make a custom bash script and set with login manager, cron job, or set in <code>~/.xinitrc</code></li> +</ul> +</li> +</ul> +<p>Sample xrandr script:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="cp">#!/bin/bash +</span></span></span><span class="line"><span class="cl"><span class="cp"></span>xrandr --output HDMI-1 --off --output HDMI-2 --auto +</span></span></code></pre></div><p><em>Note: You can use the tool <em>arandr</em> to grab the proper display script</em></p> +<h2 id="windowslinuxmacos---flashing-images-to-sd-card-or-usb">Windows/Linux/MacOS - Flashing Images to SD-Card or USB</h2> +<p>There are so many solutions for this one:</p> +<ul> +<li>Windows - Rufus (<a href="https://rufus.ie">https://rufus.ie</a>)</li> +<li>Windows/Linux/Mac - Etcher (<a href="https://www.balena.io/etcher/">https://www.balena.io/etcher/</a>)</li> +<li>Linux/Mac - <code>dd</code> terminal command +<ul> +<li><code>dd if=~/Downloads/image.iso of=/dev/sdx bs=1M</code></li> +<li>if = input file/device | of= output file/device | bs= block size</li> +</ul> +</li> +<li>Windows - Win32 Disk Imager <a href="https://sourceforge.net/projects/win32diskimager/">https://sourceforge.net/projects/win32diskimager/</a> +<ul> +<li>for images that aren&rsquo;t working or using special media like sd cards</li> +</ul> +</li> +</ul> +<h2 id="linux---boot-time-high-for-kde">Linux - Boot Time High for KDE</h2> +<p>Analyze systemd and figure out why&hellip; (<code>systemd-analyze</code>)</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">systemd-analyze blame +</span></span><span class="line"><span class="cl"> 10.667s apt-daily.service +</span></span><span class="line"><span class="cl"> 1.127s apt-daily-upgrade.service +</span></span><span class="line"><span class="cl"> 1.053s dev-mapper-neon\x2d\x2dvg\x2droot.device +</span></span><span class="line"><span class="cl"> 793ms lvm2-pvscan@8:3.service +</span></span><span class="line"><span class="cl"> 622ms boot.mount +</span></span><span class="line"><span class="cl"> 613ms snapd.service +</span></span><span class="line"><span class="cl"> 267ms minidlna.service +</span></span><span class="line"><span class="cl"> 217ms NetworkManager.service +</span></span><span class="line"><span class="cl"> 200ms nvidia-persistenced.service +</span></span><span class="line"><span class="cl"> 196ms upower.service +</span></span><span class="line"><span class="cl"> 189ms systemd-logind.service +</span></span></code></pre></div><p><em>Note: Also try <code>systemd-analyze critical-chain</code> or <code>systemd-analyze plot &gt; boot.svg</code> as this shows the chain of the startup</em></p> +<h2 id="linux---usb-port-stops-working">Linux - USB Port stops working</h2> +<ul> +<li>Check to see if device shows on <code>lsusb</code></li> +<li>Check dmesg for errors <code>dmesg | grep -i USB</code></li> +<li>Run <code>usb-devices</code></li> +<li>Disable Auto Suspend +<ul> +<li><code>cat /sys/module/usbcore/parameters/autosuspend</code> result should be <code>2</code> which means enabled</li> +<li>Modify Grub or bootloader to disable auto suspend (for grub modify <code>/etc/default/grub</code>) +<ul> +<li><code>GRUB_CMDLINE_LINUX_DEFAULT=&quot;quiet splash usbcore.autosuspend=-1&quot;</code></li> +<li><code>sudo update-grub</code></li> +</ul> +</li> +<li>Verify by running cat command again</li> +</ul> +</li> +</ul> +<h2 id="linux---fixing-no-display-drivers-or-black-screen-or-missing-desktop-environment">Linux - Fixing No Display Drivers or Black Screen or Missing Desktop Environment</h2> +<p>Ctrl + Alt + F1 or F2</p> +<p>This drops you to TTY and no display drivers are needed. From this console you can fix things by installing display drivers or missing packages you need.</p> +<h2 id="all-computers---cant-get-into-bios">All Computers - Can&rsquo;t Get into BIOS</h2> +<p>Open it up and remove the CMOS Battery. Press the power button without it plugged in to fully discharge. Then wait 60 seconds and put CMOS battery back in.</p> +<h2 id="general-pc-maintenance---updates--shuting-them-down">General PC Maintenance - Updates &amp; Shuting them down</h2> +<p>Updates should be done weekly with security only one applied. Feature Updates should be delayed at least 1 year. This is universal across all operating systems. I also recommend shutting down your PC every day and not using suspend/hibernate. If you want to schedule the updates you can leave your PC once a week overnight.</p> +<h2 id="windowslinux---time-maintenance">Windows/Linux - Time Maintenance</h2> +<p>You should use UTC time everywhere. Windows uses local time and it is terrible. Change this with a registry setting</p> +<ul> +<li>Disable Internet Time on Windows 10 +<ul> +<li>Head to Settings &gt; Time &amp; language and disable “Set time automatically”.</li> +</ul> +</li> +<li>Modify Windows Registry to use UTC +<ul> +<li>Start - Run - <code>regedit</code></li> +<li>Navigate to <code>HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation</code></li> +<li>Create new DWORD (32-bit) Value <code>RealTimeIsUniversal</code></li> +<li>Set Value to <code>1</code></li> +</ul> +</li> +<li>You can also use REG files from this project <a href="https://github.com/ChrisTitusTech/Windows-10-UTC">https://github.com/ChrisTitusTech/Windows-10-UTC</a> if you don&rsquo;t want to manually edit registry</li> +</ul> +<h2 id="macos---opencore-and-safety">MacOS - OpenCore and Safety</h2> +<p>Opencore is a completely open project and is safe. Here is the github of OpenCore where they expose all their code for review <a href="https://github.com/acidanthera/OpenCorePkg">https://github.com/acidanthera/OpenCorePkg</a> and the complete install guide is here <a href="https://dortania.github.io/OpenCore-Install-Guide/">https://dortania.github.io/OpenCore-Install-Guide/</a></p> +<h2 id="linux-battery-life-and-laptop-heat">Linux Battery Life and Laptop Heat</h2> +<p>There are a variety of packages you can use, but highly suggest two:</p> +<ul> +<li>tlp</li> +<li>xfce4-power-manager</li> +</ul> +<p>TLP will throttle your CPU and use less power and XFCE power manager will take care of brightness, suspend, and other power saving features as a standalone package even if you aren&rsquo;t using XFCE as a desktop environment.</p> +<h2 id="macos---opencore-audio-issues">MacOS - OpenCore Audio Issues</h2> +<p>This typically comes from using two codecs or the wrong one. <em>Use ONLY ONE!</em></p> +<ul> +<li>AppleALC - <a href="https://github.com/acidanthera/AppleALC">https://github.com/acidanthera/AppleALC</a></li> +<li>VoodooHDA - <a href="https://sourceforge.net/projects/voodoohda/">https://sourceforge.net/projects/voodoohda/</a></li> +</ul> +<h2 id="linux---app-wont-launch-it-just-disappears">Linux - App won&rsquo;t launch it just disappears&hellip;</h2> +<p>Run Application in Terminal and look at the errors. Chances are it is missing a dependency.</p> +<h2 id="windows---these-settings-are-managed-by-your-organization">Windows - &ldquo;these settings are managed by your organization&rdquo;</h2> +<p>Chances are you ran a powershell script (maybe mine&hellip;) and you are now locked out of changing the lock screen on your Windows Box. Run this command in powershell to gain control of your lock screen again:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Remove-ItemProperty -Path &#34;HKLM:\SOFTWARE\Policies\Microsoft\Windows\Personalization&#34; -Name &#34;NoLockScreen&#34; -ErrorAction SilentlyContinue +</span></span></code></pre></div><p>OR</p> +<p>You can also open up Start - Run - <code>gpedit.msc</code> and then go to All Settings and look for enabled features and set them to <em>Not Configured</em></p> +<h2 id="windows---reinstall-onedrive">Windows - Reinstall OneDrive</h2> +<p>Open Up PowerShell Admin (Right Click Start Button)</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">%systemroot%\SysWOW64\OneDriveSetup.exe +</span></span></code></pre></div> + + + + Fix Ticwatch Lag + https://christitus.com/fix-ticwatch-lag/ + Thu, 27 Aug 2020 09:49:33 -0500 + + https://christitus.com/fix-ticwatch-lag/ + <p>Lets fix the lag on the TicWatch. There is tons of bloat that needs to be removed to get a responsive interface.</p> +<h2 id="requirements">Requirements</h2> +<ul> +<li> +<p>Install ADB Tools</p> +<ul> +<li>Windows - <a href="https://dl.google.com/android/repository/platform-tools-latest-windows.zip">https://dl.google.com/android/repository/platform-tools-latest-windows.zip</a> or <code>choco install adb</code> <em>Chocolatey Users Only</em></li> +<li>Linux - <a href="https://dl.google.com/android/repository/platform-tools-latest-linux.zip">https://dl.google.com/android/repository/platform-tools-latest-linux.zip</a> or <code>sudo apt install adb</code> Debian or <code>yay -S adb</code> Arch</li> +<li>MacOS - <a href="https://dl.google.com/android/repository/platform-tools-latest-darwin.zip">https://dl.google.com/android/repository/platform-tools-latest-darwin.zip</a></li> +</ul> +</li> +<li> +<p>Enable Developer Tools on TicWatch</p> +<ul> +<li>Under settings - Click About</li> +<li>Click the Build number 7 times to enable developer tools</li> +</ul> +</li> +<li> +<p>Enable Wi-fi Debugging in Developer Tools</p> +<ul> +<li>Under settings - Click Developer Tools +<ul> +<li>Enable ADB Debugging</li> +<li>Enable ADB Debugging Wi-fi</li> +</ul> +</li> +</ul> +</li> +</ul> +<h4 id="note-ensure-both-the-watch-and-computer-are-on-the-same-wifi-network">Note: Ensure both the Watch and Computer are on the same Wifi network</h4> +<h2 id="removing-ticwatch-bloat">Removing TicWatch Bloat</h2> +<p>This removes all the mobvoi crap that is junking up your watch.</p> +<ul> +<li>Connect to your watch +<ul> +<li><code>adb connect IP_ADDRESS:5555</code></li> +</ul> +</li> +<li>Check Devices +<ul> +<li><code>adb devices</code></li> +<li><em>Verify you see your watch!</em></li> +</ul> +</li> +<li>Run the following commands to remove all the bloat:</li> +</ul> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">adb shell +</span></span><span class="line"><span class="cl">pm uninstall -k --user 0 com.mobvoi.wear.account.aw +</span></span><span class="line"><span class="cl">pm uninstall -k --user 0 com.mobvoi.companion.aw +</span></span><span class="line"><span class="cl">pm uninstall -k --user 0 com.mobvoi.ticwatch.cmodel.c2.male +</span></span><span class="line"><span class="cl">pm uninstall -k --user 0 com.mobvoi.wear.appsservice +</span></span><span class="line"><span class="cl">pm uninstall -k --user 0 com.mobvoi.wear.fitness.aw +</span></span><span class="line"><span class="cl">pm uninstall -k --user 0 com.mobvoi.wear.health.aw +</span></span><span class="line"><span class="cl">pm uninstall -k --user 0 com.mobvoi.wear.privacy.aw +</span></span><span class="line"><span class="cl">pm uninstall -k --user 0 com.mobvoi.wear.system.aw +</span></span><span class="line"><span class="cl">pm uninstall -k --user 0 com.mobvoi.wear.watchface.aw +</span></span></code></pre></div><p>Screenshot<br> +<img src="https://christitus.com/images/2020/ticwatch.jpg" alt="ticwatch"></p> +<h2 id="using-google-fit-and-other-wearos-apps">Using Google Fit and other WearOS Apps</h2> +<p>Now with all the garbage gone you can use all the other apps that are well maintained and optimized. You will notice that your watch is no longer lagging and it runs just like any other good wearable.</p> + + + + Geforce Now Linux + https://christitus.com/geforce-now-linux/ + Fri, 21 Aug 2020 14:45:41 -0500 + + https://christitus.com/geforce-now-linux/ + <p>You can now use Geforce Now on your Linux machine with this quick little trick.</p> +<h2 id="install-user-agent-switcher-extension">Install User Agent Switcher Extension</h2> +<p>Here the <a href="https://chrome.google.com/webstore/detail/user-agent-switcher-for-c/djflhoibgkdhkhhcedjiklpkjnoahfmg?hl=en-US">Link</a> to install the User Agent Switcher for ANY Chromium based browser. I used this on Brave and it worked perfectly.</p> +<p>Install this Extension and launch options!</p> +<p><img src="https://christitus.com/images/2020/geforcenow/options.jpg" alt="options.jpg"></p> +<h2 id="add-chrome-os-user-agent">Add Chrome OS User Agent</h2> +<p>Add the User Agent String:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Mozilla/5.0 (X11; CrOS x86_64 13099.85.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.110 Safari/537.36 +</span></span></code></pre></div><p><img src="https://christitus.com/images/2020/geforcenow/agentid.jpg" alt="agentid.jpg"></p> +<h2 id="switch-agent-and-launch">Switch Agent and Launch</h2> +<ul> +<li>Click on the Extension icon and select COS or whatever flag you made.</li> +<li>Then Launch <a href="https://play.geforcenow.com/">https://play.geforcenow.com/</a></li> +</ul> + + + + Secure Linux + https://christitus.com/secure-linux/ + Tue, 18 Aug 2020 13:02:25 -0500 + + https://christitus.com/secure-linux/ + <p>This article covers basic security and settings I do with every Linux installation.</p> +<h2 id="check-for-drovorub-malware">Check for Drovorub Malware</h2> +<p><img src="https://christitus.com/images/2020/drovorub/drovorub.jpg" alt="drovorub"></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">touch testfile +</span></span><span class="line"><span class="cl">echo “ASDFZXCV:hf:testfile” &gt; /dev/zero +</span></span></code></pre></div><p><em>If the testfile disappears&hellip; you are infected</em></p> +<h3 id="check-for-unsigned-kernel-modules">Check for unsigned kernel modules</h3> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">for mod in $(lsmod | tail -n +2 | cut -d&#39; &#39; -f1); do modinfo ${mod} | grep -q &#34;signature&#34; || echo &#34;no signature for module: ${mod}&#34; ; done +</span></span></code></pre></div><p><em>If you see vbox or nvidia modules, these are for VirtualBox and NVidia Drivers respectively</em></p> +<h2 id="secure-boot">Secure Boot</h2> +<p><img src="https://christitus.com/images/2020/drovorub/secure-boot.jpg" alt="secure-boot"></p> +<p>Secure Boot forces checks for kernel module signatures and is good not only for blocking Drovorub-style malware, but also prevents Evil Maid attacks as well. However, it can be complex and also make using bootable USB drives difficult. <em>Note: UEFI Boot Required&hellip; No Legacy/CSM.</em></p> +<h3 id="easy-way-to-install">Easy Way to Install</h3> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo mokutil --enable-validation # Remember the password! +</span></span><span class="line"><span class="cl">sudo mokutil --sb-state # Checks if Secure Boot is enabled +</span></span></code></pre></div><p>*Note: I used the enable validation on Debian based systems and it worked right out of the box</p> +<h3 id="hard-way-to-install">Hard Way to Install</h3> +<p>Hard way involves signing packages that aren&rsquo;t stock which you might need on your system or if you dual boot. Check out the following guide from the ArchWiki: <a href="https://wiki.archlinux.org/index.php/Unified_Extensible_Firmware_Interface/Secure_Boot">https://wiki.archlinux.org/index.php/Unified_Extensible_Firmware_Interface/Secure_Boot</a></p> +<h2 id="security-settings-for-all-linux-installs">Security Settings for All Linux Installs</h2> +<p><img src="https://christitus.com/images/github.png" alt="github"></p> +<p>I created a github script to make this easier but I wanted to break down what this script does. Secure-Linux Project <a href="https://github.com/ChrisTitusTech/secure-linux/blob/master/secure.sh">https://github.com/ChrisTitusTech/secure-linux/blob/master/secure.sh</a></p> +<p><em>Before running this script install ufw and fail2ban packages</em></p> +<p>This script is broken into 3 parts: ufw, sysctl.conf modifications, and fail2ban. Ufw stands for Uncomplicated Firewall and is fantastic for adding to every install. This script opens http and https, while limiting SSH to only a couple connections per second. The sysctl modifications helps harden your system by preventing spoofing and man in the middle attacks. Fail2ban is the final piece and possibly my favorite. This package see any traffic that is failing authentication attempts repeatedly or is malicious in nature (DDoS) and records the IP then blocks it for a period of time.</p> +<p>Other things I&rsquo;d recommend not mentioned&hellip; SELinux! Look it up because it is amazing. You can also use this on debian if you&rsquo;d like, but a smaller package called AppArmor is generally used on those types of distributions.</p> +<h2 id="conclusion">Conclusion</h2> +<p>This is not a all inclusive guide on securing your Linux system, but it is a good starting point that I do on pretty much every computer. I highly recommend you take these instructions and expand them to suit your needs.</p> + + + + Windows 10 Scripts + https://christitus.com/windows-10-scripts/ + Fri, 14 Aug 2020 11:43:17 -0500 + + https://christitus.com/windows-10-scripts/ + <p>Three Windows 10 Scripts</p> +<p><img src="https://christitus.com/images/onecommand.png" alt="OneCommand"></p> +<hr> +<h2 id="regular-no-onedrive-indexing-and-defender">Regular (No OneDrive, Indexing, and Defender)</h2> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">powershell -nop -c &#34;iex(New-Object Net.WebClient).DownloadString(&#39;https://git.io/JJ8R4&#39;)&#34; +</span></span></code></pre></div><hr> +<h2 id="minimal-only-targets-bloatwaretelemetry">Minimal (Only Targets Bloatware/Telemetry)</h2> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">powershell -nop -c &#34;iex(New-Object Net.WebClient).DownloadString(&#39;https://git.io/JJ5qc&#39;)&#34; +</span></span></code></pre></div><hr> +<h2 id="ltsc-style-debloat">LTSC Style Debloat</h2> +<p>(<em>WARNING: WILL UNINSTALL LOTS OF STUFF</em>)<br> +<a href="https://raw.githubusercontent.com/ChrisTitusTech/win10script/master/ultra-ltsc.ps1">https://raw.githubusercontent.com/ChrisTitusTech/win10script/master/ultra-ltsc.ps1</a></p> +<h2 id="video-walkthrough">Video Walkthrough</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/2R28u7o9mls" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Raspberry Pi Laptop + https://christitus.com/raspberry-pi-laptop/ + Wed, 12 Aug 2020 10:19:20 -0500 + + https://christitus.com/raspberry-pi-laptop/ + <p>This post goes over the CrowPi 2 Laptop. This is a modular laptop for the raspberry pi that is simply amazing and showcases all that you can do with the pi.</p> +<h2 id="using-elecrow-crowpi-image">Using Elecrow CrowPi Image</h2> +<p>The Custom Raspbian Linux that CrowPi uses is from <a href="https://www.elecrow.com/download/crowpi/">https://www.elecrow.com/download/crowpi/</a>. You can load this on any raspberry pi if you just want to use the digital portions to teach. It has a wonderful interface for learning Python and Scratch with code directly operating portions of the CrowPi2. This image also includes Minecraft Pi lessons which is fantastic for teaching and learning for younger students.</p> +<h2 id="programming-lessons">Programming Lessons</h2> +<p><img src="https://christitus.com/images/2020/crowpi/learning.jpg" alt="learning"></p> +<p>The interface for learning both Python and Scratch operate portions of the CrowPi such as making a sound or turning on one of the LEDs. While you can load the CrowPi 2 image on regular pi&rsquo;s without the laptop a lot of lessons would not be meaningful. That said the Minecraft section was fantastic no matter if you were using the CrowPi or not.</p> +<p>Other interfaces such as Arduino or Microbit do require that component which isn&rsquo;t included. Since both these products can operating pretty much anything you can think up in the real world, it makes sense that you&rsquo;d want to purchase these parts separately as they will vary widely from project to project. I mentioned in my YouTube I wanted to do automated door locks in a future project which I&rsquo;d use Arduino parts to accomplish.</p> +<p>As far as starting to learn and understand python, I thought this wasn&rsquo;t the best starting spot. If you or your student has never touched or seen python, I&rsquo;d highly recommend intro lessons from <a href="https://codecombat.com/">https://codecombat.com/</a> which are free and a great way to get your feet wet with Python before trying something like CrowPi 2 Python lessons.</p> +<h2 id="retro-gaming">Retro Gaming</h2> +<p><img src="https://christitus.com/images/2020/crowpi/retro.jpg" alt="retro"></p> +<p>The retro gaming aspect is something that is very familiar to the pi. I went ahead and did a custom RetroPie install only compiling SNES with Emulation Station and put that directly on the crow pi. If I were going to play a LOT of games on this, I&rsquo;d highly recommend using a dedicated SD card for Retro pi so you can get maximum performance as running the crow pi desktop and applications along with the emulators will take away from some of the performance when emulating newer hardware like N64 / PS1 games. However, If you are just doing old school games like NES and SNES you won&rsquo;t need to. The one thing I noticed was that it wasn&rsquo;t already integrated and if you aren&rsquo;t already familiar with RetroPi this can be a challenging thing to add if you don&rsquo;t know Linux.</p> +<p>Learn more about RetroPie here: <a href="https://retropie.org.uk/">https://retropie.org.uk/</a></p> +<h2 id="overall-impressions">Overall Impressions</h2> +<p><img src="https://christitus.com/images/2020/crowpi/crowpi2.jpg" alt="crowpi2"></p> +<p>I love this laptop and am looking forward to making some lesson plans for the upcoming school year to teach my kids about it. This is the perfect product to experiment and learn about a variety of things in technology. Ever since the Raspberry Pi came out, I have been looking for this type of laptop to fill this need of showcasing all that the pi is capable of and the Crow Pi 2 exceeded all my expectations.</p> +<p>Learn more about the CrowPi 2 here: <a href="https://www.kickstarter.com/projects/elecrow/crowpi2-steam-education-platformand-raspberry-pi-laptop">Kickstarter Page</a> and <a href="https://www.elecrow.com/development-kit.html">Official Site</a></p> +<h2 id="video-walkthrough">Video Walkthrough</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/uZmiWQbOBDw" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Ultimate Windows Setup Guide + https://christitus.com/ultimate-windows-setup-guide/ + Mon, 27 Jul 2020 14:26:59 -0500 + + https://christitus.com/ultimate-windows-setup-guide/ + <p>This guide will walk you through a fresh Windows installation and debloat the services, tasks, and apps that are running in the background.</p> +<h2 id="one-command-to-do-everything">One Command to Do Everything</h2> +<p><img src="https://christitus.com/images/onecommand.png" alt="OneCommand"></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">powershell -nop -c &#34;iex(New-Object Net.WebClient).DownloadString(&#39;https://git.io/JJ8R4&#39;)&#34; +</span></span></code></pre></div><h2 id="github-project-for-debloating-optimization-and-installing-programs">GitHub Project for Debloating, Optimization, and Installing Programs</h2> +<p><img src="https://christitus.com/images/github.png" alt="github"></p> +<p><a href="https://github.com/ChrisTitusTech/win10script/tree/master">https://github.com/ChrisTitusTech/win10script/tree/master</a></p> +<p>This project was using many of the aspects of other debloat scripts, but I combined system admin scripts with it that I use to configure workstations at businesses. I also added Chocolatey package manager to the script for easy program installations.</p> +<p>The script will remove scheduled tasks, windows applications, install common applications (adobe reader, notepad++, java, and more), while also disabling services, and removing windows components like Cortana that are performance hogs.</p> +<h2 id="what-this-script-does">What this script does</h2> +<h3 id="main-programs-and-tweaks">Main Programs and Tweaks</h3> +<ul> +<li>Installs Chocolatey (Package Manager for Windows)</li> +<li>Installs O&amp;O Shutup 10 and Runs Recommended Settings</li> +<li>Misc 3rd Party program installs (Adobe, 7-Zip, Notepad++, and Media Player Classic-HC)</li> +<li>Removals all Bloatware in MS Store (Leaves Office, Snip Tool, Xbox and other Apps used for Gaming)</li> +</ul> +<h3 id="privacy-tweaks">Privacy Tweaks</h3> +<p>Disabled Services and Tasks</p> +<ul> +<li>Telemetry</li> +<li>Wifi Sense</li> +<li>Smart Screen and Web Search</li> +<li>App Suggestions and Activity History</li> +<li>Location Tracking and Maps</li> +<li>Feedback and Tailored Experiences</li> +<li>Error Reporting</li> +<li>Cortana</li> +<li>Advertising ID.</li> +</ul> +<h3 id="security-tweaks">Security Tweaks</h3> +<ul> +<li>UAC Set to Low</li> +<li>Disable SMB version 1</li> +<li>Set Network to Private</li> +<li>Disable Controlled Folder Access</li> +<li>Disable Microsoft Defender (Check customization if not using another AV)</li> +<li>Disable Meltdown Flag (Big performance boost for Intel Users)</li> +<li>Enables F8 Boot Menu</li> +</ul> +<h3 id="service-tweaks">Service Tweaks</h3> +<p>Services Disabled:</p> +<ul> +<li>Malware Removal Tool</li> +<li>Driver Updates</li> +<li>Home Groups</li> +<li>Shared Experiences</li> +<li>Remote Assistance</li> +<li>Autoplay</li> +<li>Storage Sense</li> +<li>DeFragmentation</li> +<li>Superfetch</li> +<li>Indexing</li> +<li>Hibernation</li> +<li>Sleep Timeout</li> +</ul> +<h3 id="ui-tweaks">UI Tweaks</h3> +<p>Windows 10&rsquo;s user interface is a mess and has too many notifications. This removes the Action Center, LockScreen, Sticky Keys, Task View, Expands File Transfer details by default, Show all tray icons, and various other tweaks.</p> +<h3 id="application-tweaks">Application Tweaks</h3> +<p>This script will keep the core of Microsoft Office, but most other Microsoft products that are sideloaded are removed. OneDrive is a big one that some use, so if you want that functionality check the customization section. Most other features removed aren&rsquo;t used, like Internet Explorer and Work Folders.</p> +<h2 id="customization">Customization</h2> +<p>I encourage people to fork this project and comment out things they don&rsquo;t like! Here are a list of normal things people change:</p> +<ul> +<li>Uninstalling OneDrive (This is on in my script)</li> +<li>Installing Adobe, Chocolatey, Notepad++, MPC-HC, and 7-Zip</li> +</ul> +<p>Comment any thing you don&rsquo;t want out&hellip; Example:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">########## NOTE THE # SIGNS! These disable lines This example shows UACLow being set and Disabling SMB1 +</span></span><span class="line"><span class="cl">### Security Tweaks ### +</span></span><span class="line"><span class="cl">&#34;SetUACLow&#34;, # &#34;SetUACHigh&#34;, +</span></span><span class="line"><span class="cl">&#34;DisableSMB1&#34;, # &#34;EnableSMB1&#34;, +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl">########## NOW LETS SWAP THESE VALUES AND ENABLE SMB1 and Set UAC to HIGH +</span></span><span class="line"><span class="cl">### Security Tweaks ### +</span></span><span class="line"><span class="cl">&#34;SetUACHigh&#34;, +</span></span><span class="line"><span class="cl">&#34;EnableSMB1&#34;, +</span></span></code></pre></div><h2 id="video-walkthrough">Video Walkthrough</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/Tfd7BXCo9Xk" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + +<h2 id="conclusion">Conclusion</h2> +<p>This script will be great for most users out there without losing much if any functionality. I typically run this on every system I setup, but I encourage you to fork this project and make the customizations that you need. Anything is possible, and everything can be automated. Save yourself hours of time and learn how to use not only this script, but using PowerShell.</p> + + + + How to Speed Up Your Amazon Fire Tablet + https://christitus.com/amazon-fire-debloat/ + Tue, 21 Jul 2020 12:37:54 -0500 + + https://christitus.com/amazon-fire-debloat/ + <p>This Guide goes over over debloating amazon fire tablets and getting Google Store and regular tablet functionality out of them.</p> +<h2 id="tools-and-sources-used">Tools and Sources Used</h2> +<ul> +<li>Debloat Amazon Fire (XDA Developers): <a href="https://forum.xda-developers.com/hd8-hd10/development/official-amazon-fire-toolbox-v1-0-t3889604">Amazon Fire Toolbox</a></li> +<li>Screenshare Any Android Device (GitHub Project): <a href="https://github.com/Genymobile/scrcpy">scrcpy</a> +<ul> +<li>YouTube Video Link for scrcpy: <a href="https://youtu.be/VMQfH2Qkuss">https://youtu.be/VMQfH2Qkuss</a></li> +</ul> +</li> +</ul> +<h2 id="prerequisites">Prerequisites</h2> +<ul> +<li>No Root Required</li> +<li>Developer Mode Unlocked</li> +<li>USB Debugging Enabled in Developer Tools</li> +<li>Compatibility:</li> +</ul> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Amazon Fire 8/8+ (2020) +</span></span><span class="line"><span class="cl">Amazon Fire 10 (2019) +</span></span><span class="line"><span class="cl">Amazon Fire 7 (2019) +</span></span><span class="line"><span class="cl">Amazon Fire 8 (2018) +</span></span><span class="line"><span class="cl">Amazon Fire 10 (2017) +</span></span><span class="line"><span class="cl">Amazon Fire 8 (2017) +</span></span><span class="line"><span class="cl">Amazon Fire 7 (2017) +</span></span><span class="line"><span class="cl">Amazon Fire HD8 (2016) +</span></span><span class="line"><span class="cl">Amazon Fire HD10 (2015) +</span></span><span class="line"><span class="cl">Amazon Fire HD8 (2015) +</span></span><span class="line"><span class="cl">Amazon Fire HD7 (2015) +</span></span><span class="line"><span class="cl">Amazon Fire HD7 (2014) +</span></span><span class="line"><span class="cl">Amazon Fire HD6 (2014) +</span></span></code></pre></div><h2 id="enabling-developer-mode">Enabling Developer Mode</h2> +<hr> +<p><img src="https://christitus.com/images/2020/debloat-amazon/dev-tools.jpg" alt="Dev Tools"></p> +<hr> +<ul> +<li>Settings &gt; Device Options &gt; About Fire Tablet and tap on the Serial Number until you unlock Developer Options</li> +<li>Settings &gt; Device Options &gt; Developer Tools and enable USB Debugging</li> +</ul> +<hr> +<p>After doing this plug your tablet in to your computer and tap authorize device. If you don&rsquo;t see authorization prompt, change USB mode to file transfer or it may already be authorized from a past attempt. Check the Toolbox app in the next step to verify.</p> +<h2 id="amazon-fire-toolbox-usage">Amazon Fire Toolbox Usage</h2> +<h3 id="main-menu">Main Menu</h3> +<hr> +<p><img src="https://christitus.com/images/2020/debloat-amazon/toolbox.png" alt="Toolbox"></p> +<hr> +<h4 id="options-you-need">Options you need</h4> +<ol> +<li>Manage Everything Amazon +<ul> +<li>Disable all amazon apps</li> +</ul> +</li> +<li>Custom Launcher +<ul> +<li>Change to Nova Launcher from Amazon</li> +</ul> +</li> +<li>Google Services (Manage) +<ul> +<li>Install Google Play and Google Sign-In</li> +</ul> +</li> +</ol> +<h4 id="optional-features-on-main-menu">Optional Features on Main Menu</h4> +<ul> +<li>ADB Shell +<ul> +<li><em>Command Line for ADB</em></li> +</ul> +</li> +<li>Hybrid Apps +<ul> +<li><em>Installing Netflix or Disney- Not needed when using Google Store</em></li> +</ul> +</li> +<li>Lockscreen Wallpaper +<ul> +<li><em>Doesn&rsquo;t remove ads - Done with another package</em></li> +</ul> +</li> +<li>Density Modifier +<ul> +<li><em>Changes DPI</em></li> +</ul> +</li> +<li>Google Assistant +<ul> +<li><em>Uses Google Assistant instead of Alexa</em></li> +</ul> +</li> +<li>Modify System Settings +<ul> +<li><em>Disable automatic system/app updates, and turn off Over the Air updates</em></li> +</ul> +</li> +<li>Power Options +<ul> +<li><em>Power Off, Reboot, Bootloader Selection</em></li> +</ul> +</li> +</ul> +<h3 id="second-menu">Second Menu</h3> +<hr> +<p><img src="https://christitus.com/images/2020/debloat-amazon/toolbox2.jpg" alt="Toolbox2"></p> +<hr> +<h4 id="recommended-options">Recommended Options</h4> +<ul> +<li> +<p>Remove Lockscreen Ads</p> +<ul> +<li>This setups an automation sequence that constantly scans and removes amazon ads. Here are the detailed instructions:</li> +</ul> +</li> +<li> +<p>Click Remove Lockscreen Ads in Amazon Fire Toolbox</p> +</li> +<li> +<p>Launch Automate Settings</p> +</li> +<li> +<p>Check &ldquo;Run on system startup&rdquo;</p> +</li> +<li> +<p>Import Adblocker script into Automate</p> +<ul> +<li>To import: Click Import from 3 dots on right, Select SD Card and click &ldquo;Amazon Lockscreen Ads Remover V4.5&rdquo; from root</li> +</ul> +</li> +<li> +<p>Return to Home screen of Automate and click the Ads Remover</p> +</li> +</ul> +<h4 id="optional-items-on-second-menu">Optional Items on Second Menu</h4> +<ul> +<li>Parental Control Hide</li> +<li>System Backup +<ul> +<li><em>Excellent backup and restore tool for your tablet</em></li> +</ul> +</li> +<li>Push and Pull +<ul> +<li><em>File Transfer to and from tablet</em></li> +</ul> +</li> +<li>User Management +<ul> +<li><em>Add Accounts for Google, LinkedIn, Patreon, etc.</em></li> +</ul> +</li> +<li>YouTube Clients +<ul> +<li><em>APK files for Vanced and other YouTube alternative apps</em></li> +</ul> +</li> +<li>Screen Capturing +<ul> +<li><em>Record or Screenshot on your tablet</em></li> +</ul> +</li> +<li>Sideload Apps +<ul> +<li><em>Select APK files to upload OR search for APK files on internet</em></li> +</ul> +</li> +</ul> +<h2 id="conclusion">Conclusion</h2> +<p>This tool is a fantastic way to debloat a new fire tablet and get greater functionality from it. The added utilities I rarely use, but can be very nice for some users.</p> + + + + Chris Titus Tech Newsletter + https://christitus.com/newsletter/ + Sun, 19 Jul 2020 15:25:58 +0000 + + https://christitus.com/newsletter/ + <h2 id="sign-up-for-the-chris-titus-tech-newsletter">Sign up for the Chris Titus Tech Newsletter</h2> +<form action="https://flowxo.com/hooks/a/6q9gzne2"> + <input name="email" type="email" placeholder="john.doe@gmail.com"/> + <input type="submit" value="Sign Up" /> +</form> + + + + The Ultimate Linux Gaming Guide + https://christitus.com/ultimate-linux-gaming-guide/ + Tue, 14 Jul 2020 14:27:23 -0500 + + https://christitus.com/ultimate-linux-gaming-guide/ + <p>This guide goes over setting up your Linux system for gaming. I will include multiple setup instructions for various Linux distributions.</p> +<p><img src="https://christitus.com/images/2020/gaming-guide/gaming.jpg" alt="gaming"></p> +<p>This guide will broken into parts that you will need to verify on your system. Each part, should be checked to guarantee an optimal experience.</p> +<hr> +<h2 id="video-drivers">Video Drivers</h2> +<p>Just like any operating system, having the latest drivers helps with performance in most games.</p> +<h3 id="ubuntu-based-distributions">Ubuntu Based Distributions</h3> +<p>Enable 32-bit libraries</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo dpkg --add-architecture i386 +</span></span></code></pre></div><p><img src="https://christitus.com/images/amd-title.png" alt="AMD"></p> +<h4 id="amd-mesa-driver-install">AMD Mesa Driver Install</h4> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo add-apt-repository ppa:kisak/kisak-mesa -y +</span></span><span class="line"><span class="cl">sudo apt update +</span></span><span class="line"><span class="cl">sudo apt install libgl1-mesa-dri:i386 mesa-vulkan-drivers mesa-vulkan-drivers:i386 -y +</span></span></code></pre></div><p><em>Note: Did you run into an error? Make sure you are running Ubuntu 20, Linux Mint 20, or Pop OS 20! - Older versions are not recommended</em></p> +<p><img src="https://christitus.com/images/nvidia-title.png" alt="nVidia"></p> +<h4 id="nvidia-proprietary-driver-install">Nvidia Proprietary Driver Install</h4> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo add-apt-repository ppa:graphics-drivers/ppa -y +</span></span><span class="line"><span class="cl">sudo apt update +</span></span><span class="line"><span class="cl">sudo apt install nvidia-driver-495 libnvidia-gl-495 libnvidia-gl-495:i386 libvulkan1 libvulkan1:i386 -y +</span></span></code></pre></div><p>*Note: Not working? Are you using a recent nVidia card? I recommend at least GTX 900 Series or Above!</p> +<h3 id="arch-based-distributions">Arch Based Distributions</h3> +<p><strong>Enable Multilib for 32- bit support</strong><br> +<code>/etc/pacman.conf</code> <em>Note: you can remove the # to enable multilib shown below</em></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">[multilib] +</span></span><span class="line"><span class="cl">Include = /etc/pacman.d/mirrorlist +</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo pacman -S lib32-mesa vulkan-radeon lib32-vulkan-radeon vulkan-icd-loader lib32-vulkan-icd-loader -y +</span></span></code></pre></div><hr> +<h2 id="custom-linux-kernel-benchmarks">Custom Linux Kernel Benchmarks</h2> +<p><img src="https://christitus.com/images/2020/gaming-guide/custom-kernel.svg" alt="custom-kernel"></p> +<h3 id="xanmod-debian-based-only">Xanmod (Debian-based Only)</h3> +<p>Official Site: <a href="https://xanmod.org">https://xanmod.org</a></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">echo &#39;deb http://deb.xanmod.org releases main&#39; | sudo tee /etc/apt/sources.list.d/xanmod-kernel.list &amp;&amp; wget -qO - https://dl.xanmod.org/gpg.key | sudo apt-key add - +</span></span><span class="line"><span class="cl">sudo apt update &amp;&amp; sudo apt install linux-xanmod -y +</span></span></code></pre></div><h3 id="liquorix-debian-based-only">Liquorix (Debian-based Only)</h3> +<p>Official Site: <a href="https://liquorix.net">https://liquorix.net</a></p> +<p>Debian Prerequisites (No PPA)</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">codename=&#34;$(find /etc/apt -type f -name &#39;*.list&#39; | xargs grep -E &#39;^deb&#39; | awk &#39;{print $3}&#39; | grep -Eo &#39;^[a-z]+&#39; | sort | uniq -c | sort -n | tail -n1 | grep -Eo &#39;[a-z]+$&#39;)&#34; &amp;&amp; sudo apt-get install apt-transport-https curl &amp;&amp; echo -e &#34;deb http://liquorix.net/debian $codename main\ndeb-src http://liquorix.net/debian $codename main\n\n# Mirrors:\n#\n# Unit193 - France\n# deb http://mirror.unit193.net/liquorix $codename main\n# deb-src http://mirror.unit193.net/liquorix $codename main&#34; | sudo tee /etc/apt/sources.list.d/liquorix.list &amp;&amp; curl &#39;https://liquorix.net/linux-liquorix.pub&#39; | sudo apt-key add - &amp;&amp; sudo apt-get update -y +</span></span></code></pre></div><p>Ubuntu based Prerequisites (PPA):</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo add-apt-repository ppa:damentz/liquorix &amp;&amp; sudo apt-get update -y +</span></span></code></pre></div><p>64-bit Install:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo apt-get install linux-image-liquorix-amd64 linux-headers-liquorix-amd64 -y +</span></span></code></pre></div><h3 id="zen-arch-based-only">Zen (Arch-based Only)</h3> +<p>Built into Arch Linux and part of the official pacman repositories. This does a lot of the same tweaks as Liquorix but for Arch based distributions.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">pacman -S linux-zen -y +</span></span></code></pre></div><h3 id="mainline-debian-bleeding-edge">Mainline (Debian Bleeding Edge)</h3> +<p>Source Project: <a href="https://github.com/pimlie/ubuntu-mainline-kernel.sh">https://github.com/pimlie/ubuntu-mainline-kernel.sh</a></p> +<p>This will update a debian stable release to the latest official kernel.</p> +<h4 id="installation">Installation</h4> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">apt install wget -y +</span></span><span class="line"><span class="cl">wget https://raw.githubusercontent.com/pimlie/ubuntu-mainline-kernel.sh/master/ubuntu-mainline-kernel.sh +</span></span><span class="line"><span class="cl">chmod +x ubuntu-mainline-kernel.sh +</span></span><span class="line"><span class="cl">sudo mv ubuntu-mainline-kernel.sh /usr/local/bin/ +</span></span></code></pre></div><h4 id="usage">Usage</h4> +<p>From terminal type any of the following commands:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">ubuntu-mainline-kernel.sh -c # Check if Newer Kernel available +</span></span><span class="line"><span class="cl">ubuntu-mainline-kernel.sh -i # Install latest kernel +</span></span><span class="line"><span class="cl">ubuntu-mainline-kernel.sh -l # List locally installed kernels +</span></span><span class="line"><span class="cl">ubuntu-mainline-kernel.sh -u # Uninstall mainline kernel +</span></span></code></pre></div><hr> +<h2 id="aco---faster-compiling-amd-only">ACO - Faster Compiling (AMD Only)</h2> +<p><img src="https://christitus.com/images/2020/gaming-guide/aco.jpg" alt="aco"></p> +<p>This is where Linus Tech Tips recently covered - Linux gaming is BETTER than windows? on June 17, 2020 <a href="https://youtu.be/6T_-HMkgxt0">https://youtu.be/6T_-HMkgxt0</a> and I covered last year - Mesa ACO Linux | The Future is Now! on November 20, 2019 <a href="https://youtu.be/fm_mzPBnWB0">https://youtu.be/fm_mzPBnWB0</a></p> +<p>Basically this changes the compiling from LLVM to ACO which is considerably faster. The installation process is quite a bit easier now as well compared to my video. You do need up-to-date drivers mesa 20+ and edit <code>/etc/environment</code>.</p> +<p>Add this to <code>/etc/environment</code></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">RADV_PERFTEST=aco +</span></span></code></pre></div><hr> +<p><img src="https://christitus.com/images/wine.png" alt="wine"></p> +<hr> +<h2 id="wine-dependancies-and-lutris">Wine Dependancies and Lutris</h2> +<p>There are several packages that wine, proton and lutris game installs need. I recommend installing all the dependancies before installing lutris.</p> +<h3 id="ubuntumintpop-os-20">Ubuntu/Mint/Pop OS! 20</h3> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">wget -nc https://dl.winehq.org/wine-builds/winehq.key +</span></span><span class="line"><span class="cl">sudo apt-key add winehq.key +</span></span><span class="line"><span class="cl">sudo add-apt-repository &#39;deb https://dl.winehq.org/wine-builds/ubuntu/ focal main&#39; -y +</span></span><span class="line"><span class="cl">sudo add-apt-repository ppa:lutris-team/lutris -y +</span></span><span class="line"><span class="cl">sudo apt update +</span></span><span class="line"><span class="cl">sudo apt-get install --install-recommends winehq-staging -y +</span></span><span class="line"><span class="cl">sudo apt-get install libgnutls30:i386 libldap-2.4-2:i386 libgpg-error0:i386 libxml2:i386 libasound2-plugins:i386 libsdl2-2.0-0:i386 libfreetype6:i386 libdbus-1-3:i386 libsqlite3-0:i386 -y +</span></span><span class="line"><span class="cl">sudo apt-get install lutris -y +</span></span></code></pre></div><h3 id="arch-based-distros">Arch-Based Distros</h3> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo pacman -S wine-staging giflib lib32-giflib libpng lib32-libpng libldap lib32-libldap gnutls lib32-gnutls mpg123 lib32-mpg123 openal lib32-openal v4l-utils lib32-v4l-utils libpulse lib32-libpulse libgpg-error lib32-libgpg-error alsa-plugins lib32-alsa-plugins alsa-lib lib32-alsa-lib libjpeg-turbo lib32-libjpeg-turbo sqlite lib32-sqlite libxcomposite lib32-libxcomposite libxinerama lib32-libgcrypt libgcrypt lib32-libxinerama ncurses lib32-ncurses opencl-icd-loader lib32-opencl-icd-loader libxslt lib32-libxslt libva lib32-libva gtk3 lib32-gtk3 gst-plugins-base-libs lib32-gst-plugins-base-libs vulkan-icd-loader lib32-vulkan-icd-loader lutris -y +</span></span></code></pre></div><hr> +<h2 id="esync---helps-game-overhead">ESync - Helps Game Overhead</h2> +<p>Check to see if esync is enabled already (most distributions do by default)</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">ulimit -Hn +</span></span></code></pre></div><p>If this returns more than 500,000 than ESYNC IS ENABLED! If not, proceed with these instructions:<br> +Change the following files and add this line to the bottom</p> +<p><code>/etc/systemd/system.conf</code> &amp; <code>/etc/systemd/user.conf</code></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">DefaultLimitNOFILE=524288 +</span></span></code></pre></div><p><code>/etc/security/limits.conf</code></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">username hard nofile 524288 +</span></span></code></pre></div><p><em>Note: Change username to your username!!!</em></p> +<hr> +<p><img src="https://christitus.com/images/2020/gaming-guide/gamemode.jpg" alt="gamemode"></p> +<hr> +<h2 id="gamemode---no-cpu-throttling">GameMode - No CPU Throttling</h2> +<p>GitHub Source Project: <a href="https://github.com/FeralInteractive/gamemode">https://github.com/FeralInteractive/gamemode</a></p> +<h3 id="ubuntudebian-dependencies">Ubuntu/Debian Dependencies</h3> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">apt install meson libsystemd-dev pkg-config ninja-build git libdbus-1-dev libinih-dev dbus-user-session -y +</span></span></code></pre></div><h3 id="arch-dependencies">Arch Dependencies</h3> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">pacman -S meson systemd git dbus -y +</span></span></code></pre></div><h3 id="build-and-install-gamemode">Build and Install GameMode</h3> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">git clone https://github.com/FeralInteractive/gamemode.git +</span></span><span class="line"><span class="cl">cd gamemode +</span></span><span class="line"><span class="cl">git checkout 1.5.1 # omit to build the master branch +</span></span><span class="line"><span class="cl">./bootstrap.sh +</span></span></code></pre></div><h3 id="uninstall-gamemode">Uninstall GameMode</h3> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">systemctl --user stop gamemoded.service +</span></span><span class="line"><span class="cl">ninja uninstall -C builddir +</span></span></code></pre></div><h3 id="gamemode-usage">GameMode Usage</h3> +<p>There are multiple ways to Use GameMode</p> +<ul> +<li><strong>Lutris</strong> - Under settings you can enable GameMode for all games you launch</li> +<li><strong>Steam</strong> - Go to Launch options for the game of choice and type in <code>gamemoderun %command%</code></li> +<li><strong>Terminal</strong> - type <code>gamemoderun ./game</code></li> +<li><strong>Gnome Tool</strong> - If you use GNOME Desktop Environment install this extension: <a href="https://extensions.gnome.org/extension/1852/gamemode/">https://extensions.gnome.org/extension/1852/gamemode/</a></li> +</ul> +<hr> +<p><img src="https://christitus.com/images/2020/gaming-guide/proton.jpg" alt="proton"></p> +<hr> +<h2 id="custom-proton">Custom Proton</h2> +<p>The stock steam proton is rather old and behind the Wine team. Which means there are a lot of performance tweaks and improvements that you aren&rsquo;t getting yet. This is why I recommend everyone install Custom proton as I find the releases a considerable improvement when gaming in Steam.</p> +<p><strong>Note: DO NOT USE STEAM IN A FLATPAK! You will lose some performance and modifications are more difficult!</strong></p> +<p>Source Project: <a href="https://github.com/GloriousEggroll/proton-ge-custom#manual">https://github.com/GloriousEggroll/proton-ge-custom#manual</a><br> +Auto-Install Project: <a href="https://github.com/Termuellinator/ProtonUpdater">https://github.com/Termuellinator/ProtonUpdater</a></p> +<p>For Installation, we will use the ProtonUpdater script on GitHub.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">cd ~ +</span></span><span class="line"><span class="cl">wget https://raw.githubusercontent.com/Termuellinator/ProtonUpdater/master/cproton.sh +</span></span><span class="line"><span class="cl">sudo chmod +x cproton.sh +</span></span><span class="line"><span class="cl">./cproton.sh +</span></span></code></pre></div><hr> +<h2 id="video-walkthrough">Video Walkthrough</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/xvrft9ULvho" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + +<h2 id="conclusion">Conclusion</h2> +<p>Doing these tweaks or just some of them will make a drastic difference when it comes to Gaming on Linux. I personally use all of the tweaks, but sometimes I end up not using the Custom kernel if I have issues with drivers like nvidia sometimes does not like it.</p> + + + + Change your Desktop Wallpaper + https://christitus.com/change-wallpaper/ + Wed, 08 Jul 2020 14:52:13 -0500 + + https://christitus.com/change-wallpaper/ + <p>This article shows you how to automatically change your wallpaper on Windows, macOS, and Linux.</p> +<p>To get the greatest variety and the highest quality it is best to use reddit as the voting system and variety ensure both these goals are met.</p> +<h2 id="change-wallpaper-in-windows">Change Wallpaper in Windows</h2> +<p>GitHub Project: <a href="https://github.com/Rawns/Reddit-Wallpaper-Changer">https://github.com/Rawns/Reddit-Wallpaper-Changer</a></p> +<p>From the Releases Tab on GitHub download the latest version and install it.</p> +<p>Here are the settings I recommend using:<br> +<img src="https://christitus.com/images/2020/wallpaper/wall-settings-w10.png" alt="win10-wallsettings"></p> +<p>There is also an option to save all wallpapers locally. I like to save all downloaded wallpapers for future reference or build and offline repository.</p> +<h2 id="change-wallpaper-in-mac-os">Change Wallpaper in Mac OS</h2> +<p>GitHub Project: <a href="https://github.com/ChrisTitusTech/wallpaper-reddit">https://github.com/ChrisTitusTech/wallpaper-reddit</a></p> +<h3 id="install-macos-dependancies">Install MacOS Dependancies</h3> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">xcode-select --install +</span></span><span class="line"><span class="cl">sudo easy_install pip +</span></span><span class="line"><span class="cl">sudo pip install --upgrade pip +</span></span><span class="line"><span class="cl">pip install pillow +</span></span></code></pre></div><h4 id="needed-desktop-wallpaper-script-package">Needed Desktop Wallpaper Script Package</h4> +<ul> +<li>Install Swift Tools on MacOS 13 (Required for High Sierra or Earlier) - <a href="https://support.apple.com/kb/DL1998">https://support.apple.com/kb/DL1998</a></li> +<li>Script for Changing MacOS Wallpaper - <a href="https://github.com/scriptingosx/desktoppr/releases">https://github.com/scriptingosx/desktoppr/releases</a></li> +</ul> +<h3 id="install-macos-program">Install MacOS Program</h3> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">cd ~ +</span></span><span class="line"><span class="cl">git clone https://github.com/ChrisTitusTech/wallpaper-reddit.git +</span></span><span class="line"><span class="cl">cd wallpaper-reddit +</span></span><span class="line"><span class="cl">sudo python3 setup.py install +</span></span></code></pre></div><h3 id="macos-usage">MacOS Usage</h3> +<p>You can run this anytime by typing in terminal <code>wallpaper-reddit [subreddits]</code><br> +Binaries are located at <code>/usr/local/bin/wallpaper-reddit</code> +Config files are located at <code>~/.config/wallpaper-reddit</code> +Syntax Help <code>wallpaper-reddit --help</code></p> +<h3 id="running-on-macos-startup">Running on macOS Startup</h3> +<ul> +<li>Start Automator</li> +<li>Create New Task: File -&gt; New</li> +<li>Select &ldquo;Application&rdquo; +<ul> +<li>Click &ldquo;Show library&rdquo; in the toolbar (if hidden)</li> +</ul> +</li> +<li>Add &ldquo;Run shell script&rdquo; (from the Actions/Utilities) +<ul> +<li>Copy-and-paste your script into the window and Run- <em>Note: I used desktoppr to force wallpaper if script fails</em> +<img src="https://christitus.com/images/2020/wallpaper/macos-automator.jpg" alt="automator"></li> +</ul> +</li> +</ul> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">/usr/local/bin/wallpaper-reddit --startup +</span></span><span class="line"><span class="cl">/usr/local/bin/desktoppr ~/Pictures/Wallpapers/wallpaper.jpg +</span></span></code></pre></div><ul> +<li>Save it somewhere: a file called your_name.app will be created)</li> +<li>Go to System Preferences → Users and Groups → Login items</li> +<li>Add this newly-created app</li> +</ul> +<h2 id="change-wallpaper-in-linux">Change Wallpaper in Linux</h2> +<p>GitHub Project: <a href="https://github.com/ChrisTitusTech/wallpaper-reddit">https://github.com/ChrisTitusTech/wallpaper-reddit</a></p> +<h3 id="install-linux-dependancies">Install Linux Dependancies</h3> +<ul> +<li>Ubuntu/Linux Mint/ElementaryOS: <code>sudo apt-get install python3-dev python3-setuptools libjpeg8-dev zlib1g-dev libfreetype6-dev</code></li> +<li>Fedora: <code>sudo dnf install python3-imaging</code></li> +<li>Arch: <code>sudo pacman -S python-pillow</code></li> +</ul> +<h3 id="install-linux-program">Install Linux Program</h3> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">cd ~ +</span></span><span class="line"><span class="cl">git clone https://github.com/ChrisTitusTech/wallpaper-reddit.git +</span></span><span class="line"><span class="cl">cd wallpaper-reddit +</span></span><span class="line"><span class="cl">sudo python3 setup.py install +</span></span></code></pre></div><h3 id="linux-usage">Linux Usage</h3> +<p>You can run this anytime by typing in terminal <code>wallpaper-reddit [subreddits]</code><br> +Binaries are located at <code>/usr/local/bin/wallpaper-reddit</code> +Config files are located at <code>~/.config/wallpaper-reddit</code> +Syntax Help <code>wallpaper-reddit --help</code></p> +<h3 id="running-on-linux-startup">Running on Linux Startup</h3> +<p>There is plenty of ways to have this automatically change the wallpaper on startup, however, I like to use the method by adding it at the <code>/etc/profile</code> EOF (End of File). Here is an example.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">/usr/local/bin/wallpaper-reddit --save +</span></span><span class="line"><span class="cl">/usr/local/bin/wallpaper-reddit --startup +</span></span></code></pre></div><p><code>--save</code> <em>option flag will save the current wallpaper to the default directory in the config file (<code>~/Pictures/Wallpapers/</code>). Remove this line if you don&rsquo;t want to save past wallpapers.</em> +<code>--startup</code> <em>option flag will wait til internet access is established and then download the wallpaper from reddit</em></p> +<h2 id="wallpaper-reddit-config-file-settings">Wallpaper-reddit Config File Settings</h2> +<p>The config file is in <code>~/.config/wallpaper-reddit</code>, and will be created automatically. Currently, the GNOME, XFCE, MATE, Unity, and Cinnamon Desktop Environments should be automatically detected and the program should set the wallpaper without any extra work. However, due to the varying nature of window managers, it is possible, even likely, that you may have to specify a custom command to set your wallpaper. The program will prompt you for this if this is the case; the exact command can be researched per desktop environment. If your desktop environment is not supported, leave the set command blank and it will auto download to the <code>~/Pictures/Wallpapers/</code> directory as wallpaper.jpg for the daily wallpaper.</p> +<h3 id="config-options">Config Options</h3> +<p><code>minwidth</code> and <code>minheight</code> set the minimum dimensions the program will consider a valid candidate for a wallpaper. If <code>--resize</code> is enabled, the script will resize the image to those dimensions before setting the wallpaper. +<code>minratio</code> is the minimal aspect ratio of the image. It is a float value of width/height of the image, for example 1.6 for 16:9 image. +<code>maxlinks</code> is the maximum number of links the script will go through before giving up. +<code>resize</code> does the same thing as the <code>--resize</code> flag. It is enabled by default. +<code>random</code> does the same thing as the <code>--random</code> flag.</p> +<h2 id="recommended-wallpaper-subreddits">Recommended Wallpaper Subreddits</h2> +<ul> +<li>EarthPorn</li> +<li>CityPorn</li> +<li>SkyPorn</li> +<li>WeatherPorn</li> +<li>BotanicalPorn</li> +<li>LakePorn</li> +<li>VillagePorn</li> +<li>BeachPorn</li> +<li>WaterPorn</li> +<li>SpacePorn</li> +<li>multiwall</li> +<li>wallpapers</li> +<li>wallpaper</li> +</ul> + + + + Opencore Mac + https://christitus.com/opencore-mac/ + Sat, 27 Jun 2020 19:44:42 -0500 + + https://christitus.com/opencore-mac/ + <p>This goes over how to install macOS on pretty much any piece of hardware.</p> +<p>OpenCore is a relatively young project, but is by far my favorite. It teaches you the proper way to setup your system to work long term in the macOS ecosystem.</p> +<h1 id="opencore-wiki">OpenCore Wiki</h1> +<p>Source for the content in this post is from <a href="https://dortania.github.io/">https://dortania.github.io/</a>.<br> +This knowledge base is fantastic for any information I glaze over or troubleshooting that isn&rsquo;t covered. It is much more indepth than this article, but can be confusing in parts. This article is meant to get you acquainted with OpenCore and fill in any missing gaps.</p> +<h2 id="why-i-use-opencore">Why I Use OpenCore?</h2> +<p>I use opencore for compatibility and everything can be setup in a non macOS environment. It also injects drivers support (kext) differently than past methods and is far more stable. +This also means updates are far less likely to break your system and boot times are just as fast as a regular mac, if not faster. +I also find a larger amount of hardware is supported and the finished product is all contained neatly in an EFI partition.</p> +<h2 id="hardware-compatibility">Hardware Compatibility</h2> +<p>Even with OpenCore supporting a lot more hardware there is still some hardware that simply will not work on macOS no matter what you do. Here is a definitive guide <a href="https://dortania.github.io/Anti-Hackintosh-Buyers-Guide/">https://dortania.github.io/Anti-Hackintosh-Buyers-Guide/</a>. +The TLDR of that guide is the last two generations of nVidia Graphics Cards and future nVidia Cards are not compatible, and even old nVidia cards will not work past High Sierra (10.13.x). Also, almost every Intel Wireless card will not function properly or work at all. So buying a replacement is needed for laptops. +AMD CPUs can technically work, but will require more tinkering and are more difficult than the Intel counterparts.</p> +<h2 id="files-and-projects-you-need-to-download-and-what-they-do">Files and Projects you need to download and what they do</h2> +<p>Here is a list of all the files and GitHub projects that are used for OpenCore.</p> +<ul> +<li>OpenCore GitHub (Base Project) - <a href="https://github.com/acidanthera/OpenCorePkg/releases">https://github.com/acidanthera/OpenCorePkg/releases</a></li> +<li>All Drivers, Kexts, and SSDTs - <a href="https://dortania.github.io/OpenCore-Desktop-Guide/ktext.html">https://dortania.github.io/OpenCore-Desktop-Guide/ktext.html</a></li> +<li>GitMacOS GitHub (Download Official Apple PKGs) - <a href="https://github.com/corpnewt/gibMacOS">https://github.com/corpnewt/gibMacOS</a></li> +<li>ProperTree (config.plist editing) - <a href="https://github.com/corpnewt/ProperTree">https://github.com/corpnewt/ProperTree</a></li> +<li>SSDTTime (DSDT Dump and SSDT creation) - <a href="https://github.com/corpnewt/SSDTTime">https://github.com/corpnewt/SSDTTime</a></li> +<li>GenSMBIOS (Generate Serial and UUID) - <a href="https://github.com/corpnewt/GenSMBIOS">https://github.com/corpnewt/GenSMBIOS</a></li> +</ul> +<h2 id="checklist-for-httpsdortaniagithubioopencore-desktop-guide">Checklist for <a href="https://dortania.github.io/OpenCore-Desktop-Guide">https://dortania.github.io/OpenCore-Desktop-Guide</a></h2> +<ol> +<li>Check Hardware Compatibility - Document all device IDs and firmware</li> +<li>Download All Projects and Files</li> +<li>Boot Into Linux and do a DSDT dump followed by creating SSDT files for your computer (DO NOT USE PREBUILT!)</li> +<li>Delete all files that your system doesn&rsquo;t need</li> +<li>Put all Your Drivers in the EFI Folder <em>Note: I swapped AppleHDA for VoodooHDA on an old sound card. Do NOT just put every kext you find in one folder.</em></li> +<li>Build config.plist and configure EVERY SINGLE Fold in the config.plist file to your computers specifications</li> +<li>Boot to Installer! <em>Note: This will probably fail the first couple times, it is very important to follow the config.plist guide and full auditing enabled</em></li> +</ol> + + + + Debloat Android + https://christitus.com/debloat-android/ + Sun, 21 Jun 2020 20:01:50 -0500 + + https://christitus.com/debloat-android/ + <p>This article goes over using ADB Platform Tools and utilizing adb to uninstall packages by using these tools.</p> +<h2 id="pre-requisites-for-using-adb">Pre-Requisites for Using ADB</h2> +<p>Setup all of the following to use ADB</p> +<h3 id="setup-computer-with-adb-platform-tools">Setup Computer with ADB Platform Tools</h3> +<ul> +<li>Windows Install with Chocolatey <code>choco install adb</code></li> +<li>Linux Install with Terminal <code>sudo apt-get install android-tools-adb android-tools-fastboot</code></li> +<li>MacOS Install with Homebrew +<ul> +<li>Homebrew install - <code>ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)&quot;</code></li> +<li>ADB Homebrew Install - <code>brew cask install android-platform-tools</code></li> +</ul> +</li> +</ul> +<h3 id="setup-phone-for-adb-debugging">Setup Phone for ADB Debugging</h3> +<ol> +<li>Open Settings, and select “About”.</li> +<li>Tap on “Build number” seven times.</li> +<li>Go back, and select “Developer options”.</li> +<li>Scroll down, and check the “Android debugging” or “USB debugging” entry under “Debugging”.</li> +<li>Plug your device into your computer.</li> +<li>On the computer, open up a terminal/command prompt and type adb devices.</li> +<li>A dialog should show on your device, asking you to allow usb debugging. Check “always allow”, and choose “OK”. +<ul> +<li>Note: If you don&rsquo;t see this prompt on you device change the usb connection to MTP or File Transfer on the device</li> +</ul> +</li> +</ol> +<h2 id="adb-commands---these-only-work-when-device-is-booted">ADB Commands - These only work when device is booted</h2> +<ul> +<li><code>adb devices</code> - shows all connected adb devices</li> +<li><code>adb shell</code> - launches a shell on the device</li> +<li><code>adb shell pm list packages</code> - list all installed packages on the device</li> +<li><code>adb shell pm list packages -3&quot;|cut -f 2 -d &quot;:</code> - lists all user installed packages</li> +<li><code>adb push &lt;local&gt; &lt;remote&gt;</code> - pushes the file <local> to <remote></li> +<li><code>adb pull &lt;remote&gt; [&lt;local&gt;]</code> - pulls the file <remote> to <local>. If <local> isn’t specified, it will pull to the current folder.</li> +<li><code>adb logcat</code> - allows you to view the device log in real-time. You can use adb logcat -b radio to view radio logs, and adb logcat -C to view logs in colour</li> +<li><code>adb install &lt;file&gt;</code> - installs the given .apk file to your device</li> +<li><code>adb uninstall com.packagename</code> - uninstalls package from shell pm list packages +<ul> +<li><em>Note: if you encounter &ldquo;[DELETE_FAILED_INTERNAL_ERROR]&rdquo; type this to bypass:</em> <code>adb shell pm uninstall --user 0 &lt;appname&gt;</code></li> +</ul> +</li> +<li><code>adb reboot</code> - reboots system</li> +<li><code>adb reboot bootloader</code> - reboots to bootloader</li> +<li><code>adb reboot recovery</code> - reboots into recovery mode</li> +<li><code>adb reboot fastboot</code> - reboots into fastboot mode</li> +</ul> +<h2 id="fastboot-commands---these-commands-work-when-device-is-in-bootloader-and-fastboot-mode">Fastboot Commands - These commands work when device is in Bootloader and Fastboot Mode</h2> +<ul> +<li><code>fastboot devices</code> - shows all connected devices</li> +<li><code>fastboot reboot</code> - reboots device - can add bootloader, recovery, and fastboot</li> +<li><code>fastboot oem device-info</code> - shows oem bootloader status (unlocked or locked)</li> +<li><code>fastboot oem unlock</code> - unlocks oem phones - <em>note: aosp and unlocked phones don&rsquo;t need this</em></li> +<li><code>fastboot flashing unlock</code> - unlocks system for custom rom in pixel and other phones</li> +<li><code>fastboot flashing unlock_critical</code> - unlocks bootloader and system partitions - <em>note: this isn&rsquo;t generally needed</em></li> +<li><code>fastboot format:ext4 userdata</code> - format userdata on device - <em>note: this will erase your entire device</em></li> +<li><code>fastboot boot recovery.img</code> - test recovery image without flashing</li> +<li><code>fastboot flash recovery recovery.img</code> - flash recovery image then run <code>fastboot reboot recovery</code> to boot into it.</li> +<li><code>fastboot flash boot boot.img</code> - flash boot image - this is the kernel</li> +<li><code>fastboot -w</code> - wipes device</li> +<li><code>fastboot update &lt;/path/to/your/Rom.zip&gt;</code> - flashes zip to the device</li> +</ul> + + + + How to Create a Windows Service + https://christitus.com/create-windows-service/ + Mon, 15 Jun 2020 23:33:56 -0500 + + https://christitus.com/create-windows-service/ + <p>This article goes over how to create a windows service.</p> +<p>I will be going over 3 different ways to create a windows service. Check the legend to skip to the method you&rsquo;d like to use. They will be: PowerShell, 3rd Party Tool, and Windows Resource Kits.</p> +<h2 id="create-windows-service-with-powershell">Create Windows Service with PowerShell</h2> +<p>Microsoft Source Article with ALL Syntax - <a href="https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/new-service?view=powershell-7">Microsoft Link</a></p> +<p>TestService Example:<br> +<code>New-Service -Name &quot;TestService&quot; -BinaryPathName &quot;C:\WINDOWS\System32\svchost.exe -k netsvcs&quot;</code></p> +<h2 id="create-windows-service-for-java-applications-with-winsw">Create Windows Service for Java Applications with WinSW</h2> +<p><a href="https://github.com/winsw/winsw">https://github.com/winsw/winsw</a> is the project that is a fantastic wrapper for windows services.<br> +You will download this exe and rename it to your needs. It is configured by the included XML file under the same name.</p> +<h2 id="create-windows-service-with-nssm">Create Windows Service with NSSM</h2> +<p><a href="http://nssm.cc">http://nssm.cc</a> is the official site for this 3rd party tool method.</p> +<p>To show service installation GUI:<br> +<code>nssm install [&lt;servicename&gt;]</code></p> +<p>To install a service without confirmation:<br> +<code>nssm install &lt;servicename&gt; &lt;app&gt; [&lt;args&gt; ...]</code></p> +<p>To show service editing GUI:<br> +<code>nssm edit &lt;servicename&gt;</code></p> +<p>To retrieve or edit service parameters directly:<br> +<code>nssm get &lt;servicename&gt; &lt;parameter&gt; [&lt;subparameter&gt;]</code><br> +<code>nssm set &lt;servicename&gt; &lt;parameter&gt; [&lt;subparameter&gt;] &lt;value&gt;</code><br> +<code>nssm reset &lt;servicename&gt; &lt;parameter&gt; [&lt;subparameter&gt;]</code></p> +<p>To show service removal GUI:<br> +<code>nssm remove [&lt;servicename&gt;]</code></p> +<p>To remove a service without confirmation:<br> +<code>nssm remove &lt;servicename&gt; confirm</code></p> +<h2 id="create-windows-service-with-windows-server-resource-kit-2003">Create Windows Service with Windows Server Resource Kit 2003</h2> +<ul> +<li>Download Windows Server Resource Kit <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9d467a69-57ff-4ae7-96ee-b18c4790cffd&amp;DisplayLang=en">here</a></li> +<li>Run the executable to install the Resource Kit</li> +<li>Open up a command prompt and run the following to install a service stub (default install location used in this example):</li> +<li>You may substitute &ldquo;EQBC Service&rdquo; with whatever name you would like to give to the service for display purposes</li> +</ul> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">&#34;C:\Program Files\Windows Resource Kits\Tools\instsrv.exe&#34; &#34;New Service&#34; &#34;C:\Program Files\Windows Resource Kits\Tools\srvany.exe&#34; +</span></span></code></pre></div><ul> +<li>Run regedit to edit the Windows registry, and navigate to the following registry key: <code>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\New Service</code></li> +<li>From the Edit menu, select New, select Key, and name the new key Parameters</li> +<li>Highlight the Parameters key</li> +<li>From the Edit menu, select New, select String Value, and name the new value Application</li> +<li>From the Edit menu, select Modify, and type in the full path name and application name, including the drive letter and file extension. +<em>Example:</em> <code>C:\MQ2\eqbcs.exe</code></li> +<li>Now go to Start and Run and type in <code>services.msc</code></li> +<li>From here scroll down to New Service (or whatever name you gave the service above), right-click and select Properties</li> +<li>On the General tab, change the Startup type to <code>Automatic</code></li> +<li>Click the Start button to start your service</li> +<li>Select the Recovery tab, and you have the option of changing the drop-down boxes for First-Failure and so on to Restart the service</li> +<li>Select OK and you are finished</li> +</ul> +<h2 id="conclusion">Conclusion</h2> +<p>Each one of these ways have their uses and I have used each method for different programs. It is great to learn to use all of the above examples or at least make yourself familiar with them.</p> + + + + Debloat Windows in 2022 + https://christitus.com/debloat-windows-10-2020/ + Thu, 11 Jun 2020 16:04:48 -0500 + + https://christitus.com/debloat-windows-10-2020/ + <p>This goes over debloating and slimming down Windows 10 and 11 so you get maximum performance from your PC.</p> +<p>I made a guide going over the debloat process two years ago <a href="https://christitus.com/debloat-windows-10/">https://christitus.com/debloat-windows-10/</a> - The guide has evolved and the github project I was using has also improved. I&rsquo;ve also made a newer post going over the all the changes @ <a href="https://christitus.com/windows-tool">https://christitus.com/windows-tool</a></p> +<h2 id="april-2022-update">April 2022 Update</h2> +<ul> +<li>Added new options to get Windows 10/7 Options in Windows 11</li> +<li>Service optimizations to reduce process count</li> +<li>Added more tweak settings and misc. fixes</li> +<li>GUI Redesign</li> +<li>new Github <a href="https://github.com/ChrisTitusTech/winutil">https://github.com/ChrisTitusTech/winutil</a></li> +</ul> +<p>New command!</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">iwr -useb https://christitus.com/win | iex +</span></span></code></pre></div><h2 id="july-2021-update">July 2021 Update</h2> +<p>If you are coming here from the YouTube video I have taken all the scripts below and a system admin script I used a lot in the past to make a streamlined debloat script. This script will optimize Windows and can be run multiple times if you have an update ruin all the optimizations. I have also made it very easy to launch. Here is the source files: <a href="https://github.com/ChrisTitusTech/win10script">https://github.com/ChrisTitusTech/win10script</a></p> +<p>If you want to just run this on any system, you can easily copy and paste this into a Admin Powershell prompt and watch it do everything for you. It does have two prompts based on user feedback. Let me know what you think below!</p> +<p><em>OLD PROJECT - DEPRECATED</em></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">iex ((New-Object System.Net.WebClient).DownloadString(&#39;https://git.io/JJ8R4&#39;)) +</span></span></code></pre></div><h3 id="what-this-script-can-do">What this script can do</h3> +<ul> +<li>Installs any program listed that you click on using WinGet</li> +<li>Removed Telemetry</li> +<li>Disables Cortana</li> +<li>Deletes various schedules tasks that rebloat the system</li> +<li>Fixes problems that other scripts causes (lock screen and personalization options restricted)</li> +</ul> +<p>Based on User feedback Microsoft Store and Windows Defender is no longer touched.</p> +<h3 id="toolbox-walkthrough-video">Toolbox Walkthrough Video</h3> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/V27McA7ch6w" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + +<h2 id="user-requested-restore-scripts">User Requested Restore Scripts</h2> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">iex ((New-Object System.Net.WebClient).DownloadString(&#39;https://git.io/JTbKD&#39;)) +</span></span></code></pre></div><p>This restore script pops up a GUI that lets you restore what you want to FACTORY DEFAULTS!</p> +<p>Current Lineup:</p> +<ul> +<li>Cortana</li> +<li>Tray Icons</li> +<li>Action Center</li> +</ul> +<h2 id="old-methods-from-prior-videos-that-i-no-longer-use">Old Methods from Prior Videos that I no longer use</h2> +<p>The project I use has been developed for many years now and is extremely good. Here is the source github project I use:<br> +<a href="https://github.com/Sycnex/Windows10Debloater">https://github.com/Sycnex/Windows10Debloater</a></p> +<p>This is a new project that was brought to my attention, but has quickly made a name for itself. It works very well and is typically more up to date than the above project.<br> +<a href="https://github.com/farag2/Windows-10-Setup-Script">https://github.com/farag2/Windows-10-Setup-Script</a></p> +<h2 id="optimal-way-to-use-this-tool">Optimal Way to Use this Tool</h2> +<p>I recommend running this tool under the following conditions:</p> +<ul> +<li>Before User Profile is Created</li> +<li>Empty Desktop and Downloads (Past versions has deleted files from Desktop and Downloads)</li> +<li>After installing New Feature Updates</li> +</ul> +<p>Recommended Options:</p> +<ul> +<li>Disable Cortana</li> +<li>Uninstall OneDrive</li> +<li>Run Essential Tweaks</li> +</ul> +<p>I generally always enable Dark Mode and Install 3.5 .NET but that is entirely my personal preference.</p> + + + + Wsl2 + https://christitus.com/wsl2/ + Sun, 07 Jun 2020 10:50:19 -0500 + + https://christitus.com/wsl2/ + <p>This article goes over WSL 1 and 2 for Feature Update 2004. This will help you know which WSL you are currently using for any Linux installs on your PC.</p> +<p><em>Source Article: <a href="https://docs.microsoft.com/en-us/windows/wsl/install-win10">https://docs.microsoft.com/en-us/windows/wsl/install-win10</a> I copy these because Microsoft is notorious for changing URLs and to make additions</em></p> +<h2 id="install-the-windows-subsystem-for-linux">Install the Windows Subsystem for Linux</h2> +<p>Before installing any Linux distributions on Windows, you must enable the &ldquo;Windows Subsystem for Linux&rdquo; optional feature.<br> +<strong>Open PowerShell as Administrator and run:</strong></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart +</span></span></code></pre></div><p>To only install WSL 1, you should now restart your machine and move on to Install your Linux distribution of choice, otherwise wait to restart and move on to update to WSL 2. Read more about Comparing WSL 2 and WSL 1.</p> +<h2 id="update-to-wsl-2">Update to WSL 2</h2> +<p>To update to WSL 2, you must meet the follow criteria:</p> +<ul> +<li>Running Windows 10, updated to version 2004, Build 19041 or higher.</li> +<li>Check your Windows version by selecting the Windows logo key + R, type <code>winver</code>, select OK. (Or enter the ver command in Windows Command Prompt). Please update to the latest Windows version if your build is lower than 19041. Get Windows Update Assistant.</li> +<li>Enable the &lsquo;Virtual Machine Platform&rsquo; optional component</li> +</ul> +<p>Before installing WSL 2, you must enable the &ldquo;Virtual Machine Platform&rdquo; optional feature.<br> +<strong>Open PowerShell as Administrator and run:</strong></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart +</span></span></code></pre></div><p>Restart your machine to complete the WSL install and update to WSL 2.</p> +<h3 id="set-wsl-2-as-your-default-version">Set WSL 2 as your default version</h3> +<p>Run the following command in Powershell to set WSL 2 as the default version when installing a new Linux distribution:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">wsl --set-default-version 2 +</span></span></code></pre></div><p><em>Note: The update from WSL 1 to WSL 2 may take several minutes to complete depending on the size of your targeted distribution.</em></p> +<h4 id="troubleshooting-wsl-2-set-default-error">Troubleshooting WSL 2 set-default error</h4> +<p><img src="../images/2020/wsl/wsl-kernel.png" alt="wsl-kernel"><br> +If you can&rsquo;t set the default version after enabling the virtual machine platform and linux subsystem for windows. Then you need to do a kernel upgrade. This done by running the following msi file: <a href="https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi">https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi</a></p> +<h2 id="install-your-linux-distribution-of-choice">Install your Linux distribution of choice</h2> +<p>Open the Microsoft Store and select your favorite Linux distribution.<br> +<img src="../images/2020/wsl/wsl-store.png" alt="wsl-store"><br> +The following links will open the Microsoft store page for each distribution:</p> +<ul> +<li><a href="https://www.microsoft.com/store/apps/9pjn388hp8c9">Ubuntu 16.04 LTS</a></li> +<li><a href="https://www.microsoft.com/store/apps/9N9TNGVNDL3Q">Ubuntu 18.04 LTS</a></li> +<li><a href="https://www.microsoft.com/store/apps/9n6svws3rx71">Ubuntu 20.04 LTS</a></li> +<li><a href="https://www.microsoft.com/store/apps/9NJFZK00FGKV">openSUSE Leap 15.1</a></li> +<li><a href="https://www.microsoft.com/store/apps/9MZ3D1TRP8T1">SUSE Linux Enterprise Server 12 SP5</a></li> +<li><a href="https://www.microsoft.com/store/apps/9PN498VPMF3Z">SUSE Linux Enterprise Server 15 SP1</a></li> +<li><a href="https://www.microsoft.com/store/apps/9PKR34TNCV07">Kali Linux</a></li> +<li><a href="https://www.microsoft.com/store/apps/9MSVKQC78PK6">Debian GNU/Linux</a></li> +<li><a href="https://www.microsoft.com/store/apps/9n6gdm4k2hnc">Fedora Remix for WSL</a></li> +<li><a href="https://www.microsoft.com/store/apps/9NV1GV1PXZ6P">Pengwin</a></li> +<li><a href="https://www.microsoft.com/store/apps/9N8LP0X93VCP">Pengwin Enterprise</a></li> +<li><a href="https://www.microsoft.com/store/apps/9p804crf0395">Alpine WSL</a></li> +</ul> +<p>From the distribution&rsquo;s page, select &ldquo;Get&rdquo;.<br> +<img src="../images/2020/wsl/wsl-store2.png" alt="wsl-store2"></p> +<h2 id="set-up-a-new-distribution">Set up a new distribution</h2> +<p>The first time you launch a newly installed Linux distribution, a console window will open and you&rsquo;ll be asked to wait for a minute or two for files to de-compress and be stored on your PC. All future launches should take less than a second. +You will then need to create a user account and password for your new Linux distribution.<br> +<img src="../images/2020/wsl/wsl-prompt.png" alt="wsl-prompt"><br> +Set your distribution version to WSL 1 or WSL 2<br> +You can check the WSL version assigned to each of the Linux distributions you have installed by opening the PowerShell command line and entering the command (only available in Windows Build 19041 or higher): <code>wsl -l -v</code></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">wsl --list --verbose +</span></span></code></pre></div><p>To set a distribution to be backed by either version of WSL please run:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">wsl --set-version &lt;distribution name&gt; &lt;versionNumber&gt; +</span></span></code></pre></div><p>Make sure to replace <distribution name> with the actual name of your distribution and <versionNumber> with the number &lsquo;1&rsquo; or &lsquo;2&rsquo;. You can change back to WSL 1 at anytime by running the same command as above but replacing the &lsquo;2&rsquo; with a &lsquo;1&rsquo;.<br> +Additionally, if you want to make WSL 2 your default architecture you can do so with this command:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">wsl --set-default-version 2 +</span></span></code></pre></div><p><em>Note: This will set the version of any new distribution installed to WSL 2.</em></p> +<h2 id="troubleshooting-installation">Troubleshooting installation</h2> +<p>Below are related errors and suggested fixes. Refer to the WSL troubleshooting page for other common errors and their solutions.</p> +<h4 id="installation-failed-with-error-0x80070003">Installation failed with error 0x80070003</h4> +<p>The Windows Subsystem for Linux only runs on your system drive (usually this is your C: drive). Make sure that distributions are stored on your system drive:<br> +<strong>Open Settings -&gt; Storage -&gt; More Storage Settings:</strong> Change where new content is saved<br> +<img src="../images/2020/wsl/wsl-troubleshoot.png" alt="wsl-troubleshoot"></p> +<h4 id="wslregisterdistribution-failed-with-error-0x8007019e">WslRegisterDistribution failed with error 0x8007019e</h4> +<p>The Windows Subsystem for Linux optional component is not enabled:<br> +<strong>Open Control Panel -&gt; Programs and Features -&gt; Turn Windows Feature on or off -&gt; Check Windows Subsystem for Linux or using the PowerShell cmdlet mentioned at the beginning of this article.</strong></p> +<h4 id="installation-failed-with-error-0x80070003-or-error-0x80370102">Installation failed with error 0x80070003 or error 0x80370102</h4> +<p>Please make sure that virtualization is enabled inside of your computer&rsquo;s BIOS. The instructions on how to do this will vary from computer to computer, and will most likely be under CPU related options.</p> +<h4 id="error-when-trying-to-upgrade-invalid-command-line-option-wsl---set-version-ubuntu-2">Error when trying to upgrade: Invalid command line option: wsl &ndash;set-version Ubuntu 2</h4> +<p>Please make sure that you have the Windows Subsystem for Linux enabled, and that you&rsquo;re using Windows Build version 19041 or higher. To enable WSL run this command in a Powershell prompt with admin privileges: Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux. You can find the full WSL install instructions <a href="https://docs.microsoft.com/en-us/windows/wsl/install-win10">here</a>.</p> +<h4 id="the-requested-operation-could-not-be-completed-due-to-a-virtual-disk-system-limitation-virtual-hard-disk-files-must-be-uncompressed-and-unencrypted-and-must-not-be-sparse">The requested operation could not be completed due to a virtual disk system limitation. Virtual hard disk files must be uncompressed and unencrypted and must not be sparse.</h4> +<p>Please check WSL Github <a href="https://github.com/microsoft/WSL/issues/4103">thread #4103</a> where this issue is being tracked for updated information.</p> +<h4 id="the-term-wsl-is-not-recognized-as-the-name-of-a-cmdlet-function-script-file-or-operable-program">The term &lsquo;wsl&rsquo; is not recognized as the name of a cmdlet, function, script file, or operable program.</h4> +<p>Ensure that the Windows Subsystem for Linux Optional Component is installed. Additionally, if you are using an Arm64 device and running this command from PowerShell, you will receive this error. Instead run wsl.exe from PowerShell Core, or Command Prompt.</p> +<h2 id="conclusion">Conclusion</h2> +<p>WSL 2 is still very new and as such is still rough around the edges. However, the performance increase is undeniable and is a substantial improvement over</p> + + + + Custom Vim + https://christitus.com/custom-vim/ + Thu, 04 Jun 2020 15:05:41 -0500 + + https://christitus.com/custom-vim/ + <p>This article goes over customizing VIM and making a custom vim installation.</p> +<p>This is my custom vim that I am constantly updating via GitHub and clone this to every installation I have. Let&rsquo;s go over the install, config, and usage.</p> +<h2 id="installation-of-vim">Installation of VIM</h2> +<h3 id="adding-vim-plug">Adding VIM-plug</h3> +<p>The first thing I do is install vim-plug from junegunn that has makes a lot of vim-based plugins. Here is the repository that I am using for this: <a href="https://github.com/junegunn/vim-plug">https://github.com/junegunn/vim-plug</a></p> +<h4 id="installation">Installation</h4> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ +</span></span><span class="line"><span class="cl"> https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim +</span></span></code></pre></div><h3 id="using-my-custom-vimrc">Using My Custom .vimrc</h3> +<p>This is the main repository that has all of my customization to VIM. <a href="https://github.com/ChrisTitusTech/myvim">https://github.com/ChrisTitusTech/myvim</a></p> +<h4 id="installation-1">Installation</h4> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">cd ~ +</span></span><span class="line"><span class="cl">wget https://raw.githubusercontent.com/ChrisTitusTech/myvim/master/.vimrc +</span></span></code></pre></div><h2 id="configuration-of-vim">Configuration of VIM</h2> +<ul> +<li>Launch VIM</li> +<li>Type :PlugInstall</li> +<li>Exit (Shift+ZZ)</li> +</ul> +<h2 id="overview-of-plugins">Overview of Plugins</h2> +<p>Let&rsquo;s go over all the plugins that were just installed. Feel free to edit the .vimrc to your needs.</p> +<h4 id="lightline">LightLine</h4> +<p>This plugin adds a nice look to the bottom part of vim and adding a colored line that is now displayed and changes when VIM enters different modes.</p> +<h4 id="onedark">OneDark</h4> +<p>This is a theme for VIM that adds a greater contrast and dark theme to vim. This makes text and everything inside easier to read.</p> +<h4 id="fzf-fuzzy-search">FZF (Fuzzy Search)</h4> +<p>This adds greater functionality to search that allows you to search for partial matches easier. See full syntax here: <a href="https://github.com/junegunn/fzf#usage">https://github.com/junegunn/fzf#usage</a></p> +<h4 id="goyo">GoYo</h4> +<p>This plugin removes all the numbers and formatting and makes it easier when writing documents in VIM. From Normal Mode - I made the hotkey Ctrl+\ to enter this special format.</p> +<h4 id="undotree">UndoTree</h4> +<p>UndoTree is an amazing plugin that makes it easy to see everything you have done in your session. Simply press F5 from Normal mode and you will see the entire all your recent changes and undo them.</p> +<h4 id="nerdtree">NerdTree</h4> +<p>NerdTree is a file management plugin. This hotkey is Ctrl+o and opens up a file tree on the left side for you switch files</p> +<h4 id="vimwiki">VimWiki</h4> +<p>VimWiki adds syntax formatting for markdown and is a fantastic plugin to have if you many markdown files.</p> +<h2 id="conclusion">Conclusion</h2> +<p>There is still a ton of other edits I need to make to this VIM and will be a work in progress for many years. Everyday I learn something new and powerful with VIM and if you can think about what you want, I am sure VIM will be able to accommodate that. Future additions that I am looking at is SpellCheck, VIM Tabs, and general improvements to the .vimrc file. My vimrc file currently has a lot of the most common tweaks, longer history, sorting, file numbering, and removal of auto comment formatting, However there is still a of things to improve. So come and check back often as I will update this project as it progresses.</p> + + + + Degoogle Apps + https://christitus.com/degoogle-apps/ + Tue, 02 Jun 2020 21:28:09 -0500 + + https://christitus.com/degoogle-apps/ + <p>This article goes over the apps that work and don&rsquo;t work with a Degoogled phone without google play services installed</p> +<h2 id="aurora-store-apps-google-play-store-apks">Aurora Store Apps (Google Play Store apks)</h2> +<table> +<thead> +<tr> +<th>App Name</th> +<th>State</th> +<th>Warnings</th> +</tr> +</thead> +<tbody> +<tr> +<td>Coinbase</td> +<td>Works</td> +<td>None</td> +</tr> +<tr> +<td>GoPro</td> +<td>Works</td> +<td>Google Services Error</td> +</tr> +<tr> +<td>Google Keep Notes</td> +<td>Broken</td> +<td>Google App</td> +</tr> +<tr> +<td>Google Maps</td> +<td>Broken</td> +<td>Google App</td> +</tr> +<tr> +<td>Google Photos</td> +<td>Broken</td> +<td>Google App</td> +</tr> +<tr> +<td>Kasa</td> +<td>Broken</td> +<td>Login Error</td> +</tr> +<tr> +<td>LastPass</td> +<td>Broken</td> +<td>Crash on Startup</td> +</tr> +<tr> +<td>Lichess</td> +<td>Works</td> +<td>None</td> +</tr> +<tr> +<td>Lyft</td> +<td>Broken</td> +<td>GPS and Google Error</td> +</tr> +<tr> +<td>Microsoft Outlook</td> +<td>Works</td> +<td>None</td> +</tr> +<tr> +<td>Patreon</td> +<td>Works</td> +<td>Google Services Error</td> +</tr> +<tr> +<td>Ring</td> +<td>Works</td> +<td>Google Services Error</td> +</tr> +<tr> +<td>Robinhood</td> +<td>Works</td> +<td>Google Services Error</td> +</tr> +<tr> +<td>SKED</td> +<td>Works</td> +<td>Google Services Error</td> +</tr> +<tr> +<td>SimpliSafe</td> +<td>Works</td> +<td>Google Services Error</td> +</tr> +<tr> +<td>Spotify</td> +<td>Works</td> +<td>None - Except On Initial Login</td> +</tr> +<tr> +<td>Starbucks</td> +<td>Works</td> +<td>Google Services Error</td> +</tr> +<tr> +<td>Steam</td> +<td>Works</td> +<td>None</td> +</tr> +<tr> +<td>Stride</td> +<td>Works</td> +<td>Google Services Error</td> +</tr> +<tr> +<td>Synology Drive</td> +<td>Works</td> +<td>None</td> +</tr> +<tr> +<td>Synology Memories</td> +<td>Works</td> +<td>None</td> +</tr> +<tr> +<td>Uber</td> +<td>Broken</td> +<td>GPS and Google Error</td> +</tr> +<tr> +<td>Yi Home</td> +<td>Works</td> +<td>None</td> +</tr> +</tbody> +</table> +<p>**Note: Uber and Lyft can be used via mobile site. ex: <a href="https://m.uber.com">https://m.uber.com</a></p> +<h2 id="f-droid-apps-free-and-open-source">F-Droid Apps (Free and Open Source)</h2> +<table> +<thead> +<tr> +<th>App Name</th> +<th>Alternative To</th> +</tr> +</thead> +<tbody> +<tr> +<td>Files</td> +<td>Android Files</td> +</tr> +<tr> +<td>ImagePipe</td> +<td>Google Photos</td> +</tr> +<tr> +<td>Import Contacts</td> +<td>Google Contacts</td> +</tr> +<tr> +<td>Lemmy</td> +<td>Reddit</td> +</tr> +<tr> +<td>NewPipe</td> +<td>YouTube</td> +</tr> +<tr> +<td>OSMAnd</td> +<td>Google Maps</td> +</tr> +<tr> +<td>OpenVPN for Android</td> +<td>OpenVPN</td> +</tr> +<tr> +<td>Personal DNS Filtering</td> +<td>None</td> +</tr> +<tr> +<td>Slide</td> +<td>Reddit</td> +</tr> +<tr> +<td>Twidere</td> +<td>Twitter</td> +</tr> +<tr> +<td>Twire</td> +<td>Twitch</td> +</tr> +</tbody> +</table> +<p>**Note: ImagePipe shrinks photos and does basic edits. I sync my photos with Synology Memories.</p> + + + + Install Wine Libfaudio0 Error + https://christitus.com/install-wine-libfaudio0-error/ + Mon, 25 May 2020 13:14:23 -0500 + + https://christitus.com/install-wine-libfaudio0-error/ + <p>This article helps you fix the Libfaudio0 error that you run into when installing Wine on an older Linux debian-based distribution like Linux Mint 19 or Ubuntu 18.</p> +<p>Fix the dependancy error by downloading the following packages</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">wget https://download.opensuse.org/repositories/Emulators:/Wine:/Debian/xUbuntu_18.04/amd64/libfaudio0_19.07-0~bionic_amd64.deb +</span></span><span class="line"><span class="cl">wget https://download.opensuse.org/repositories/Emulators:/Wine:/Debian/xUbuntu_18.04/i386/libfaudio0_19.07-0~bionic_i386.deb +</span></span></code></pre></div><p>Once these are downloaded you need to installed them with</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo dpkg -i libfaudio0_19.07-0~bionic_amd64.deb libfaudio0_19.07-0~bionic_i386.deb +</span></span></code></pre></div><p>Now that we have fixed the dependency error you can proceed with your wine-staging installation. Not this is mainly an error for bleeding edge version of wine from the WineHQ PPA.</p> + + + + Emoji + https://christitus.com/emoji/ + Thu, 09 Apr 2020 15:35:07 -0500 + + https://christitus.com/emoji/ + <p>This article goes over installing emoji support in Linux.</p> +<h2 id="install-packages-for-emoji-support">Install Packages for Emoji Support</h2> +<p>There are a couple packages that you need to install by default in Linux to get proper emoji support and getting them to display properly. Without this support you will pull up sites and just see blocks instead of the emoji that should be there.</p> +<p>Install the following package <code>noto-fonts-emoji</code><br> +Arch Install: <code>yay -S noto-fonts-emoji</code><br> +Debian Install <code>sudo apt install noto-fonts-emoji</code></p> +<h2 id="create-font-config-file">Create Font Config File</h2> +<p>While just having the above package will give most emoji support there are some sites that still won&rsquo;t display properly add the following file to the fontsconfig files in your config. <em>Note: If ~/.config/fontsconfig doesn&rsquo;t exists create the folder</em></p> +<p>Minimal Install with only emoji fonts<br> +<code>~/.config/fontconfig/conf.d/01-emoji.conf</code></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">&lt;?xml version=&#34;1.0&#34;?&gt; +</span></span><span class="line"><span class="cl">&lt;!DOCTYPE fontconfig SYSTEM &#34;fonts.dtd&#34;&gt; +</span></span><span class="line"><span class="cl">&lt;fontconfig&gt; +</span></span><span class="line"><span class="cl"> &lt;!-- Use Google Emojis --&gt; +</span></span><span class="line"><span class="cl"> &lt;match target=&#34;pattern&#34;&gt; +</span></span><span class="line"><span class="cl"> &lt;test qual=&#34;any&#34; name=&#34;family&#34;&gt;&lt;string&gt;Segoe UI Emoji&lt;/string&gt;&lt;/test&gt; +</span></span><span class="line"><span class="cl"> &lt;edit name=&#34;family&#34; mode=&#34;assign&#34; binding=&#34;same&#34;&gt;&lt;string&gt;Noto Color Emoji&lt;/string&gt;&lt;/edit&gt; +</span></span><span class="line"><span class="cl"> &lt;/match&gt; +</span></span><span class="line"><span class="cl">&lt;/fontconfig&gt; +</span></span></code></pre></div><p>Big Install with sans-serif, serif, and monospace replaced System-wide<br> +<code>/etc/fonts/conf.d/02-emoji.conf</code></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">&lt;?xml version=&#34;1.0&#34;?&gt; +</span></span><span class="line"><span class="cl"> &lt;!DOCTYPE fontconfig SYSTEM &#34;fonts.dtd&#34;&gt; +</span></span><span class="line"><span class="cl"> &lt;fontconfig&gt; +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl"> &lt;alias&gt; +</span></span><span class="line"><span class="cl"> &lt;family&gt;sans-serif&lt;/family&gt; +</span></span><span class="line"><span class="cl"> &lt;prefer&gt; +</span></span><span class="line"><span class="cl"> &lt;family&gt;Your favorite sans-serif font name&lt;/family&gt; +</span></span><span class="line"><span class="cl"> &lt;family&gt;Noto Color Emoji&lt;/family&gt; +</span></span><span class="line"><span class="cl"> &lt;family&gt;Noto Emoji&lt;/family&gt; +</span></span><span class="line"><span class="cl"> &lt;/prefer&gt; +</span></span><span class="line"><span class="cl"> &lt;/alias&gt; +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl"> &lt;alias&gt; +</span></span><span class="line"><span class="cl"> &lt;family&gt;serif&lt;/family&gt; +</span></span><span class="line"><span class="cl"> &lt;prefer&gt; +</span></span><span class="line"><span class="cl"> &lt;family&gt;Your favorite serif font name&lt;/family&gt; +</span></span><span class="line"><span class="cl"> &lt;family&gt;Noto Color Emoji&lt;/family&gt; +</span></span><span class="line"><span class="cl"> &lt;family&gt;Noto Emoji&lt;/family&gt; +</span></span><span class="line"><span class="cl"> &lt;/prefer&gt; +</span></span><span class="line"><span class="cl"> &lt;/alias&gt; +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl"> &lt;alias&gt; +</span></span><span class="line"><span class="cl"> &lt;family&gt;monospace&lt;/family&gt; +</span></span><span class="line"><span class="cl"> &lt;prefer&gt; +</span></span><span class="line"><span class="cl"> &lt;family&gt;Your favorite monospace font name&lt;/family&gt; +</span></span><span class="line"><span class="cl"> &lt;family&gt;Noto Color Emoji&lt;/family&gt; +</span></span><span class="line"><span class="cl"> &lt;family&gt;Noto Emoji&lt;/family&gt; +</span></span><span class="line"><span class="cl"> &lt;/prefer&gt; +</span></span><span class="line"><span class="cl"> &lt;/alias&gt; +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl"> &lt;/fontconfig&gt; +</span></span></code></pre></div><h2 id="using-emoji-keyboard">Using Emoji Keyboard</h2> +<p>First install the ibus-uniemoji package or the GNOME extension if you use that Desktop Environment.<br> +Arch Install: <code>yay -S ibus-uniemoji</code><br> +Debian Users: <em>(Compile from source)</em> <a href="https://github.com/salty-horse/ibus-uniemoji">https://github.com/salty-horse/ibus-uniemoji</a><br> +Emoji <a href="https://extensions.gnome.org/extension/1162/emoji-selector/">Gnome Extension Link</a></p> +<p>Then simply keybind the package or extension using your settings menu or manually launch it using your launcher.<br> +Launch by typing: <code>ibus emoji</code><br> +<em>Note: I have mine bound to Meta Key + a</em></p> + + + + How to Install Only Security Updates on Windows 10 + https://christitus.com/windows-update-security-only/ + Sun, 29 Mar 2020 21:55:22 -0500 + + https://christitus.com/windows-update-security-only/ + <p>This article shows how to install only security updates on Windows 10. This is vital to avoid long updates on startup or shutdown!</p> +<h2 id="windows-10-pro-users---policy-editor-method">Windows 10 Pro Users - Policy Editor Method</h2> +<p>Open your Local Policy editor (Start - Run) and type <code>gpedit.msc</code><br> +From this screen go to <code>Computer - Administrative Templates - Windows Components - Windows Update - Windows Update for Business</code><br> +<img src="../images/2020/winupdate/gpedit.png" alt="gpedit"></p> +<p>Now set the <em>Feature Updates</em> to the following<br> +<img src="../images/2020/winupdate/gpedit2.png" alt="gpedit2"></p> +<p>For <em>Quality Updates</em>, I recommend deferring those 4 days.</p> +<h2 id="windows-10-home-users---regedit-method">Windows 10 Home Users - Regedit Method</h2> +<p>Open up your registry editor (Start - Run) and type <code>regedit</code><br> +Go to the follow key <code>Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings</code><br> +Add the following DWORD Values (32-bit value):</p> +<ul> +<li>BranchReadinessLevel 20</li> +<li>DeferFeatureUpdatesPeriodInDays 365</li> +<li>DeferQualityUpdatesPeriodInDays 4</li> +</ul> +<p><img src="../images/2020/winupdate/regedit.png" alt="regedit"></p> +<h2 id="set-active-hours">Set Active Hours</h2> +<p>Under Settings and Updates &amp; Security, make sure to set your active hours! I always set these manually as the automatic method is horrible. Always set an 18 hour window where you want to make sure your computer doesn&rsquo;t update.<br> +<em>My personal active hours are 8 AM to 2 AM.</em></p> +<h2 id="video-walkthrough">Video Walkthrough</h2> +<h2 id="conclusion">Conclusion</h2> +<p>These are settings that I recommend anyone using windows adopt. Otherwise, you will run into many update issues caused by the terrible quality control that goes into the first couple rounds of updates in Microsoft Windows 10.</p> + + + + Doom Eternal Linux + https://christitus.com/doom-eternal-linux/ + Sun, 22 Mar 2020 20:50:39 -0500 + + https://christitus.com/doom-eternal-linux/ + <p>This post is here to help guide you through setting up doom eternal on Linux.</p> +<h1 id="requirements">Requirements</h1> +<p>We will be using Glorious Eggroll&rsquo;s version of proton which is very easy to install and update with an update script. You can manually install this if you don&rsquo;t want to do the &ldquo;easy way&rdquo;.</p> +<h2 id="custom-proton-ge-edition-install">Custom Proton GE Edition Install</h2> +<p>Run the following commands:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">wget https://raw.githubusercontent.com/flubberding/ProtonUpdater/master/cproton.sh +</span></span><span class="line"><span class="cl">sudo chmod a+x cproton.sh +</span></span><span class="line"><span class="cl">sh cproton.sh +</span></span></code></pre></div><p>You will be prompted if you want to update it just type yes.<br> +This will install the new GE proton into the ~/.steam/root/compatibility.d (arch) and ~/.steam/compatibility.d (debian) respectively.</p> +<h2 id="modifying-steam-launch-options">Modifying Steam Launch Options</h2> +<p>By default, the default settings will still make it so you are unable to launch the game. I found using the following in steam launch options not only fixes the problems but makes it perform better and get you to the title screen faster.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">RADV_PERFTEST=llvm PROTON_NO_ESYNC=1 %command% +in_terminal 1 +com_skipIntroVideo 1 +com_skipKeyPressOnLoadScreens 1 +com_skipSignInManager 1 +</span></span></code></pre></div><p>If you still encounter issues install the AMDVLK package <a href="https://github.com/GPUOpen-Drivers/AMDVLK">https://github.com/GPUOpen-Drivers/AMDVLK</a><br> +<em>Note: Nvidia card users can&rsquo;t use this package and are currently having issues with Doom</em></p> +<h2 id="video-walkthrough">Video Walkthrough</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/g3UPxd8iUsU" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + +<h1 id="conclusion">Conclusion</h1> +<p>All testing was done with a Linux box using an AMD Radeon RX580. Refer to the video above for a look at the performance. I have noticed a lot of people online complaining that they are still having performance problems, but all of them seem to be nVidia users.<br> +All these fixes should be merged in to the official version of proton in a couple months and you shouldn&rsquo;t need to do any of this once this is done.</p> +<p>Have Fun and Game On!</p> + + + + Zsh + https://christitus.com/zsh/ + Wed, 19 Feb 2020 12:32:44 -0600 + + https://christitus.com/zsh/ + <p>In this article, I go over my implementation of ZSH, which is a better shell alternative to BASH.</p> +<h2 id="why-zsh">Why ZSH?</h2> +<p>ZSH is an amazing shell that just makes everything a bit easier from auto suggestions, completing tasks you do regularly considerably faster.</p> +<h2 id="before-you-begin-dependencies">Before you Begin: Dependencies</h2> +<p>I built a resource for those starting out with my Github @ <a href="https://github.com/ChrisTitusTech/zsh">https://github.com/ChrisTitusTech/zsh</a> and will be using many files from the project.</p> +<p>Packages needed before you start:</p> +<ul> +<li>zsh - ZSH Shell</li> +<li>zsh-syntax-highlighting - syntax highlighting for ZSH in standard repos</li> +<li>autojump - jump to directories with j or jc for child or jo to open in file manager</li> +<li>zsh-autosuggestions - Suggestions based on your history</li> +</ul> +<h2 id="initial-setup-of-zsh">Initial Setup of ZSH</h2> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">touch &#34;$HOME/.cache/zshhistory&#34; +</span></span><span class="line"><span class="cl">#-- Setup Alias in $HOME/zsh/aliasrc +</span></span><span class="line"><span class="cl">git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/powerlevel10k +</span></span><span class="line"><span class="cl">echo &#39;source ~/powerlevel10k/powerlevel10k.zsh-theme&#39; &gt;&gt; ~/.zshrc +</span></span></code></pre></div><h2 id="complete-switch-from-bash-to-zsh">Complete Switch from BASH to ZSH</h2> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">chsh $USER +</span></span></code></pre></div><p><em>Then type <code>/bin/zsh</code></em></p> +<p><em>OR</em> Edit <code>/etc/passwd</code> and change /bin/bash to /bin/zsh</p> +<p><img src="https://christitus.com/images/2020/zsh-passwd.png" alt="ZSH Switch"></p> +<h2 id="video-walkthrough">Video Walkthrough</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/gGmBUfMaWMU" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Lcars Screensaver + https://christitus.com/lcars-screensaver/ + Fri, 17 Jan 2020 17:43:17 -0600 + + https://christitus.com/lcars-screensaver/ + <p>This article goes over getting the LCARS screensaver by mewho working in Linux. This Screensaver was originally intended for Windows 9x and this is for fun!</p> +<h2 id="installation-and-testing">Installation and Testing</h2> +<p>First download the System47 Screensaver from mewho.com<br> +<a href="https://mewho.com/system47/download1.htm">LCARS Download</a></p> +<p>Unzip the system47.zip</p> +<p>Create a WINE bottle for the Screensaver to run in from terminal:<br> +<code>WINEARCH=win32 WINEPREFIX=/home/$USER/.lcars winecfg</code><br> +<em>Change the Windows Version to Windows XP</em></p> +<p>Run the System47.exe in wine to install the screensaver<br> +<code>WINEPREFIX=~/.lcars wine '~/Downloads/system47 v2.2_setup.exe.exe'</code><br> +Install the Screen saver and quit</p> +<p>Test the Screensaver in wine<br> +<code>WINEPREFIX=~/.lcars wine '/home/$USER/.lcars/drive_c/windows/system32/System47.scr' /s</code></p> +<hr> +<h2 id="creating-screensaver-service">Creating Screensaver Service</h2> +<p>Creating the screensaver service is done in three sections: service dependencies installation, script creation, and systemd service.</p> +<h4 id="dependencies-to-install">Dependencies to install</h4> +<p>Arch-based Installs <code>yay -S xscreensaver xprintidle</code><br> +Debian-based Installs <code>apt install xscreensaver xprintidle</code></p> +<h4 id="script-creation">Script Creation</h4> +<p>Create lcars.sh in your home directory (<em>replace titus with your user</em>)</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="cp">#!/bin/sh +</span></span></span><span class="line"><span class="cl"><span class="cp"></span> +</span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">DISPLAY</span><span class="o">=</span>:0 +</span></span><span class="line"><span class="cl"><span class="c1"># Wanted trigger timeout in milliseconds.</span> +</span></span><span class="line"><span class="cl"><span class="nv">IDLE_TIME</span><span class="o">=</span><span class="k">$((</span><span class="m">5</span><span class="o">*</span><span class="m">60</span><span class="o">*</span><span class="m">1000</span><span class="k">))</span> +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl"><span class="c1"># Sequence to execute when timeout triggers.</span> +</span></span><span class="line"><span class="cl">trigger_cmd<span class="o">()</span> <span class="o">{</span> +</span></span><span class="line"><span class="cl"> <span class="nv">WINEPREFIX</span><span class="o">=</span>/home/titus/.lcars wine <span class="s1">&#39;/home/titus/.lcars/drive_c/windows/system32/System47.scr&#39;</span> /s +</span></span><span class="line"><span class="cl"><span class="o">}</span> +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl"><span class="nv">sleep_time</span><span class="o">=</span><span class="nv">$IDLE_TIME</span> +</span></span><span class="line"><span class="cl"><span class="nv">triggered</span><span class="o">=</span><span class="nb">false</span> +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl"><span class="c1"># ceil() instead of floor()</span> +</span></span><span class="line"><span class="cl"><span class="k">while</span> sleep <span class="k">$((</span><span class="o">(</span>sleep_time+999<span class="o">)/</span><span class="m">1000</span><span class="k">))</span><span class="p">;</span> <span class="k">do</span> +</span></span><span class="line"><span class="cl"> <span class="nv">idle</span><span class="o">=</span><span class="k">$(</span>xprintidle<span class="k">)</span> +</span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="o">[</span> <span class="nv">$idle</span> -ge <span class="nv">$IDLE_TIME</span> <span class="o">]</span><span class="p">;</span> <span class="k">then</span> +</span></span><span class="line"><span class="cl"> <span class="k">if</span> ! <span class="nv">$triggered</span><span class="p">;</span> <span class="k">then</span> +</span></span><span class="line"><span class="cl"> trigger_cmd +</span></span><span class="line"><span class="cl"> <span class="nv">triggered</span><span class="o">=</span><span class="nb">true</span> +</span></span><span class="line"><span class="cl"> <span class="nv">sleep_time</span><span class="o">=</span><span class="nv">$IDLE_TIME</span> +</span></span><span class="line"><span class="cl"> <span class="k">fi</span> +</span></span><span class="line"><span class="cl"> <span class="k">else</span> +</span></span><span class="line"><span class="cl"> <span class="nv">triggered</span><span class="o">=</span><span class="nb">false</span> +</span></span><span class="line"><span class="cl"> <span class="c1"># Give 100 ms buffer to avoid frantic loops shortly before triggers.</span> +</span></span><span class="line"><span class="cl"> <span class="nv">sleep_time</span><span class="o">=</span><span class="k">$((</span>IDLE_TIME-idle+100<span class="k">))</span> +</span></span><span class="line"><span class="cl"> <span class="k">fi</span> +</span></span><span class="line"><span class="cl"><span class="k">done</span> +</span></span></code></pre></div><h4 id="service-creation">Service Creation</h4> +<p>Create lcars.service (<code>sudo nano /etc/systemd/system/lcars.service</code>) +<em>change titus to your user</em></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">[Unit] +</span></span><span class="line"><span class="cl">Description=Screensaver +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl">[Service] +</span></span><span class="line"><span class="cl">User=titus +</span></span><span class="line"><span class="cl">Type=simple +</span></span><span class="line"><span class="cl">ExecStart=/bin/bash /home/titus/lcars.sh +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl">[Install] +</span></span><span class="line"><span class="cl">WantedBy=multi-user.target +</span></span></code></pre></div><ul> +<li>Reload service daemon <code>sudo systemctl daemon-reload</code></li> +<li>Start lcars service to test <code>sudo systemctl start lcars</code></li> +<li>Verify service is running <code>sudo systemctl status lcars</code></li> +<li>Enable on startup <code>sudo systemctl enable lcars</code></li> +</ul> +<h2 id="video-walkthrough">Video Walkthrough</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/J2zasJz5vuA" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + BTRFS Guide - Basic Commands, Snapshots, and RAID + https://christitus.com/btrfs-guide/ + Mon, 13 Jan 2020 16:36:18 -0600 + + https://christitus.com/btrfs-guide/ + <p>This guide goes over everything you need to know to get started on BTRFS. With that said we will be going over the basic structure of BTRFS and the things you should and should not do.</p> +<h2 id="creating-a-btrfs-filesystem">Creating a BTRFS Filesystem</h2> +<p>Create the file system on an empty btrfs partition</p> +<blockquote> +<p><code>mkfs.btrfs /dev/sda1</code><br> +<em>Note: You will need to mount this file system after</em></p> +</blockquote> +<p>Now we need to make a subvolume <em>before</em> we add data to the device</p> +<blockquote> +<p><code>btrfs subvolume create /mnt/sda1</code> <em>/mnt/sda1 is the mount point!</em></p> +</blockquote> +<p>After this is complete you can now write data to your BTRFS volume and use all it capabilities.</p> +<p>Basic BTRFS Layout<br> +<em>Note: Top Level 5 is root and isn&rsquo;t a btrfs subvolume that can do snapshots and other btrfs features and therefore should not be mounted</em></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">toplevel root level 5 +</span></span><span class="line"><span class="cl"> +-- root\@ level 256 (subvolume root mounted at / id varies) +</span></span><span class="line"><span class="cl"> +-- root\.snapshots level 256 (typical snapshot subvolume) +</span></span></code></pre></div><h2 id="basic-commands">Basic Commands</h2> +<ul> +<li>Disk free<br> +<code>sudo btrfs fi show</code></li> +</ul> +<blockquote> +<p>Output:<br> +<img src="https://christitus.com/images/2020/btrfs/fishow.png" alt="File System Output"></p> +</blockquote> +<ul> +<li>Disk Usage<br> +<code>sudo btrfs fi du /</code> <em>Note: you can make / any other mount point</em></li> +<li>Scrub SubVolume <em>Recommended running every week!</em><br> +<code>sudo btrfs scrub start /</code></li> +<li>Balance Subvolume for Performance<br> +<code>sudo btrfs balance start -musage=50 -dusage=50 /</code><br> +<em>Note: Use the musgae and dusage filters to only balance used blocks above 50 percent utilization</em><br> +<code>sudo btrfs balance cancel /</code> <em>Stops running balance</em></li> +<li>List Subvolumes <em>based on mountpoint</em><br> +<code>sudo btrfs subv list /home</code></li> +</ul> +<blockquote> +<p>Output:<br> +<img src="https://christitus.com/images/2020/btrfs/subv-list.png" alt="Subvolume Output"></p> +</blockquote> +<ul> +<li>Mount Subvolume<br> +<code>sudo mount -o subvolid=267 /dev/sda1 /media/games</code><br> +<em>OR add this to</em> <code>/etc/fstab</code><br> +<code>UUID=IDGOESHERE /media/games rw,exec,subvolid=267 0 0</code></li> +</ul> +<h2 id="snapshots">Snapshots</h2> +<p>Snapshots are one of the best things about BTRFS and I absolutely love them. They are incredible powerful and beneficial.</p> +<p>So Lets run through some scenarios when you use Snapshots.</p> +<h4 id="create-snapshot">Create Snapshot</h4> +<blockquote> +<p><code>sudo btrfs subv snapshop /home /home/.snapshots/2020-01-13</code></p> +</blockquote> +<p>Using this you can revert the snapshop by simply editing the <code>/etc/fstab</code> and changing the subvol=2020-01-13 or the corresponding subvolid you get from <code>sudo btrfs subv list /home</code></p> +<h4 id="restore-snapshot">Restore Snapshot</h4> +<p>Restore Snapshop after reboot and successful rollback</p> +<blockquote> +<p><code>sudo btrfs subv delete /home</code><br> +<code>sudo btrfs subv snapshot /home/.snapshots/2020-01-13 /home</code></p> +</blockquote> +<p>Now simply restore your fstab and reboot to be back on the /home subvolume.</p> +<p>The reason to do it using this method is to verify the data first. If it doesn&rsquo;t work out you can simply change the <code>/etc/fstab</code> back and you will be back to where you started.</p> +<h2 id="multiple-disks-and-raid">Multiple disks and RAID</h2> +<p>Oh boy, here we go. This is such a badly misunderstood subject and if you aren&rsquo;t careful you will be causing more problems than you are looking to solve. So with that let&rsquo;s get into RAID. I will <em>NOT</em> be cover RAID 5 as it is <em>unstable</em> and SHOULD NOT BE USED!</p> +<p>Must know commands for multiple disks:</p> +<blockquote> +<p>Add Disks before creating subvolume: <code>sudo btrfs device add /dev/sda1 /dev/sdb1</code><br> +Add Disk to existing subvolume: <code>sudo btrfs device add /dev/sdb1 /home</code><br> +Delete Disk from subvolume: <code>sudo btrfs device delete /dev/sdb1 /home</code></p> +</blockquote> +<p>Creating the RAID File System:</p> +<blockquote> +<p>RAID 1: <code>sudo btrfs -m raid1 -d raid1 /dev/sda1 /dev/sdb1</code><br> +RAID 10: <code>sudo btrfs -m raid10 -d raid10 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1</code></p> +</blockquote> +<p>Convert to to RAID 1 after adding disk to existing subvolume</p> +<blockquote> +<p><code>btrfs balance start -mconvert=raid1 -dconvert=raid1 /home</code></p> +</blockquote> +<p>I could put RAID 0 here&hellip; but honestly you should just use EXT4 or XFS if you are looking for performance. It would be better than using BTRFS!</p> +<h2 id="video-walkthrough">Video Walkthrough</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/J2QP4onqJKI" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Hugo Static Site Guide + https://christitus.com/hugo-guide/ + Wed, 08 Jan 2020 15:59:19 -0600 + + https://christitus.com/hugo-guide/ + <p>This article goes over the basics of hugo and guides you through the process of using a static site generator.</p> +<h2 id="installing-hugo">Installing Hugo</h2> +<p>Arch-Based Users: <code>yay -S hugo</code><br> +Debian-Based Users: <code>sudo apt install hugo</code><br> +<em>Note: Debian packages are old and I recommend downloading the latest version of hugo from github</em></p> +<p>Github Repo for Hugo (Latest Versions and Notes)<br> +<a href="https://github.com/gohugoio/hugo">Hugo GitHub</a><br> +<a href="https://gohugo.io">Official Site</a></p> +<p>Create your first site and install a theme using the <a href="https://gohugo.io/getting-started/quick-start/">Quick Start</a> Page.</p> +<h2 id="common-hugo-commands">Common Hugo Commands</h2> +<ul> +<li><code>hugo</code> - builds static files in the <code>siteroot/public</code> folder</li> +<li><code>hugo server</code> - runs a test site so you can login to http://127.0.0.1:1313 and see your changes before pushing live</li> +<li><code>hugo new posts/dir/newpost.md</code> - you can make new posts on the fly with all your templates (see below)</li> +</ul> +<h2 id="the-first-changes">The First Changes</h2> +<p>I made several changes when I first switched to HUGO and these were the changes I made.</p> +<h3 id="theme-modification">Theme Modification</h3> +<p>I downloaded the the <a href="https://themes.gohugo.io/mainroad/">Mainroad</a> Theme and installed it during the Quick Start. <em>Note: My Debian system had an old version of HUGO 0.40 and I had to update before the theme worked.</em></p> +<h4 id="changing-theme-widgets">Changing Theme Widgets</h4> +<h5 id="social-widget">Social Widget</h5> +<p>I first started to change the <em>social widget</em> by adding YouTube and Twitch from the following file <code>siteroot/themes/mainroad/layouts/partials/widgets/social.html</code>.<br> +The Most challengeing Part of this was the SVG files used by mainroad. However, once I figured out the SVG format can be edited in a simple text editor and I mirrored the size and types from the existing SVG files they showed up.</p> +<p>Here are the Edits I made to <em>social.html</em>:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">{{- with .Site.Params.widgets.social.twitch }} +</span></span><span class="line"><span class="cl"> &lt;div class=&#34;widget-social__item widget__item&#34;&gt; +</span></span><span class="line"><span class="cl"> &lt;a class=&#34;widget-social__link widget__link btn&#34; title=&#34;Twitch&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://twitch.tv/{{ . }}&#34; target=&#34;_blank&#34;&gt; +</span></span><span class="line"><span class="cl"> {{ partial &#34;svg/twitch.svg&#34; (dict &#34;class&#34; &#34;widget-social__link-icon&#34;) }} +</span></span><span class="line"><span class="cl"> &lt;span&gt;Twitch Live Streams&lt;/span&gt; +</span></span><span class="line"><span class="cl"> &lt;/a&gt; +</span></span><span class="line"><span class="cl"> &lt;/div&gt; +</span></span><span class="line"><span class="cl"> {{- end }} +</span></span></code></pre></div><p>Basically after getting the SVG setup and putting the twitch.svg and youtube.svg in this path <code>siteroot/mainroad/layouts/partials/svg</code> I was able to get the Social widget exactly how I wanted.</p> +<h5 id="tags-widget">Tags Widget</h5> +<p>Next up was fixing the tags on the sidebar. They were blocky and quite ugly, where I wanted a traditional tag cloud that you see on many other sites to help users navigate your content. So I began looking at other projects that had the proper code. I found the following code snippit:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">{{ if not (eq (len $.Site.Taxonomies.tags) 0) }} +</span></span><span class="line"><span class="cl"> {{ $fontUnit := &#34;rem&#34; }} +</span></span><span class="line"><span class="cl"> {{ $largestFontSize := 2.0 }} +</span></span><span class="line"><span class="cl"> {{ $largestFontSize := 2.5 }} +</span></span><span class="line"><span class="cl"> {{ $smallestFontSize := 1.0 }} +</span></span><span class="line"><span class="cl"> {{ $fontSpread := sub $largestFontSize $smallestFontSize }} +</span></span><span class="line"><span class="cl"> {{ $max := add (len (index $.Site.Taxonomies.tags.ByCount 0).Pages) 1 }} +</span></span><span class="line"><span class="cl"> {{ $min := len (index $.Site.Taxonomies.tags.ByCount.Reverse 0).Pages }} +</span></span><span class="line"><span class="cl"> {{ $spread := sub $max $min }} +</span></span><span class="line"><span class="cl"> {{ $fontStep := div $fontSpread $spread }} +</span></span><span class="line"><span class="cl">&lt;div class=&#34;widget-taglist widget&#34;&gt; +</span></span><span class="line"><span class="cl"> &lt;h4 class=&#34;widget__title&#34;&gt;{{ T &#34;tags_title&#34; }}&lt;/h4&gt; +</span></span><span class="line"><span class="cl"> &lt;div class=&#34;widget__content&#34;&gt; +</span></span><span class="line"><span class="cl"> &lt;div id=&#34;tag-cloud&#34; style=&#34;padding: 5px 15px&#34;&gt; +</span></span><span class="line"><span class="cl"> {{ range $name, $taxonomy := $.Site.Taxonomies.tags }} +</span></span><span class="line"><span class="cl"> {{ $currentTagCount := len $taxonomy.Pages }} +</span></span><span class="line"><span class="cl"> {{ $currentFontSize := (add $smallestFontSize (mul (sub $currentTagCount $min) $fontStep) ) }} +</span></span><span class="line"><span class="cl"> {{ $count := len $taxonomy.Pages }} +</span></span><span class="line"><span class="cl"> {{ $weigth := div (sub (math.Log $count) (math.Log $min)) (sub (math.Log $max) (math.Log $min)) }} +</span></span><span class="line"><span class="cl"> {{ $currentFontSize := (add $smallestFontSize (mul (sub $largestFontSize $smallestFontSize) $weigth) ) }} +</span></span><span class="line"><span class="cl"> &lt;!--Current font size: {{$currentFontSize}}--&gt; +</span></span><span class="line"><span class="cl"> &lt;a href=&#34;{{ &#34;/tags/&#34; | relLangURL }}{{ $name | urlize }}&#34; style=&#34;font-size:{{$currentFontSize}}{{$fontUnit}}&#34;&gt;{{ $name }}&lt;/a&gt; +</span></span><span class="line"><span class="cl"> {{ end }} +</span></span><span class="line"><span class="cl"> &lt;/div&gt; +</span></span><span class="line"><span class="cl"> &lt;/div&gt; +</span></span><span class="line"><span class="cl">&lt;/div&gt; +</span></span><span class="line"><span class="cl">{{ end }} +</span></span></code></pre></div><p>After replacing <code>siteroot/themes/mainroad/layouts/partials/widgets/taglist.html</code> with the following code. The tag cloud was complete.</p> +<h4 id="headerfooter-modification">Header/Footer Modification</h4> +<p>Replacing the Header and footer was extremely easy as it is just plain HTML. The files are located in <code>siteroot/themes/mainroad/layouts/partials/header.html or footer.html</code>. You can leave the stock, but I wanted to add a privacy policy and terms of service to be compliant.</p> +<h4 id="table-of-contents-changes">Table of Contents Changes</h4> +<p>I replaced the title &ldquo;PAGE CONTENTS&rdquo; with share buttons using a share-buttons.html I created. This could all be done in the post-toc.html file, but I wanted to keep it modular and not make too many edits to the theme. Here were my changes:</p> +<p><em>siteroot/themes/mainroad/layouts/partials/post-toc.html</em></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">{{ if .Param &#34;toc&#34; }} +</span></span><span class="line"><span class="cl">&lt;div class=&#34;post__toc toc&#34;&gt; +</span></span><span class="line"><span class="cl"> &lt;div class=&#34;toc__title&#34;&gt;{{ partial &#34;share-buttons.html&#34; . }}&lt;/div&gt; +</span></span><span class="line"><span class="cl"> &lt;div class=&#34;toc__menu&#34;&gt; +</span></span><span class="line"><span class="cl"> {{ .TableOfContents }} +</span></span><span class="line"><span class="cl"> &lt;/div&gt; +</span></span><span class="line"><span class="cl">&lt;/div&gt; +</span></span><span class="line"><span class="cl">{{ end }} +</span></span></code></pre></div><p><em>Note: I added the <code>{{ partial &quot;share-buttons.html&quot; . }}</code> to this and removed PAGE CONTENTS text</em></p> +<p><em>/siteroot/layouts/partials/share-buttons.html</em> - NEW FILE</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">{{ $pageurl := .Permalink }} +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl">&lt;style&gt; +</span></span><span class="line"><span class="cl">#share-buttons {display: inline-block; vertical-align: middle; } +</span></span><span class="line"><span class="cl">#share-buttons:after {content: &#34;&#34;; display: block; clear: both;} +</span></span><span class="line"><span class="cl">#share-buttons &gt; div { +</span></span><span class="line"><span class="cl">position: relative; +</span></span><span class="line"><span class="cl">text-align: left; +</span></span><span class="line"><span class="cl">height: 36px; +</span></span><span class="line"><span class="cl">width: 32px; +</span></span><span class="line"><span class="cl">float: left; +</span></span><span class="line"><span class="cl">text-align: center; +</span></span><span class="line"><span class="cl">} +</span></span><span class="line"><span class="cl">#share-buttons &gt; div &gt; svg {height: 16px; fill: #d5d5d5; margin-top: 10px;} +</span></span><span class="line"><span class="cl">#share-buttons &gt; div:hover {cursor: pointer;} +</span></span><span class="line"><span class="cl">#share-buttons &gt; div.facebook:hover &gt; svg {fill: #3B5998;} +</span></span><span class="line"><span class="cl">#share-buttons &gt; div.twitter:hover &gt; svg {fill: #55ACEE;} +</span></span><span class="line"><span class="cl">#share-buttons &gt; div.linkedin:hover &gt; svg {fill: #0077b5;} +</span></span><span class="line"><span class="cl">#share-buttons &gt; div.pinterest:hover &gt; svg {fill: #CB2027;} +</span></span><span class="line"><span class="cl">#share-buttons &gt; div.mail:hover &gt; svg {fill: #7D7D7D;} +</span></span><span class="line"><span class="cl">#share-buttons &gt; div.instagram:hover &gt; svg {fill: #C73B92;} +</span></span><span class="line"><span class="cl">#share-buttons &gt; div.facebook &gt; svg {height: 18px; margin-top: 9px;} +</span></span><span class="line"><span class="cl">#share-buttons &gt; div.twitter &gt; svg {height: 20px; margin-top: 8px;} +</span></span><span class="line"><span class="cl">#share-buttons &gt; div.linkedin &gt; svg {height: 19px; margin-top: 7px;} +</span></span><span class="line"><span class="cl">#share-buttons &gt; div.pinterest &gt; svg {height: 20px; margin-top: 9px;} +</span></span><span class="line"><span class="cl">#share-buttons &gt; div.mail &gt; svg {height: 14px; margin-top: 11px;} +</span></span><span class="line"><span class="cl">&lt;/style&gt; +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl">&lt;span style=&#34;color: silver;&#34;&gt;Share on: &lt;/span&gt;&lt;div id=&#34;share-buttons&#34;&gt; +</span></span><span class="line"><span class="cl">&lt;div class=&#34;facebook&#34; title=&#34;Share this on Facebook&#34; onclick=&#34;window.open(&#39;http://www.facebook.com/share.php?u={{ $pageurl }}&#39;);&#34;&gt;&lt;svg viewBox=&#34;0 0 1792 1792&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;&lt;path d=&#34;M1343 12v264h-157q-86 0-116 36t-30 108v189h293l-39 296h-254v759h-306v-759h-255v-296h255v-218q0-186 104-288.5t277-102.5q147 0 228 12z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt; +</span></span><span class="line"><span class="cl">&lt;div class=&#34;twitter&#34; title=&#34;Share this on Twitter&#34; onclick=&#34;window.open(&#39;http://twitter.com/home?status={{ $pageurl }}&#39;);&#34;&gt;&lt;svg viewBox=&#34;0 0 1792 1792&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;&lt;path d=&#34;M1684 408q-67 98-162 167 1 14 1 42 0 130-38 259.5t-115.5 248.5-184.5 210.5-258 146-323 54.5q-271 0-496-145 35 4 78 4 225 0 401-138-105-2-188-64.5t-114-159.5q33 5 61 5 43 0 85-11-112-23-185.5-111.5t-73.5-205.5v-4q68 38 146 41-66-44-105-115t-39-154q0-88 44-163 121 149 294.5 238.5t371.5 99.5q-8-38-8-74 0-134 94.5-228.5t228.5-94.5q140 0 236 102 109-21 205-78-37 115-142 178 93-10 186-50z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt; +</span></span><span class="line"><span class="cl">&lt;div class=&#34;linkedin&#34; title=&#34;Share this on Linkedin&#34; onclick=&#34;window.open(&#39;https://www.linkedin.com/shareArticle?mini=true&amp;url={{ $pageurl }}&amp;title=&amp;summary=&amp;source=&#39;);&#34;&gt;&lt;svg viewBox=&#34;0 0 1792 1792&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;&lt;path d=&#34;M477 625v991h-330v-991h330zm21-306q1 73-50.5 122t-135.5 49h-2q-82 0-132-49t-50-122q0-74 51.5-122.5t134.5-48.5 133 48.5 51 122.5zm1166 729v568h-329v-530q0-105-40.5-164.5t-126.5-59.5q-63 0-105.5 34.5t-63.5 85.5q-11 30-11 81v553h-329q2-399 2-647t-1-296l-1-48h329v144h-2q20-32 41-56t56.5-52 87-43.5 114.5-15.5q171 0 275 113.5t104 332.5z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt; +</span></span><span class="line"><span class="cl">{{ if .Params.image }}&lt;div class=&#34;pinterest&#34; title=&#34;Share this on Pinterest&#34; onclick=&#34;window.open(&#39;https://pinterest.com/pin/create/button/?url=&amp;media={{ .Params.image }}&amp;description=&#39;);&#34;&gt;&lt;svg viewBox=&#34;0 0 1792 1792&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;&lt;path d=&#34;M256 597q0-108 37.5-203.5t103.5-166.5 152-123 185-78 202-26q158 0 294 66.5t221 193.5 85 287q0 96-19 188t-60 177-100 149.5-145 103-189 38.5q-68 0-135-32t-96-88q-10 39-28 112.5t-23.5 95-20.5 71-26 71-32 62.5-46 77.5-62 86.5l-14 5-9-10q-15-157-15-188 0-92 21.5-206.5t66.5-287.5 52-203q-32-65-32-169 0-83 52-156t132-73q61 0 95 40.5t34 102.5q0 66-44 191t-44 187q0 63 45 104.5t109 41.5q55 0 102-25t78.5-68 56-95 38-110.5 20-111 6.5-99.5q0-173-109.5-269.5t-285.5-96.5q-200 0-334 129.5t-134 328.5q0 44 12.5 85t27 65 27 45.5 12.5 30.5q0 28-15 73t-37 45q-2 0-17-3-51-15-90.5-56t-61-94.5-32.5-108-11-106.5z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;{{ end }} +</span></span><span class="line"><span class="cl">&lt;div class=&#34;mail&#34; title=&#34;Share this through Email&#34; onclick=&#34;window.open(&#39;mailto:?&amp;body={{ $pageurl }}&#39;);&#34;&gt;&lt;svg viewBox=&#34;0 0 1792 1792&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;&lt;path d=&#34;M1792 710v794q0 66-47 113t-113 47h-1472q-66 0-113-47t-47-113v-794q44 49 101 87 362 246 497 345 57 42 92.5 65.5t94.5 48 110 24.5h2q51 0 110-24.5t94.5-48 92.5-65.5q170-123 498-345 57-39 100-87zm0-294q0 79-49 151t-122 123q-376 261-468 325-10 7-42.5 30.5t-54 38-52 32.5-57.5 27-50 9h-2q-23 0-50-9t-57.5-27-52-32.5-54-38-42.5-30.5q-91-64-262-182.5t-205-142.5q-62-42-117-115.5t-55-136.5q0-78 41.5-130t118.5-52h1472q65 0 112.5 47t47.5 113z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt; +</span></span><span class="line"><span class="cl">&lt;/div&gt; +</span></span></code></pre></div><h4 id="adding-adsense-and-custom-scripts-to-all-pages">Adding AdSense and Custom Scripts to All Pages</h4> +<p>To add specific scripts to all pages, such as AdSense, you will need to modify <code>siteroot/themes/mainroad/_defaults/baseof.html</code>. I added the following before the <code>&lt;/head&gt;</code> of this file to populate AdSense. You could put Analytics in here as well, but it isn&rsquo;t needed since mainroad theme has the option in <code>config.toml</code>. Here are my modifications:</p> +<p><em>baseof.html</em></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">{{- if not .Site.IsServer }} +</span></span><span class="line"><span class="cl"> {{ template &#34;_internal/google_analytics_async.html&#34; . }} +</span></span><span class="line"><span class="cl"> {{ partial &#34;adsense-auto.html&#34; . }} +</span></span><span class="line"><span class="cl"> {{- end }} +</span></span><span class="line"><span class="cl">&lt;/head&gt; +</span></span></code></pre></div><p><em>siteroot/layouts/partials/adsense-auto.html</em> - NEW FILE</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">&lt;script data-ad-client=&#34;ca-pub-000000000000000&#34; async src=&#34;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&#34;&gt;&lt;/script&gt; +</span></span></code></pre></div><p>_Note: Make sure to use your <em>ca-pub-IDGOESHERE</em></p> +<h3 id="configuration-of-configtoml">Configuration of config.toml</h3> +<p>In your siteroot you will see this file that you will need to configure. Most users will simply edit this and away they go. Everything in this file worked pretty darn well. There was a couple spots that tripped me up which I will go over now.</p> +<h4 id="baseurl">BaseURL</h4> +<p>Make sure you fill this out completely. I messed up the automated sitemap.xml because I simply put / instead of my entire address. This is what I have in the file now: <code>baseURL = &quot;https://christitus.com/&quot;</code></p> +<h4 id="analytics-social-and-titledescription">Analytics, Social, and Title/Description</h4> +<p>All of these options worked perfectly and I had no issues.</p> +<h4 id="menu">Menu</h4> +<p>The last problem I had was the menu at the top of my theme. I soon learned there was a syntax to the config.toml file that I missed. I simply added this to the bottom and changed the weight to sort the menu properly. Here is that code snippit:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">[menu] +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl"> [[menu.main]] +</span></span><span class="line"><span class="cl"> identifier = &#34;home&#34; +</span></span><span class="line"><span class="cl"> name = &#34;Home&#34; +</span></span><span class="line"><span class="cl"> pre = &#34;&lt;i class=&#39;fa fa-heart&#39;&gt;&lt;/i&gt;&#34; +</span></span><span class="line"><span class="cl"> url = &#34;/&#34; +</span></span><span class="line"><span class="cl"> weight = -110 +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl"> [[menu.main]] +</span></span><span class="line"><span class="cl"> name = &#34;Donate&#34; +</span></span><span class="line"><span class="cl"> post = &#34;&#34; +</span></span><span class="line"><span class="cl"> pre = &#34;&lt;i class=&#39;fa fa-road&#39;&gt;&lt;/i&gt;&#34; +</span></span><span class="line"><span class="cl"> url = &#34;https://www.patreon.com/christitustech&#34; +</span></span><span class="line"><span class="cl"> weight = -105 +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl"> [[menu.main]] +</span></span><span class="line"><span class="cl"> name = &#34;Remote Support&#34; +</span></span><span class="line"><span class="cl"> post = &#34;&#34; +</span></span><span class="line"><span class="cl"> pre = &#34;&lt;i class=&#39;fa fa-road&#39;&gt;&lt;/i&gt;&#34; +</span></span><span class="line"><span class="cl"> url = &#34;https://download.teamviewer.com/download/TeamViewerQS.exe&#34; +</span></span><span class="line"><span class="cl"> weight = -100 +</span></span></code></pre></div><p><em>Note: I added external site links and a proper home button</em></p> +<h3 id="templates-to-optimze-my-workflow">Templates to Optimze My Workflow</h3> +<p>This is where HUGO really shines and saves me a TON of time compared to WordPress and the like. Simply modifying the <code>siteroot/archetypes/default.md</code> file to put all the things I normally have in a post. Here is what I use:</p> +<p><em>default.md</em></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">--- +</span></span><span class="line"><span class="cl">title: &#34;{{ replace .Name &#34;-&#34; &#34; &#34; | title }}&#34; +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl">date: {{ .Date }} +</span></span><span class="line"><span class="cl">url: /{{ .Name }}/ +</span></span><span class="line"><span class="cl">image: images/2020-thumbs/{{ .Name }}.jpg +</span></span><span class="line"><span class="cl">categories: +</span></span><span class="line"><span class="cl"> - Linux +</span></span><span class="line"><span class="cl"> - Windows +</span></span><span class="line"><span class="cl"> - Networking +</span></span><span class="line"><span class="cl">tags: +</span></span><span class="line"><span class="cl"> - Ubuntu +</span></span><span class="line"><span class="cl">draft: true +</span></span><span class="line"><span class="cl">--- +</span></span><span class="line"><span class="cl">&lt;!--more--&gt; +</span></span></code></pre></div><p>Now everytime I run <code>hugo new posts/newpost.md</code> it will fill in the Title, date, custom url, thumbnail, add the more directive for list view, and my closing phrase.</p> +<h2 id="video-walkthrough">Video Walkthrough</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/6JaBian3vgI" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + +<h2 id="conclusion">Conclusion</h2> +<p>This has changed my life and has made it so I can make posts like this one for people to follow. This entire post took me about an hour to write and would have take twice as long if I were to do it in WordPress.</p> + + + + LightDM Configuration + https://christitus.com/lightdm-configuration/ + Wed, 08 Jan 2020 08:09:34 -0600 + + https://christitus.com/lightdm-configuration/ + <p>In this article I go over lightdm configuration. This will teach you how to modify lightdm to choose a default desktop environment, theme, autologin, and even a VNC connection.</p> +<p>Reference Articles:<br> +<a href="https://wiki.ubuntu.com/LightDM">Ubuntu Wiki</a><br> +<a href="https://wiki.archlinux.org/index.php/LightDM">Arch Wiki</a><br> +<a href="https://wiki.debian.org/LightDM">Debian Wiki</a></p> +<h2 id="installation">Installation</h2> +<p>For Debian based systems, install LightDM by typing <code>sudo apt install lightdm</code><br> +For Arch based systems, install LightDM by typing <code>sudo pacman -S lightdm</code></p> +<h3 id="activating-lightdm-on-startup">Activating LightDM on startup</h3> +<p>Before you can enable the lightdm service you will need to disable your current display manager.</p> +<p>For disabling SDDM (KDE Systems) type <code>sudo systemctl disable sddm</code><br> +For disabling GDM (Gnome Systems) type <code>sudo systemctl disable gdm</code></p> +<h2 id="configuration">Configuration</h2> +<p>Start out with opening up your <code>/etc/lightdm/lightdm.conf</code> and this is where most of the modifications will take place.</p> +<p>I will go over the 4 sections in the configuration that most will want to change or modify.</p> +<h3 id="changing-the-theme">Changing the Theme</h3> +<p>lightdm.conf</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">[Seat:*] +</span></span><span class="line"><span class="cl">#type=local +</span></span><span class="line"><span class="cl">#pam-service=lightdm +</span></span><span class="line"><span class="cl">#pam-autologin-service=lightdm-autologin +</span></span><span class="line"><span class="cl">#pam-greeter-service=lightdm-greeter +</span></span><span class="line"><span class="cl">#xserver-command=X +</span></span><span class="line"><span class="cl">#xmir-command=Xmir +</span></span><span class="line"><span class="cl">#xserver-config= +</span></span><span class="line"><span class="cl">#xserver-layout= +</span></span><span class="line"><span class="cl">#xserver-allow-tcp=false +</span></span><span class="line"><span class="cl">#xserver-share=true +</span></span><span class="line"><span class="cl">#xserver-hostname= +</span></span><span class="line"><span class="cl">#xserver-display-number= +</span></span><span class="line"><span class="cl">#xdmcp-manager= +</span></span><span class="line"><span class="cl">#xdmcp-port=177 +</span></span><span class="line"><span class="cl">#xdmcp-key= +</span></span><span class="line"><span class="cl">greeter-session=lightdm-slick-greeter ### CHANGE THIS +</span></span><span class="line"><span class="cl">#greeter-hide-users=false +</span></span><span class="line"><span class="cl">#greeter-allow-guest=true +</span></span><span class="line"><span class="cl">#greeter-show-manual-login=false +</span></span><span class="line"><span class="cl">#greeter-show-remote-login=true +</span></span></code></pre></div><p>Install what ever theme you want, this is called a greeter in lightdm, and then change the line above. After the changes are made you can either reboot or type <code>sudo systemctl restart lightdm</code> <em>Please Note: This will log you out</em></p> +<h3 id="changing-the-default-desktop-environment">Changing the Default Desktop Environment</h3> +<p>lightdm.conf</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">[Seat:*] +</span></span><span class="line"><span class="cl">#type=local +</span></span><span class="line"><span class="cl">#pam-service=lightdm +</span></span><span class="line"><span class="cl">#pam-autologin-service=lightdm-autologin +</span></span><span class="line"><span class="cl">#pam-greeter-service=lightdm-greeter +</span></span><span class="line"><span class="cl">#xserver-command=X +</span></span><span class="line"><span class="cl">#xmir-command=Xmir +</span></span><span class="line"><span class="cl">#xserver-config= +</span></span><span class="line"><span class="cl">#xserver-layout= +</span></span><span class="line"><span class="cl">#xserver-allow-tcp=false +</span></span><span class="line"><span class="cl">#xserver-share=true +</span></span><span class="line"><span class="cl">#xserver-hostname= +</span></span><span class="line"><span class="cl">#xserver-display-number= +</span></span><span class="line"><span class="cl">#xdmcp-manager= +</span></span><span class="line"><span class="cl">#xdmcp-port=177 +</span></span><span class="line"><span class="cl">#xdmcp-key= +</span></span><span class="line"><span class="cl">greeter-session=lightdm-slick-greeter +</span></span><span class="line"><span class="cl">#greeter-hide-users=false +</span></span><span class="line"><span class="cl">#greeter-allow-guest=true +</span></span><span class="line"><span class="cl">#greeter-show-manual-login=false +</span></span><span class="line"><span class="cl">#greeter-show-remote-login=true +</span></span><span class="line"><span class="cl">user-session=default ################ CHANGE THIS +</span></span><span class="line"><span class="cl">#allow-user-switching=true +</span></span><span class="line"><span class="cl">#allow-guest=true +</span></span><span class="line"><span class="cl">#guest-session= +</span></span></code></pre></div><p>To specify a specific desktop environment you need to change the user-session line to be your desktop environment. For example I use the awesome window manager for mine and I put <code>user-session=awesome</code><br> +<em>Note: If you don&rsquo;t know the name, the desktop environment list can be found with listing .desktop file from /usr/share/xsessions/*.desktop</em><br> +For complete listing of user sessions type: <code>ls /usr/share/xsessions/*.desktop</code></p> +<h3 id="autologin-with-lightdm">AutoLogin with LightDM</h3> +<p>Change the following part of the file to autologin. <em>Note: This does pose a security risk and should never be done in a business</em></p> +<p>lightdm.conf Under <code>[Seat:*]</code></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">autologin-guest=false +</span></span><span class="line"><span class="cl">autologin-user=username +</span></span><span class="line"><span class="cl">autologin-user-timeout=0 +</span></span><span class="line"><span class="cl">autologin-in-background=false +</span></span><span class="line"><span class="cl">#autologin-session= +</span></span></code></pre></div><p>I generally uncomment the following lines above and just change this line <code>autologin-user=username</code> and then it will autologin that user on the next reboot. <em>Note: You can use the <code>autologin-guest</code> instead of user to have it autologin as a guest account.</em></p> +<h3 id="vnc-connection">VNC Connection</h3> +<p>At the buttom of the lightdm.conf file you will see VNC connection information. This information uses the <code>tigervnc</code> package and also is done using secure channel. This means you must establish a SSH connection with a portforward before you can connect to VNC. Example: <code>ssh 192.168.69.10 -L 9901:localhost:5901</code> This establishes ssh and port forwards your local port 9901 to 5901 of the remote machine. Then you could launch VNC viewer with <code>vncviewer localhost:9901</code>. Even though this says localhost it is forwarding the request through SSH to the remote machine.</p> +<p>Now with that framework lets look at the conf file:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl"># +</span></span><span class="line"><span class="cl"># VNC Server configuration +</span></span><span class="line"><span class="cl"># +</span></span><span class="line"><span class="cl"># enabled = True if VNC connections should be allowed +</span></span><span class="line"><span class="cl"># command = Command to run Xvnc server with +</span></span><span class="line"><span class="cl"># port = TCP/IP port to listen for connections on +</span></span><span class="line"><span class="cl"># listen-address = Host/address to listen for VNC connections (use all addresses if not present) +</span></span><span class="line"><span class="cl"># width = Width of display to use +</span></span><span class="line"><span class="cl"># height = Height of display to use +</span></span><span class="line"><span class="cl"># depth = Color depth of display to use +</span></span><span class="line"><span class="cl"># +</span></span><span class="line"><span class="cl">[VNCServer] +</span></span><span class="line"><span class="cl">#enabled=false +</span></span><span class="line"><span class="cl">#command=Xvnc +</span></span><span class="line"><span class="cl">#port=5900 +</span></span><span class="line"><span class="cl">#listen-address= +</span></span><span class="line"><span class="cl">#width=1024 +</span></span><span class="line"><span class="cl">#height=768 +</span></span><span class="line"><span class="cl">#depth=8 +</span></span></code></pre></div><p>The main things to change here are <code>enabled=true</code> <code>width - height - depth</code> and then you are off. My typical defaults would look like the following:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">[VNCServer] +</span></span><span class="line"><span class="cl">enabled=true +</span></span><span class="line"><span class="cl">command=Xvnc +</span></span><span class="line"><span class="cl">port=5900 +</span></span><span class="line"><span class="cl">#listen-address= +</span></span><span class="line"><span class="cl">width=1920 +</span></span><span class="line"><span class="cl">height=1080 +</span></span><span class="line"><span class="cl">depth=16 +</span></span></code></pre></div><h2 id="video-walkthrough">Video Walkthrough</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/_dYqisDIcC0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Recommendations + https://christitus.com/recommendations/ + Thu, 02 Jan 2020 13:59:54 -0600 + + https://christitus.com/recommendations/ + <h1 id="thank-you">Thank you</h1> +<p>I appreciate the time you took to visit my recommendations as I strive to become fully independant using this website, affiliates, and digital downloads through <a href="https://www.cttstore.com">https://www.cttstore.com</a>.</p> +<p>Visiting christitus.com and buying any digital downloads from cttstore.com helps tremendously, as well as using any of the below affiliate links. These are products that I use and recommend. Sometimes these links will offer discounts above their retail offerings.</p> +<h2 id="affiliates-of-christituscom">Affiliates of Christitus.com</h2> +<ul> +<li><a href="https://partedmagic.com/store/?ref=35">Parted Magic Recovery Discs</a></li> +<li><a href="https://www.anrdoezrs.net/click-9109049-14329390">Roboform Password Management</a></li> +</ul> +<h2 id="amazon">Amazon</h2> +<ul> +<li><a href="https://www.amazon.com/shop/christitustech">Offical CTT Storefront</a></li> +<li><a href="https://www.amazon.com/kindle-dbs/hz/signup?ref_=assoc_tag_ph_1454291293420&amp;_encoding=UTF8&amp;camp=1789&amp;creative=9325&amp;linkCode=pf4&amp;tag=christitus-20&amp;linkId=ae8c7fa625e4e0d8d9fb0eeea5707422">Kindle Unlimited</a></li> +<li><a href="https://www.amazon.com/Audible-Free-Trial-Digital-Membership/dp/B00NB86OYE/?ref_=assoc_tag_ph_1485906643682&amp;_encoding=UTF8&amp;camp=1789&amp;creative=9325&amp;linkCode=pf4&amp;tag=christitus-20&amp;linkId=a7e3aeabd6fe76f9a76b525f6b9176f5">Audible - Get Two Free Audiobooks</a></li> +</ul> + + + + + How To Setup a VPN Kill Switch Server + https://christitus.com/vpn-kill-switch/ + Mon, 02 Dec 2019 05:31:59 +0000 + + https://christitus.com/vpn-kill-switch/ + <p>This will show you how to set up a VPN Kill Switch so all traffic will come from that server. For this server, I am using CentOS, but you can easily use Ubuntu server if you are more familiar with that.</p> +<h2 id="install-packages">Install packages</h2> +<p><img src="../images/2019/12/instal.png" alt="install image"></p> +<p><code>sudo apt install openvpn ufw -y</code><br> +<em>*Note: use apt instead of dnf on Ubuntu or Debian Servers</em></p> +<h2 id="set-static-ip">Set Static IP</h2> +<p><code>sudo nmtuisudo nmcli connection down eth0 &amp;&amp; sudo nmcli connection up eth0</code></p> +<h2 id="download-ovpn-files">Download OVPN Files</h2> +<p>My recommendation for a Public VPN Provider is Express VPN. It is what I use below and in my VPN videos due to its speed and amount of servers. This is my affiliate link where you will receive an extra 3 months free for signing up for a year. <a href="https://christitus.com/expressvpn">https://christitus.com/expressvpn</a><br> +<strong>However, you can use these instructions on ANY VPN that provides ovpn files which any reputable VPN provider has.</strong></p> +<p><code>mv ~/Downloads/client.ovpn /etc/openvpn/test.conf</code></p> +<!--adsense--> +<h2 id="service-creation">Service creation</h2> +<p><img src="../images/2019/12/sysinstall.png" alt="sysinstall image"></p> +<p><code>ls /lib/systemd/system/</code><br> +<em>*Check for openvpn-client@ or openvpn@</em><br> +<code>sudo systemctl start openvpn@test</code></p> +<h2 id="disable-ipv6-and-secure-system">Disable ipv6 and Secure System</h2> +<p><img src="../images/2019/12/sysctl.png" alt="sysctl"></p> +<p><code>sudo nano /etc/sysctl.conf</code></p> +<blockquote> +<p>net.ipv6.conf.all.disable_ipv6=1<br> +net.ipv6.conf.default.disable_ipv6=1<br> +net.ipv6.conf.lo.disable_ipv6=1</p> +</blockquote> +<p><code>sudo sysctl -p</code></p> +<p><strong>Verify Ipv6 is disabled</strong><br> +<code>cat /proc/sys/net/ipv6/conf/all/disable_ipv6</code><br> +<code>sudo sysctl --all | grep disable_ipv6</code></p> +<h2 id="firewall-ufw-blocks-8211-vpn-kill-switch">Firewall ufw blocks – VPN Kill Switch</h2> +<p><img src="../images/2019/12/vpnsetup.png" alt="install image"></p> +<p><code>sudo nano /etc/default/ufw</code></p> +<blockquote> +<p>IPV6=no</p> +</blockquote> +<p><strong>Whitelist Local Area Network</strong><br> +<code>sudo ufw allow in to 192.168.1.0/24</code><br> +<code>sudo ufw allow out to 192.168.1.0/24</code><br> +<strong>Block All Incoming and Outgoing Traffic by Default</strong><br> +<code>sudo ufw default deny outgoing</code><br> +<code>sudo ufw default deny incoming</code><br> +<strong>Whitelist VPN Port for VPN Establishment</strong><br> +<code>sudo ufw allow out to any port 1194 proto udp</code><br> +<em>*check port by doing head /etc/openvpn/expressvpn.conf</em><br> +<strong>Whitelist VPN Tunnel</strong><br> +<code>sudo ufw allow out on tun0 from any to any</code><br> +<code>sudo ufw allow in on tun0 from any to any</code><br> +<strong>Enable Firewall</strong><br> +<code>sudo ufw enable</code></p> +<h2 id="external-program-setup-on-server">External Program Setup on Server</h2> +<p><img src="../images/2019/12/transmission.png" alt="install image"></p> +<p><strong>X11 Forwarding</strong><br> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/auePeI8vZA8" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> +</p> +<p><strong>Transmission daemon</strong><br> +<code>sudo apt install transmission-daemon</code><br> +<code>sudo systemctl stop transmission-daemon</code><br> +<code>sudo nano /etc/transmission-daemon/settings.json</code><br> +<em>*enable rpc and whitelist, add blocklist</em><br> +<code>sudo systemctl start transmission-daemon</code></p> +<h2 id="full-video-walkthrough">Full Video Walkthrough</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/wc-Ti8UoPoA" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + LVM (Logical Volume Management) – Combine Physical Drives and more! + https://christitus.com/lvm-guide/ + Fri, 08 Nov 2019 23:06:31 +0000 + + https://christitus.com/lvm-guide/ + <p>LVM is a very cool volume management tool. It can be used for a variety of tasks and this guide explains all the things LVM can do. I also do an example video of combining physical hard drives using LVM.</p> +<p><strong>Acronyms you must know!</strong><br> +<strong>PV</strong> – Physical Volume<br> +<strong>VG</strong> – Volume Group<br> +<strong>LV</strong> – Logical Volume<figure class="wp-block-image"></p> +<p><img src="https://christitus.com/images/2019/11/lvm-key.jpeg" alt="lvm-key"></p> +<h2 id="lvm-commands">LVM Commands</h2> +<h3 id="lvm-layer-1-8211-hard-drives-partitions-and-physical-volumes">LVM Layer 1 – Hard Drives, Partitions, and Physical Volumes</h3> +<p><code>lvmdiskscan</code> – system readout of volumes and partitions<br> +<code>pvdisplay</code> – display detailed info on physical volumes<br> +<code>pvscan</code> – display disks with physical volumes<br> +<code>pvcreate /dev/sda1</code> – create a physical volume from sda1<br> +<code>pvchange -x n /dev/sda1</code> – Disallow using a disk partition<br> +<code>pvresize /dev/sda1</code> – resize sda1 PV to use all of the partition<br> +<code>pvresize --setphysicalvolumesize 140G /dev/sda1</code> – resize sda1 to 140g<br> +<code>pvmove /dev/sda1</code> – can move data out of sda1 to other PVs in VG. Note: Free disk space equivalent to data moved is needed elsewhere.<br> +<code>pvremove /dev/sda1</code> – delete Physical volume</p> +<h3 id="lvm-layer-2-8211-volume-groups">LVM Layer 2 – Volume Groups</h3> +<p><code>vgcreate vg1 /dev/sda1 /dev/sdb1</code> – create a volume group from two drives<br> +<code>vgextend vg1 /dev/sdb1</code> – add PV to the volume group<br> +<code>vgdisplay vg1</code> – Display details on a volume group<br> +<code>vgscan</code> – list volume groups<br> +<code>vgreduce vg1 /dev/sda1</code> – Removes the drive from vg1<br> +<em>Note: use pvmove /dev/sda1 before removing the drive from vg1</em><br> +<code>vgchange</code> – you can activate/deactive and change perameteres<br> +<code>vgremove vg1</code> – Remove volume group vg1<br> +<code>vgsplit</code> and <code>vgmerge</code> can split and merge volume groups<br> +<code>vgrename</code>– renames a volume group</p> +<h3 id="lvm-layer-3-8211-logical-volumes-and-file-systems">LVM Layer 3 – Logical Volumes and File Systems</h3> +<p><code>lvcreate -L 10G vg1</code> – create a 10 GB logical volume on volume group vg1<br> +<code>lvchange</code> and <code>lvreduce</code> are commands that typically aren’t used<br> +<code>lvrename</code>– rename logical volume<br> +<code>lvremove</code> – removes a logical volume<br> +<code>lvscan</code> – shows logical volumes<br> +<code>lvdisplay</code> – shows details on logical volumes<br> +<code>lvextend -l +100%FREE /dev/vg1/lv1</code>– One of the most common commands used to extend logical volume lv1 that takes up ALL of the remaining free space on the volume group vg1.<br> +<code>resize2fs /dev/vg1/lv1</code> – resize the file system to the size of the logical volume lv1.</p> +<h2 id="lvm-conclusion">LVM conclusion</h2> +<p>LVM is fantastic for managing a system, but remember that the more drives you make in a volume group that the likely it is to fail. Instead of having one point of failure you can open yourself up for multiple points when making a large system with multiple drives.</p> +<h2 id="video-walkthrough">Video Walkthrough</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/scMkYQxBtJ4" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Hackintosh Ryzen Install + https://christitus.com/hackintosh-ryzen-install/ + Tue, 29 Oct 2019 01:13:21 +0000 + + https://christitus.com/hackintosh-ryzen-install/ + <p>Here is the basic install instruction for the Hackintosh Ryzen install that I used on my Ryzen 2700 with an RX 580.</p> +<p><img src="https://christitus.com/images/2019/10/usb-drive-300x230.png" alt="usb-drive"></p> +<h2 id="download-dmg-file-for-flash-drive">Download DMG File for Flash Drive</h2> +<p><em>Source Article:</em> <a href="https://forum.amd-osx.com/viewtopic.php?p=33500#p33500">https://forum.amd-osx.com/viewtopic.php?p=33500#p33500</a></p> +<p>The above article is from XLNC and it goes over the creation process of the DMG file and everything he put into it. I must say he did a fantastic job with the media creation.</p> +<p>Download Links from Source Article:<br> +CLOVER EDITION : <a href="https://goo.gl/T3kBCN">https://goo.gl/T3kBCN</a><br> +ENOCH EDITION : <a href="https://goo.gl/SVZ4ea">https://goo.gl/SVZ4ea</a></p> +<p>Note: I used the Clover Edition and is my recommendation</p> +<h2 id="burn-dmg-file-with-transmac-windows-or-dd-linux">Burn DMG File with TransMac (Windows) or DD (Linux)</h2> +<p><img src="https://christitus.com/images/2019/10/transmac.jpeg" alt="transmac"></p> +<h3 id="transmac-download-windows-httpswwwacutesystemscomscrtmhtm">TransMac Download (Windows) <a href="https://www.acutesystems.com/scrtm.htm">https://www.acutesystems.com/scrtm.htm</a></h3> +<h3 id="dd-linux">DD (Linux)</h3> +<ul> +<li>Install DMG2IMG <code>$ sudo apt install dmg2img</code></li> +<li><code>$ sudo dmg2img macoshs_download.dmg macoshs_drive.iso</code></li> +<li><code>$ sudo dd if=macoshs_drive.iso of=/dev/sdX bs=1M</code></li> +</ul> +<p><img src="https://christitus.com/images/2019/10/bios-1.png" alt="bios-1"></p> +<h2 id="change-your-pc8217s-bios-settings-for-your-hackintosh-ryzen-install">Change Your PC’s BIOS Settings for your Hackintosh Ryzen Install</h2> +<ul> +<li>HPET (High Precision Timers) =Enabled</li> +<li>SATA Mode = AHCI</li> +<li>Execute Disable Bit = Enabled</li> +<li>Max CPUID Value Limit = Disabled</li> +<li>BIOS EHCI Handoff = Enabled</li> +<li>Legacy USB Support = Enabled</li> +<li>CSM (Legacy BIOS Mode) = Disabled</li> +<li>UEFI options should be enabled</li> +<li>XHCI and EHCI Hand-Off = Enabled</li> +</ul> +<p><img src="https://christitus.com/images/2019/10/MacOSX-1-e1572309977936.png" alt="MacOSX"></p> +<h2 id="insert-media-and-start-installation">Insert Media and Start Installation</h2> +<p>Boot into macOS by using the USB media. Once in the launcher start disk utility and partition the disk for macOS.</p> +<p><img src="https://christitus.com/images/2019/10/diskutility.png" alt="diskutility"></p> +<p>Once you have partitioned your drive, you will need to go ahead and continue the installation. Complete the installation and reboot your PC.</p> +<p>Launch back into the USB Drive Installer and this time we will launch terminal. From Terminal we will run the command <strong>XLNC</strong></p> +<p><img src="https://christitus.com/images/2019/10/xlnc.png" alt="xlnc"></p> +<p>Select the following options when the XLNC installer pops up:</p> +<ol> +<li>Bronya</li> +<li>Post Install +<ul> +<li>Type: YourDiskName</li> +<li>y to all the following questions</li> +</ul> +</li> +</ol> +<p>Reboot again, but this time when we launch the USB Menu, we will launch into the macOS we just created</p> +<p>Setup your Mac with your account and details</p> +<p><img src="https://christitus.com/images/2019/10/clover.png" alt="clover"></p> +<p>Download the Clover Configurator Utility<br> +<a href="https://mackie100projects.altervista.org/download-clover-configurator/">https://mackie100projects.altervista.org/download-clover-configurator/</a></p> +<p>Mount both the EFI partition from the USB and the Recovery HD</p> +<p>Copy the EFI Folder from the USB to the Recovery HD and then unmount both partitions and reboot your PC!</p> +<p>FINISHED with the Hackintosh Ryzen Install!</p> +<h2 id="video-walkthrough">Video Walkthrough</h2> +<p><a href="https://www.bitchute.com/video/P943EtODU3dH/">https://www.bitchute.com/video/P943EtODU3dH/</a></p> + + + + Clean Up Windows 10 + https://christitus.com/clean-up-windows-10/ + Mon, 14 Oct 2019 20:08:01 +0000 + + https://christitus.com/clean-up-windows-10/ + <p>In this article, we will clean up Windows 10. This will include debloat, startup maintenance, system tweaks, and privacy settings. These 3 stages are broken down below and will help maintain a healthy Windows 10 system. I’d recommend re-running these steps every 6 months.</p> +<h2 id="july-2021-update---ctt-official-debloat-launched">July 2021 Update - CTT Official Debloat Launched</h2> +<p>Check out the updated debloat and utility toolbox here: <a href="https://christitus.com/debloat-windows-10-2020/">https://christitus.com/debloat-windows-10-2020/</a></p> +<p>Old Content is below with an older method of debloating Windows 10.</p> +<h2 id="step-1-debloat-windows-10">Step 1: Debloat Windows 10</h2> +<p>We will be utilizing PowerShell to clean up Windows 10 and get rid of a bunch of useless bloat that is included with it.</p> +<h3 id="download-powershell-script">Download PowerShell Script</h3> +<p><img src="../../images/2019/10/Screenshot_20191014_144201.png" alt="Screenshot_20191014_144201"></p> +<h4 id="run-powershell-script">Run PowerShell Script</h4> +<p><img src="../../images/2019/10/runcmd.png" alt="runcmd"></p> +<p><code>iex ((New-Object System.Net.WebClient).DownloadString('https://git.io/debloat'))</code></p> +<p><strong>Note: This will remove many apps in the Microsoft Store. Games, Office 365 and things that utilize the Microsoft Store. If unsure, use the customize blacklist and only tick the boxes of things you want to remove!</strong><br> +Source: <a href="https://github.com/Sycnex/Windows10Debloater">https://github.com/Sycnex/Windows10Debloater</a></p> +<h2 id="step-2-clean-up-windows-10-startup">Step 2: Clean Up Windows 10 Startup</h2> +<p><img src="../../images/2019/10/taskmanager.png" alt="taskmanager"></p> +<p><strong>Launch Task Manager</strong> and then click the startup tab. You need to disable any unneeded programs from here.</p> +<h3 id="changing-startup-programs-advanced-users">Changing Startup Programs (Advanced Users)</h3> +<p><img src="../../images/2019/10/startup10.png" alt="startup10"></p> +<p>You can change startup programs from Start-Run-Type:<code>shell:startup</code> and Start-Run-Type: <code>shell:common startup</code></p> +<p>You can also modify startup programs using registry editor HKCU or <code>HKLM\Software\Microsoft\Windows\CurrrentVersion\Run</code></p> +<p>Cleanup <strong>Task Scheduler</strong>, as it accumulates many things that cause an install to be slow and is vital when you clean up Windows 10.</p> +<h2 id="step-3-system-tweaks-and-privacy">Step 3: System Tweaks and Privacy</h2> +<p>There is literally hundreds of settings in Windows 10 that are privacy concerns and why I’d recommend using a 3rd party software for this. However, you can do all the same tweaks by simply going through settings and doing all these manually. That said, I recommend using O&amp;O Shutup10 for optimal tweaks and privacy.</p> +<p><img src="../../images/2019/10/oo-shutup10.png" alt="oo-shutup10"></p> +<p>Download: <a href="https://www.oo-software.com/en/shutup10">https://www.oo-software.com/en/shutup10</a></p> +<p>I also tell everyone to use the <strong>recommended settings</strong> as the other settings can have unintended consequences.</p> +<h3 id="other-recommended-settings">Other Recommended Settings</h3> +<p><strong>Turn off Hibernation:</strong> powercfg /hibernate off<br> +<strong>Modify Applications Menu:</strong> explorer shell:AppsFolder<br> +<strong>Change Windows 10 Start Menu:</strong> shell:StartMenuAllPrograms or shell:Start Menu</p> +<h2 id="video-walkthrough">Video Walkthrough</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/mWHiP9K8fQ0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + How to Secure A Web Server + https://christitus.com/secure-web-server/ + Thu, 10 Oct 2019 13:37:49 +0000 + + https://christitus.com/secure-web-server/ + <p>In this article, I show you all the steps needed to secure a web server and improve your security. I recommend doing all of these things on every installation. Also, just because you secure your server doesn’t mean you can neglect it. I highly recommend monitoring it and adjusting security as needed. Monitoring is required for proper security in my opinion.</p> +<h1 id="secure-a-web-server-steps">Secure A Web Server Steps</h1> +<p><img src="https://christitus.com/images/2019/10/firewall-png-577x359.png" alt="firewall-png-577&amp;#215;359"></p> +<p><strong>Install UFW</strong></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo apt-get update +</span></span><span class="line"><span class="cl">sudo apt-get install ufw +</span></span><span class="line"><span class="cl">sudo ufw limit 22/tcp +</span></span><span class="line"><span class="cl">sudo ufw allow 80/tcp +</span></span><span class="line"><span class="cl">sudo ufw allow 443/tcp +</span></span><span class="line"><span class="cl">sudo ufw enable +</span></span></code></pre></div><p><strong>Verify</strong><br> +<code>sudo ufw status</code></p> +<p><strong>Do Global blocks</strong></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo ufw default deny incoming +</span></span><span class="line"><span class="cl">sudo ufw default allow outgoing +</span></span></code></pre></div><p><img src="https://christitus.com/images/2019/09/ssh.png" alt="ssh"></p> +<h2 id="change-ssh-to-key">Change SSH to Key</h2> +<p><strong>Remote Machine</strong>: <code>ssh-keygen -t rsa</code></p> +<h3 id="transfer-to-server">Transfer to Server</h3> +<h4 id="method-1">Method 1:</h4> +<p><strong>Transfer pub ssh key to server</strong></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">scp ~/.ssh/id_rsa.pub user@server.com:~ +</span></span><span class="line"><span class="cl">cat ~/id_rsa.pub &gt;&gt; ~/.ssh/authorized_keys +</span></span></code></pre></div><h4 id="method-2">Method 2:</h4> +<p>Copy key and place in authorized_key file in one command<br> +<code>ssh-copy-id -i ~/.ssh/id_rsa.pub user@server.com</code></p> +<h3 id="secure-a-web-server-disabling-password-auth-through-ssh">Secure a Web Server Disabling Password Auth through SSH</h3> +<p><strong>Change the following lines in /etc/sshd_config</strong></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">ChallengeResponseAuthentication no +</span></span><span class="line"><span class="cl">PasswordAuthentication no +</span></span><span class="line"><span class="cl">UsePAM no +</span></span><span class="line"><span class="cl">PermitRootLogin no +</span></span></code></pre></div><h2 id="edit-etcsysctlconf">Edit /etc/sysctl.conf</h2> +<p>Enable security features</p> +<p><img src="https://christitus.com/images/2019/10/settings.png" alt="settings"></p> +<h2 id="prevent-ip-spoof-etchostconf">Prevent IP Spoof /etc/host.conf</h2> +<p>Change File to mirror below:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">​order bind,hosts +</span></span><span class="line"><span class="cl">multi on +</span></span><span class="line"><span class="cl">nospoof on +</span></span></code></pre></div><h2 id="install-fail2ban">Install Fail2Ban</h2> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo apt install fail2ban +</span></span><span class="line"><span class="cl">sudo systemctl enable fail2ban +</span></span><span class="line"><span class="cl">sudo systemctl start fail2ban +</span></span></code></pre></div><h2 id="check-listening-ports">Check Listening Ports</h2> +<p><code>netstat -tunlp</code></p> +<p>You will now have completed the basics of a secure web server!</p> +<h2 id="video-walkthrough">Video Walkthrough</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/7pJKBL9x6bY" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + How to Learn Linux + https://christitus.com/learn-linux/ + Thu, 10 Oct 2019 01:42:05 +0000 + + https://christitus.com/learn-linux/ + <p>This article gives you the resources on how to learn Linux. If I am missing a resource, be sure and comment so I can add it.</p> +<table> +<thead> +<tr> +<th style="text-align:center"><img src="https://christitus.com/images/2019/10/wiki-261x300.png" alt="wiki"></th> +<th style="text-align:center"><img src="https://christitus.com/images/2019/10/help-300x252.png" alt="help"></th> +</tr> +</thead> +<tbody> +<tr> +<td style="text-align:center"><a href="https://wiki.archlinux.org/">Arch Linux Wiki</a></td> +<td style="text-align:center"><a href="https://christitus.com/discord">CTT Discord</a></td> +</tr> +<tr> +<td style="text-align:center"><a href="https://wiki.debian.org/">Debian Wiki</a></td> +<td style="text-align:center"><a href="https://discord.gg/fedora">Fedora&rsquo;s Discord</a></td> +</tr> +<tr> +<td style="text-align:center"><a href="https://wiki.ubuntu.com/">Ubuntu Wiki</a></td> +<td style="text-align:center"><a href="https://www.reddit.com/r/linux4noobs/">Linux4Noobs</a></td> +</tr> +<tr> +<td style="text-align:center"><a href="https://en.opensuse.org/Main_Page">OpenSUSE Wiki</a></td> +<td style="text-align:center"><a href="https://www.linuxquestions.org/questions/">Linux Questions Forums</a></td> +</tr> +<tr> +<td style="text-align:center"><a href="https://fedoraproject.org/wiki/Fedora_Project_Wiki">Fedora Wiki</a></td> +<td style="text-align:center"><a href="https://ubuntuforums.org/index.php">Ubuntu Forums</a></td> +</tr> +<tr> +<td style="text-align:center"></td> +<td style="text-align:center"><a href="https://bbs.archlinux.org/">Arch Linux Forums</a></td> +</tr> +</tbody> +</table> +<table> +<thead> +<tr> +<th style="text-align:center"><img src="https://christitus.com/images/2019/10/playbutton-150x150.png" alt="videos"></th> +<th style="text-align:center"><img src="https://christitus.com/images/2019/10/Screenwriting-Websites-300x241.jpg" alt="externalsites"></th> +</tr> +</thead> +<tbody> +<tr> +<td style="text-align:center"><a href="https://www.youtube.com/playlist?list=PLc7fktTRMBowM-n5VXCUobY0eddQ1H4YV">CTT Linux Tutorial Videos</a></td> +<td style="text-align:center"><a href="https://itsfoss.com/?">It&rsquo;s FOSS</a></td> +</tr> +<tr> +<td style="text-align:center"><a href="https://www.theurbanpenguin.com/operating-system-tutorials/">The Urban Penguin&rsquo;s OS Tutorial Videos</a></td> +<td style="text-align:center"><a href="https://www.linuxuprising.com/">Linux Uprising</a></td> +</tr> +<tr> +<td style="text-align:center"><a href="https://christitus.com/pluralsight">Pluralsight (Classroom Style Courses - PAID)</a></td> +<td style="text-align:center"><a href="https://linoxide.com/">Lin0xide</a></td> +</tr> +</tbody> +</table> +<p>Video Overview of Learning Resources + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/a2qblT7o4mE" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> +</p> + + + + Custom Kernel in Linux + https://christitus.com/custom-kernel/ + Sun, 29 Sep 2019 00:32:45 +0000 + + https://christitus.com/custom-kernel/ + <p>This Guide walks your through how to install a custom kernel on Linux. I will go over performing this in a Debian-based system and an Arch-based system. Please note that the arch based system requires you to build the kernel yourself and will take much longer.</p> +<p>Custom kernels in Linux are based on the Zen project and have some workstation/desktop optimizations. They are <strong>NOT</strong> meant for server installations. These are meant for those using Linux Desktop and utilizing it for Gaming, Production, etc. and overall I don’t recommend using these. However, if you like to tinker and squeeze every bit of performance out of your kernel than you can proceed.</p> +<p><img src="https://christitus.com/images/2019/09/debian.svg" alt="debian"></p> +<h2 id="custom-kernel-on-ubuntu--debian--mint--pop-os">Custom Kernel on Ubuntu / Debian / Mint / Pop OS</h2> +<p><em>Official Site <a href="https://liquorix.net/">https://liquorix.net/</a> for the Liquorix Kernel.</em></p> +<p><strong>Vanilla Debian</strong> requires a bit of a long command to install the custom kernel, but works fine.</p> +<p><code>codename=&quot;$(find /etc/apt -type f -name '*.list' | xargs grep -E '^deb' | awk '{print $3}' | grep -Eo '^[a-z]+' | sort | uniq -c | sort -n | tail -n1 | grep -Eo '[a-z]+$')&quot; &amp;&amp; sudo apt-get update &amp;&amp; sudo apt-get install apt-transport-https &amp;&amp; echo -e &quot;deb http://liquorix.net/debian $codename maindeb-src http://liquorix.net/debian $codename main# Mirrors:## Unit193 - France# deb http://mirror.unit193.net/liquorix $codename main# deb-src http://mirror.unit193.net/liquorix $codename main&quot; | sudo tee /etc/apt/sources.list.d/liquorix.list &amp;&amp; curl https://liquorix.net/linux-liquorix.pub | sudo apt-key add - &amp;&amp; sudo apt-get update</code></p> +<p><strong>Ubuntu,</strong> <strong>Linux</strong> <strong>Mint</strong>, and <strong>Pop</strong> <strong>OS</strong>! are quite a bit shorter for the install.</p> +<p><code>sudo add-apt-repository ppa:damentz/liquorix &amp;&amp; sudo apt-get update</code><br> +<code>sudo apt-get install linux-image-liquorix-amd64 linux-headers-liquorix-amd64</code></p> +<p><img src="https://christitus.com/images/2019/09/arch.png" alt="arch"></p> +<h2 id="custom-kernel-on-arch-linux-manjaro-etc">Custom Kernel on Arch Linux, Manjaro, etc.</h2> +<p>For Arch-based systems the command to run is simplier than all of the above. However, this is <strong>BUILDING</strong> a kernel and on a low-end system this will take <strong>HOURS</strong>.<br> +<em>Example: On my AMD Ryzen 2700 with 16 threads and 8 cores, this took almost 60 minutes!</em></p> +<p><code>yay -S linux-lqx</code><br> +<em>Note: This uses yay as the AUR helper. you may need to change this if you use something else like Yaourt, pacaur, trizen, etc.</em></p> +<p>For modifying which Kernel you are going to boot in check out these videos going over modifying GRUB</p> +<h2 id="custom-boot-grub-rescue-and-ukuu-youtube-videos">Custom Boot (Grub, Rescue, and UKUU) YouTube Videos</h2> +<p>The following videos will help you if you need to revert your kernel or setup multiple kernels to boot into your Linux installation. This is highly recommended.</p> +<p>Grub Customizer: <a href="https://www.youtube.com/watch?v=3s7qBJ-H7vw">https://www.youtube.com/watch?v=3s7qBJ-H7vw</a><br> +Grub Rescue: <a href="https://www.youtube.com/watch?v=r7meKJsjqfY">https://www.youtube.com/watch?v=r7meKJsjqfY</a><br> +Kernel Upgrade with UKUU: <a href="https://www.youtube.com/watch?v=fnn_MzosdwA">https://www.youtube.com/watch?v=fnn_MzosdwA</a></p> +<h2 id="video-walkthrough">Video Walkthrough</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/nd0MysqLDB0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Linux File System | Directory Structure + https://christitus.com/linux-file-system/ + Mon, 23 Sep 2019 17:23:00 +0000 + + https://christitus.com/linux-file-system/ + <p>This article details the Linux File System and it’s directory structure.</p> +<h2 id="linux-file-system-8211-root">Linux File System – Root</h2> +<ul> +<li><strong>/</strong> -This is the root directory which should contain only the directories needed at the top level of the file structure</li> +<li><strong>/bin</strong> – This is where the executable files are located. These files are available to all users, but do not add programs manually here</li> +<li><strong>/dev</strong> – These are devices in your system – Not Mounted!</li> +<li><strong>/etc</strong> – Superuser directory commands, configuration files, disk configuration files, valid user lists, groups, ethernet, hosts, etc.</li> +<li><strong>/lib</strong> – Contains shared library files and sometimes other kernel-related files</li> +<li><strong>/boot</strong> – Contains files for booting the system /boot/efi for EFI systems</li> +<li><strong>/home</strong> – Contains the home directory for users and other accounts</li> +<li><strong>/media</strong> – Typically used to mount permanent file systems</li> +<li><strong>/mnt</strong> – Used to mount other temporary file systems, such as cdrom and floppy for the CD-ROM drive and floppy diskette drive, respectively</li> +<li><strong>/proc</strong> – Contains all processes marked as a file by process number or other information that is dynamic to the system</li> +<li><strong>/tmp</strong> – Holds temporary files used between system boots</li> +<li><strong>/usr</strong> – (Unix System Resource) Used for miscellaneous purposes, and can be used by many users. Includes administrative commands, shared files, library files, and others</li> +<li><strong>/var</strong> – Typically contains variable-length files such as log and print files and any other type of file that may contain a variable amount of data</li> +<li><strong>/sbin</strong> – Contains binary (executable) files, usually for system administration. For example, fdisk and ifconfig utlities</li> +<li><strong>/kernel</strong> – Contains kernel files</li> +</ul> +<h2 id="home-directory-structure">Home Directory Structure</h2> +<p>/home/user is the home directory for your user and it is often abbreviated with a ~. Folders starting with a period are hidden and can be looked at via options in file browser or <code>ls -al</code> in terminal.</p> +<ul> +<li><strong>~/.cache</strong> – Cache files for that user</li> +<li><strong>~/.config</strong> – User Configuration files for your programs.</li> +<li><strong>~/.local/share</strong> – User Configuration files for your system. Edit Application in start menu, modify system configurations for your user, etc.</li> +<li><strong>~/.ssh</strong> – SSH configuration and keys</li> +<li><strong>~/.vnc</strong> – VNC remote desktop configuration files</li> +<li><strong>~/.steam</strong> – default steam location for games and config files</li> +<li><strong>~/.bashrc</strong> (FILE) – This file controls shortcuts and aliases that you use in Terminal</li> +</ul> +<p>This details the Linux File System and should give you a better understanding of how to navigate around in not only a Linux system, but any UNIX based OS for that matter.</p> +<h2 id="video-walkthrough">Video Walkthrough</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/roES8iAaJEM" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + + + How to Setup a VPN Server and Clients Using OpenVPN + https://christitus.com/openvpn-server/ + Sat, 21 Sep 2019 04:45:08 +0000 + + https://christitus.com/openvpn-server/ + <p>In this article, I go over how to setup a VPN Server and clients using OpenVPN. this will cover the setup process of the remote machine and then connecting to it via both Linux and Windows client machines.</p> +<h2 id="openvpn-server-setup">OpenVPN Server Setup</h2> +<p>This is the Installation script I use to setup a secure OpenVPN Server<br> +<a href="https://github.com/angristan/openvpn-install">https://github.com/angristan/openvpn-install</a></p> +<p>Run the following script as root or add sudo to the install.sh script<br> +<code>curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh</code><br> +<code>chmod +x openvpn-install.sh</code><br> +<code>AUTO_INSTALL=y ./openvpn-install.sh</code></p> +<p>you will need to enable the OpenVPN service to auto-start so the VPN stays up after reboot.<br> +<code>sudo systemctl enable openvpn</code></p> +<h3 id="troubleshooting">Troubleshooting:</h3> +<p><img src="https://christitus.com/images/2019/09/tun-isnot-available.png" alt="tun-isnot-available"></p> +<p><strong>TUN is not available</strong><br> +-Certain VPS servers do not have TUN enabled by default. Create the follow script and run it on startup to fix this issue.</p> +<p>-Create /usr/sbin/enabletun.sh<br> +<code>#!/bin/bash</code><br> +<code>mkdir /dev/net</code><br> +<code>mknod /dev/net/tun c 10 200</code><br> +<code>chmod 0666 /dev/net/tun</code></p> +<p>-Mark /usr/sbin/enabletun.sh executable<br> +<code>chmod +x /usr/sbin/enabletun.sh</code></p> +<p>-Run this script on startup by adding the following to /etc/rc.local<br> +<code>/usr/sbin/tunscript.sh || exit 1</code><br> +<code>exit 0</code></p> +<h2 id="client-setup">Client Setup</h2> +<h3 id="linux-client-setup">Linux Client Setup</h3> +<p>Install OpenVPN for Network Manager<br> +<strong>Debian-Based</strong> <code>sudo apt install network-manager-openvpn</code><br> +<strong>Arch-Based</strong> <code>sudo pacman -S networkmanager-openvpn</code><br> +<strong>Gnome-Based DEs</strong> <code>sudo apt install network-manager-openvpn-gnome</code></p> +<p>Copy OVPN file to /etc/openvpn/client/client.ovpn<br> +Test client configuration in Terminal:<br> +<code>sudo openvpn /etc/openvpn/client/client.ovpn</code></p> +<p><img src="https://christitus.com/images/2019/09/import-vpn.png" alt="import-vpn"></p> +<p>Network manager Import VPN Connection: client.ovpn<br> +Note: <em>Certificates stored in ~/.local/share/networkmanagement/certificates</em></p> +<p>Connect via your Network Manager</p> +<h3 id="troubleshooting-1">Troubleshooting:</h3> +<p><img src="https://christitus.com/images/2019/09/tls-issue.png" alt="tls-issue"></p> +<p>Verify TLS key file is enabled and created. This is a known issue on KDE desktops. If it isn’t make sure to create it using the last TLS portion of the ovpn file.</p> +<h3 id="windows-client-setup">Windows Client Setup</h3> +<p>Download OpenVPN client for your Windows @ <a href="https://openvpn.net/community-downloads/">https://openvpn.net/community-downloads/</a></p> +<p><img src="https://christitus.com/images/2019/09/clientovpn-winscp.png?fit=1024%2C451&amp;ssl=1" alt="clientovpn-winscp"></p> +<p>Copy your client.ovpn from the server (WinSCP to connect and copy) and place the file in C:\Program Files\OpenVPN\config</p> +<p><img src="https://christitus.com/images/2019/09/openvpnconnect.jpg" alt="openvpnconnect"></p> +<p>Run the program and right click the icon in the tray and connect</p> +<h2 id="video-walkthrough">Video Walkthrough</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/CBJMl9MILbg" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + The Ultimate SSH Guide + https://christitus.com/ssh-guide/ + Wed, 18 Sep 2019 21:55:20 +0000 + + https://christitus.com/ssh-guide/ + <p>This is an SSH guide to help you set up, configure, connect, and transfer files using SSH.</p> +<h1 id="setup-ssh">Setup SSH</h1> +<h2 id="install-ssh-on-your-system">Install SSH on your system</h2> +<h3 id="debian-based">Debian-Based</h3> +<p><code>sudo apt install openssh-server -y</code></p> +<h3 id="centosfedora">CentOS/Fedora</h3> +<p><code>sudo yum -y install openssh-server</code></p> +<h3 id="arch">Arch</h3> +<p><code>sudo pacman -S openssh</code></p> +<h2 id="run-ssh-server-on-startup">Run SSH server on startup</h2> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo systemctl start ssh +</span></span><span class="line"><span class="cl">sudo systemctl enable ssh +</span></span></code></pre></div><p>**Note: sshd instead of ssh for arch</p> +<h2 id="configure-ssh">Configure SSH</h2> +<p><strong>Make sure ufw isn’t blocking ssh and enable it for passthrough.</strong></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo ufw allow ssh +</span></span><span class="line"><span class="cl">sudo ufw limit ssh +</span></span><span class="line"><span class="cl">sudo ufw enable +</span></span><span class="line"><span class="cl">sudo ufw status +</span></span></code></pre></div><h3 id="options-for-etcsshsshd_config">Options for /etc/ssh/sshd_config</h3> +<p><code>PasswordAuthentication yes/no</code><br> +<em>* No should be used when facing the internet and key authentication must be used for security</em></p> +<p><code>AllowTcpForwarding yes</code><br> +<code>X11Forwarding yes</code><br> +<em>* This is used to forward GUI programs (Xming required for Windows)</em></p> +<p><code>AllowUsers Fred Wilma</code><br> +<code>DenyUsers Dino Pebbles</code><br> +<em>* Block and Allow certain users</em></p> +<h3 id="security-of-a-ssh-server">Security of a SSH Server</h3> +<p>It should be noted that if you open up your firewall and port forward port 22 on a standard SSH server install… you will probably be hacked. This is extremely reckless and should never be done. I highly recommend doing <strong>ALL</strong> of the following measures if opening up SSH to the outside world.</p> +<p>First, obscure the SSH port by changing it in the sshd_config file<br> +<code># Change Default port 22 to 2222</code><br> +<code>Port 2222</code></p> +<p>Second, disable Password Authentication and use ssh keys instead. This is a complex procedure and recommend using the following script to optimize the encryption and setup process.<br> +<a href="https://github.com/angristan/openvpn-install">https://github.com/angristan/openvpn-install</a></p> +<p>Third, verify you are using tar-pitting or rate limiting on your SSH port. This will prevent brute force attacks<br> +<code>ufw limit proto tcp from any port 2222</code><br> +<em>*Note this can also be done via iptables and it needs to be modified to your SSH port.</em></p> +<h1 id="connect-via-ssh">Connect via SSH</h1> +<h2 id="linux-terminal">Linux terminal</h2> +<p>ssh username@serverip</p> +<h2 id="windows">Windows</h2> +<p>PuTTY <a href="https://putty.org/">https://putty.org/</a> (ssh program)</p> +<p>Xming required for X11 forwarding <a href="https://sourceforge.net/projects/xming/">https://sourceforge.net/projects/xming/</a></p> +<p>Verify X11 Forwarding in PuTTY options</p> +<h2 id="video-walkthrough-ssh-access">Video Walkthrough SSH Access</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/w_OwmqjAcn0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + +<h1 id="transfer-files-via-ssh">Transfer Files via SSH</h1> +<p>The difference between SFTP and SCP by default are one is interactive and the other isn’t. SCP is faster, but can’t be resumed where SFTP and slower and can be.</p> +<h2 id="linux">Linux</h2> +<p>Use the native file browser, in the location bar type the following:<br> +<code>sftp://192.168.1.10</code></p> +<h3 id="using-the-terminal">Using the terminal</h3> +<p>Syntax: <strong><code>scp</code></strong> <code>source destination</code><br> +Remote PC Syntax: <code>username@serverip:/path/to/file</code></p> +<p>Example: <code>scp localfile username@serverip:/remote/server/path</code></p> +<h2 id="windows-1">Windows</h2> +<p>WinSCP is my recommended transfer tool.<br> +<a href="https://winscp.net/eng/index.php">https://winscp.net/eng/index.php</a></p> +<p>pscp.exe for command line. <a href="https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html">https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html</a></p> + + + + Update to the Latest Version of GIMP + https://christitus.com/latest-version-of-gimp/ + Mon, 16 Sep 2019 00:55:12 +0000 + + https://christitus.com/latest-version-of-gimp/ + <p>Here are instructions on how to Update to the latest version of GIMP. This is vital to make sure you get the newest and best features for GIMP. The old versions of gimp that come bundled with Ubuntu 18 and prior aren’t nearly as good as Gimp 2.10+.</p> +<p>Start by launching terminal and adding the GIMP repository</p> +<p><code>sudo add-apt-repository ppa:otto-kesselgulasch/gimp</code></p> +<p>Verify the apt updates and if it doesn’t run the following command</p> +<p><code>sudo apt-get update</code></p> +<p>Now simply install GIMP and it will automatically update to the latest version of GIMP from now on</p> +<p><code>sudo apt-get install gimp</code></p> +<p>Here is a video walkthrough of install special GIMP scripts as well if you want to unlock the complete capabilities of GIMP.<br> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/CysfnD7dYwM" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> +</p> + + + + Grub Rescue | Repairing your Bootloader + https://christitus.com/grub-rescue/ + Mon, 01 Apr 2019 22:21:10 +0000 + + https://christitus.com/grub-rescue/ + <p>Lets go over Grub Rescue and repairing your bootloader. This is a very misunderstood topic and by learn basic syntax you will be able to repair your GRUB very easily. Here are 4 methods of doing a GRUB Rescue.</p> +<h2 id="repairing-from-a-grub--prompt">Repairing from a GRUB &gt; Prompt</h2> +<p><strong>Find your Hard drive</strong><br> +<code>ls</code><br> +<em>Output Example: <br> +(hd0) (hd0,msdos2) (hd0,msdos1)</em></p> +<p><strong>List Root partition on each drive til you find your Install</strong><br> +<code>ls (hd0,msdos2)/</code><br> +<em>Check for the directory listing, if nothing, move to next</em></p> +<p><strong>Now that we have found the proper drive lets boot to it</strong><br> +<code>grub&gt; set root=(hd0,msdos2)</code><br> +<code>grub&gt; linux /boot/vmlinu (tab complete) root=/dev/sda1 (or the root linux partition)</code><br> +<code>grub&gt; initrd /boot/initrd (tab complete)</code><br> +<code>grub&gt; boot</code></p> +<h2 id="repairing-from-a-grub-rescue--prompt">Repairing from a GRUB Rescue &gt; Prompt</h2> +<p><strong>Find your Hard drive</strong><br> +<code>ls</code><br> +<em>Output Example: <br> +(hd0) (hd0,msdos2) (hd0,msdos1)</em></p> +<p><strong>List Root partition on each drive til you find your Install</strong><br> +<code>ls (hd0,msdos2)/</code><br> +<em>Check for the</em> <em>directory</em> <em>listing, if nothing, move to next</em></p> +<p><strong>Now that we have found the proper drive lets boot to it</strong></p> +<p><code>grub rescue&gt; set prefix=(hd0,msdos2)/boot/grub</code><br> +<code>grub rescue&gt; set root=(hd0,msdos2)</code><br> +<code>grub rescue&gt; insmod normal</code><br> +<code>grub rescue&gt; normal</code><br> +<code>grub rescue&gt; insmod linux</code><br> +<code>grub rescue&gt; linux /boot/vmlinu (tab complete) root=/dev/sda1 (or the root linux partition)</code><br> +<code>grub rescue&gt; initrd /boot/initrd (tab complete)</code><br> +<code>grub rescue&gt; boot</code></p> +<p><img src="https://christitus.com/images/2019/04/grub-300x211.png" alt="grub"></p> +<h2 id="fix-grub-permanently">Fix GRUB Permanently</h2> +<p>Now that we are booted in from GRUB Rescue, we can begin work with repairing our grub permanently. First we rebuild the /boot/grub/grub.cfg file:</p> +<p>Debian-based Distributions use <strong>update-grub</strong><br> +Other Distributions use <strong>grub-mkconfig -o /boot/grub/grub.cfg</strong></p> +<p>With the Configuration rebuilt, we now simply need to reinstall grub</p> +<p><code>grub-install /dev/sda</code></p> +<p><em>Note: /dev/sda is the DEVICE…</em><strong>NOT THE PARTITION</strong>.</p> +<h2 id="other-methods-of-repairing-grub">Other Methods of Repairing GRUB</h2> +<ul> +<li>Use the [https://www.supergrubdisk.org/ image on a USB drive to repair][1]</li> +<li>Use a vanilla server distribution pen drive to boot to prompt, then chroot to your existing install and reinstall GRUB.</li> +</ul> +<h2 id="video-walkthroughs">Video Walkthroughs</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/r7meKJsjqfY" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + WordPress on Google Cloud Platform + https://christitus.com/wordpress-google-cloud-platform/ + Thu, 14 Mar 2019 15:23:56 +0000 + + https://christitus.com/wordpress-google-cloud-platform/ + <p>I am going over hosting WordPress on Google Cloud Platform in this article. This is a step by step guide on how to set up and host a WordPress website using a fresh installation.</p> +<p><img src="https://christitus.com/images/2019/03/nas_theapplication_3216.png" alt="nas_theapplication_3216"></p> +<h3 id="step-1-fresh-vm">Step 1: Fresh VM</h3> +<p><em>Note: Be sure and install gcloud <a href="https://cloud.google.com/sdk/docs/downloads-apt-get">https://cloud.google.com/sdk/docs/downloads-apt-get</a> +Setup Project and VM (micro)</em><br> +<code>sudo apt update &amp;&amp; sudo apt upgrade</code></p> +<h3 id="step-2-install-swap">Step 2: Install Swap</h3> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo fallocate -l 1G /swapfile +</span></span><span class="line"><span class="cl">sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576 +</span></span><span class="line"><span class="cl">sudo chmod 600 /swapfile +</span></span><span class="line"><span class="cl">sudo mkswap /swapfile +</span></span><span class="line"><span class="cl">sudo swapon /swapfile +</span></span><span class="line"><span class="cl">sudo nano /etc/fstab +</span></span></code></pre></div><p><code>/swapfile swap swap defaults 0 0</code></p> +<p><img src="https://christitus.com/images/2019/03/apache2.png" alt="apache2"></p> +<h3 id="step-3-install-lamp-stack-linux-apache-mysql-and-php">Step 3: Install LAMP Stack (Linux, Apache, MySQL, and PHP)</h3> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo apt install tasksel +</span></span><span class="line"><span class="cl">sudo tasksel install lamp-server +</span></span><span class="line"><span class="cl">sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc +</span></span></code></pre></div><p><img src="https://christitus.com/images/2019/03/Internet_Line-20-512.png" alt="Internet_Line-20-512"></p> +<h3 id="step-4-configure-domain">Step 4: Configure Domain</h3> +<p><strong>Setup DNS</strong><br> +-Go to your web domain registrar and create A record pointing to your new server<br> +<strong>Configure Apache conf for website</strong></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">&lt;Directory /var/www/example.com&gt; +</span></span><span class="line"><span class="cl"> Require all granted +</span></span><span class="line"><span class="cl">&lt;/Directory&gt; +</span></span><span class="line"><span class="cl">&lt;VirtualHost *:80&gt; +</span></span><span class="line"><span class="cl"> ServerName &lt;a rel=&#34;noreferrer noopener&#34; target=&#34;_blank&#34; href=&#34;http://example.com/&#34;&gt;example.com&lt;/a&gt; +</span></span><span class="line"><span class="cl"> ServerAlias &lt;a rel=&#34;noreferrer noopener&#34; target=&#34;_blank&#34; href=&#34;http://www.example.com/&#34;&gt;www.example.com&lt;/a&gt; +</span></span><span class="line"><span class="cl"> ServerAdmin webmaster@localhost +</span></span><span class="line"><span class="cl"> DocumentRoot /var/www/example.com +</span></span><span class="line"><span class="cl">&lt;/VirtualHost&gt; +</span></span></code></pre></div><p><code>$ mkdir -p /var/www/example.com</code></p> +<p><code>$ a2dissite 000-default.conf</code><br> +<code>$ a2ensite example.com.conf</code><br> +<code>$ systemctl reload apache2</code></p> +<p><img src="https://christitus.com/images/2019/03/san.png" alt="san"></p> +<h3 id="step-5-prep-database-and-php">Step 5: Prep Database and PHP</h3> +<p><strong>Create database</strong></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">$ mysql -u root +</span></span><span class="line"><span class="cl">&gt; CREATE DATABASE wordpress; +</span></span><span class="line"><span class="cl">&gt; GRANT ALL ON wordpress.* TO &#39;wordpressuser&#39; IDENTIFIED BY &#39;Secure1234!&#39;; +</span></span><span class="line"><span class="cl">&gt; quit +</span></span><span class="line"><span class="cl">$ mysql_secure_installation +</span></span></code></pre></div><p><strong>Edit /etc/php/7.2/apache2/php.ini</strong></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">max\_input\_time = 30 +</span></span><span class="line"><span class="cl">upload\_max\_filesize = 20M +</span></span><span class="line"><span class="cl">post\_max\_size = 21M +</span></span></code></pre></div><p><img src="https://christitus.com/images/2019/03/WordPress-Logo-Download-PNG.png" alt="WordPress-Logo-Download-PNG"></p> +<h3 id="step-6-install-wordpress-on-google-cloud-platform">Step 6: Install WordPress on Google Cloud Platform</h3> +<p><a href="https://codex.wordpress.org/Installing_WordPress">https://codex.wordpress.org/Installing_WordPress</a><br> +<code>$ wget https://wordpress.org/latest.tar.gz</code><br> +<code>$ tar -xzvf latest.tar.gz</code></p> +<h3 id="step-7-tune-the-new-install-and-mpm_preforkconf">Step 7: Tune the new install and MPM_Prefork.conf</h3> +<p><a href="https://raw.githubusercontent.com/richardforth/apache2buddy/master/apache2buddy.pl">https://raw.githubusercontent.com/richardforth/apache2buddy/master/apache2buddy.pl</a></p> +<h3 id="step-8-troubleshooting">Step 8: Troubleshooting</h3> +<p>One important addition to setting up WordPress. Permission errors with the WordPress installation can be fixed with the following command.</p> +<p><code>$ chown -R www-data:www-data /var/www/html/*</code></p> +<p>This adds permissions for the Apache server user to use the files in the webpage directory.</p> +<h2 id="video-walkthrough">Video Walkthrough</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/vIJdypOqlL4" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + +<p>In Conclusion, you now have WordPress on Google Cloud Platform. Enjoy the experience and let me know in the comments if you have any issues.</p> +<p>I live stream on <a href="https://twitch.tv/christitustech">Twitch</a> and encourage you to drop in and ask a question. I regularly publish on <a href="https://www.youtube.com/c/ChrisTitusTech">YouTube</a> and <a href="https://christitus.com/">christitus.com</a>, but if you need immediate assistance, check out the Terminal Cafe with <a href="https://christitus.com/discord">Discord Invite Link</a>.</p> + + + + Aptitude Explained + https://christitus.com/aptitude-explained/ + Tue, 12 Mar 2019 20:35:00 +0000 + + https://christitus.com/aptitude-explained/ + <p>In this article, I am going over the aptitude command and explaining all of the commands and usage that goes with its usage.</p> +<h3 id="install-aptitude">Install Aptitude</h3> +<p>Run the following command to install aptitude and task select: <strong>sudo apt install aptitude tasksel</strong></p> +<h2 id="why-aptitude">Why Aptitude?</h2> +<p>Aptitude provides greater dependency resolution and wildcard installations. Making installing or reinstalling entire packages far easier. For instance the following command installs KDE in a simple command: <code>aptitude install ~t^desktop$ ~t^kde-desktop$</code></p> +<h3 id="aptitude-install"><strong>aptitude install</strong></h3> +<ul> +<li>install one or more packages: +<ul> +<li><code>sudo aptitude install gedit</code></li> +</ul> +</li> +<li>remove a package +<ul> +<li><code>sudo aptitude install gedit</code></li> +</ul> +</li> +<li>purge a package +<ul> +<li><code>sudo aptitude install gedit_</code></li> +</ul> +</li> +<li>hold a package at its current version +<ul> +<li><code>sudo aptitude install gedit=</code></li> +</ul> +</li> +<li>build dependencies for a package +<ul> +<li><code>sudo aptitude install gedit&amp;BD</code></li> +</ul> +</li> +</ul> +<h3 id="aptitude-remove-purge-reinstall">aptitude remove, purge, reinstall</h3> +<p>These are the same as using the above commands under install, however, you can utilizing these independent commands with wildcards like below</p> +<ul> +<li><code>sudo aptitude purge ^kde-desktop$</code></li> +</ul> +<h3 id="aptitude-hold-unhold-keep">aptitude hold, unhold, keep</h3> +<ul> +<li>hold is the same as the install, but again I like to use this long hand version when utilizing wildcards.</li> +<li><strong>unhold</strong> – is a great way to release held packages</li> +<li><strong>keep</strong> – I <strong>DO NOT USE</strong> because it merely cancelled scheduled tasks for that package… only it will continue to be upgraded later.</li> +</ul> +<h3 id="aptitude-update-safe-upgrade-full-upgrade">aptitude update, safe-upgrade, full-upgrade</h3> +<ul> +<li><strong>update</strong> – updates the cache</li> +<li><strong>safe-upgrade</strong> – upgrades all packages but will not remove unused packages</li> +<li><strong>full-upgrade</strong> – upgrades all packages but <strong>WILL</strong> remove unused packages</li> +<li></li> +</ul> +<h3 id="aptitude-search">aptitude search</h3> +<ul> +<li><strong>search <package></strong> – searches for the package, these search results can use wildcards, be sorted, and culled as needed using various options</li> +<li>search examples: +<ul> +<li>Search for packaged installed from outside stable repo +<ul> +<li><code>aptitude search '?narrow(?installed, !?archive(stable))'</code></li> +</ul> +</li> +<li>Search for packages installed by the testing repo but not stable +<ul> +<li><code>aptitude search '?narrow(?installed, ?archive(testing) !?archive(stable))'</code></li> +</ul> +</li> +<li>List installed packages +<ul> +<li><code>aptitude search ~i</code></li> +</ul> +</li> +<li>List reverse dependencies for gedit +<ul> +<li><code>aptitude search ~Dgedit</code></li> +</ul> +</li> +<li>show broken packages +<ul> +<li><code>aptitude search ~b</code></li> +</ul> +</li> +<li>display packages on hold +<ul> +<li><code>aptitude search ~ahold</code></li> +</ul> +</li> +<li>Find and install all packages with the name tightvnc in it +<ul> +<li><code>aptitude search ~ntightvnc</code></li> +</ul> +</li> +<li>Install a specific version of a package +<ul> +<li><code>aptitude install php=5.6</code></li> +</ul> +</li> +</ul> +</li> +</ul> +<h3 id="aptitude-show"><strong>aptitude show</strong></h3> +<ul> +<li><strong>aptitude show <package></strong> +<ul> +<li>displays information about the package</li> +</ul> +</li> +</ul> +<h3 id="aptitude-why-why-not">aptitude why, why-not</h3> +<ul> +<li><strong>aptitude why <package></strong> – explains why a package can’t be installs because of a missing dependency</li> +<li><strong>aptitude why-not <package></strong> – show conflicts in which the package dependency can not be installed</li> +</ul> +<h3 id="aptitude-clean-and-autoclean">aptitude clean and autoclean</h3> +<ul> +<li><strong>aptitude clean</strong> – removes all previously downloaded packages from the cache directory</li> +<li><strong>aptitude autoclean</strong> – removes cached packages which no longer exist in your repositories</li> +</ul> +<h3 id="aptitude-search-terms">aptitude search terms</h3> +<p><a href="https://www.debian.org/doc/manuals/aptitude/ch02s04s05.en.html#tableSearchTermQuickGuide">https://www.debian.org/doc/manuals/aptitude/ch02s04s05.en.html#tableSearchTermQuickGuide</a></p> +<h2 id="video-walkthrough">Video Walkthrough</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/xca3Ywf54N0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Garmin Express on Linux | Step by Step Guide + https://christitus.com/garmin-express-linux/ + Fri, 15 Feb 2019 22:20:57 +0000 + + https://christitus.com/garmin-express-linux/ + <p>This is an installation guide on how to get Garmin Express on Linux working. In this Step by Step Guide, I go over creating a new wine bottle and installing Garmin Express in it.</p> +<h2 id="linux-package-requirements">Linux Package Requirements:</h2> +<ul> +<li>wine-devel <em>Note:3.19 or higher</em></li> +<li>winetricks</li> +</ul> +<h2 id="installation-steps">Installation Steps</h2> +<p>First we start by creating a wineprefix and installing our prerequisites from terminal:</p> +<p><code>WINEARCH=win32 WINEPREFIX=/home/$USER/GarminExpress winetricks dotnet452 vcrun2010 corefonts</code><br> +<code>WINEARCH=win32 WINEPREFIX=/home/$USER/GarminExpress winetricks win7</code></p> +<p><em>Note: You will be prompted during the setup for .NET installation just hit next and finish. Also, I like to seperate win7 after the prerequisites are setup to make sure the wineprefix runs in Windows 7 mode.</em></p> +<p>With that out of the way we need to download and install our GarminExpress.exe Setup executable. I downloaded mine from <a href="https://www.garmin.com/en-US/software/express">https://www.garmin.com/en-US/software/express</a></p> +<p>Run the GarminExpress.exe file in our wine prefix</p> +<p><code>WINEPREFIX=/home/$USER/GarminExpress wine explorer /desktop=garmin,1366x768 /home/$USER/Downloads/GarminExpress.exe</code></p> +<p><em>Note: If you downloaded the GarminExpress.exe to another location replace it above</em></p> +<p>Modify your shortcut to be the following command</p> +<p>WINEPREFIX=/home/ctitus/GarminExpress wine explorer /desktop=garmin,1366x768 &lsquo;/home/ctitus/GarminExpress/drive_c/Program Files/Garmin/Express/express.exe&rsquo;</p> +<p>Upon Launch you should see this screen which should recognize your Garmin device</p> +<p><img src="https://christitus.com/images/2019/02/Selection_012.png" alt="Garmin Express on Linux"></p> +<p>With all this done you will be able to launch Garmin Express on Linux.</p> +<h2 id="video-walkthrough">Video Walkthrough</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/hg01Z6VCox0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Manjaro Architect Installation Guide + https://christitus.com/manjaro-architect-installation-guide/ + Mon, 21 Jan 2019 19:51:04 +0000 + + https://christitus.com/manjaro-architect-installation-guide/ + <p>In this book, I go over step by step the entire Manjaro Architect installation. This guide is suitable for any knowledge level from beginner to expert.</p> +<p>I published “The Complete Manjaro Architect Installation Guide” on Amazon so, if you are installing on your main PC you can follow along without constantly scrolling through on your phone trying to find what you are looking for. I highly recommend watching the video below, and doing a trial of Manjaro Architect in a virtual machine to familiarize yourself with it.</p> +<p><img src="https://christitus.com/images/2019/01/manjaro-cover.jpg" alt="Manjaro Architect Book"><br> +Amazon Link: <a href="https://amzn.to/2SS8lcb">https://amzn.to/2SS8lcb</a></p> +<h2 id="video-walkthrough">Video Walkthrough</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/530O4InhR3A" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Resize LVM Partition | Fedora 29 | Step by Step Guide + https://christitus.com/resize-lvm-partition-fedora-29-step-by-step-guide/ + Sat, 17 Nov 2018 19:54:29 +0000 + + https://christitus.com/resize-lvm-partition-fedora-29-step-by-step-guide/ + <p>In this guide, I show you how to Resize LVM Partition in Fedora 29. I recently ran out of space and had to clone my install from a 120SSD ssd to a 240 GB SSD.</p> +<p>I first had issues with boot timing out and causing the /dev/mapper/home, /dev/mapper/swap, and /dev/mapper/root not being found. To fix this, I simply rebooted to the rescue kernel and ran <code>dracut --regenerate-all -f</code> to resolve this in Single-User Mode.</p> +<h4 id="disclaimer-all-these-commands-are-done-in-single-user-mode-therefore-this-will-not-work-on-a-regular-desktop">Disclaimer: All these commands are done in Single-User Mode, therefore this will NOT work on a regular desktop.</h4> +<p>Upon reboot, I found that I now can see all the space on the drive, but needed to resize the LVM Partition.</p> +<h3 id="resize-lvm-partition">Resize LVM Partition</h3> +<p>First, we need to identify the LVM Partition we need to expand. In my case, it was my home directory that was running low on space.</p> +<p>Command: <code>df -h</code></p> +<p><img src="https://christitus.com/images/2018/11/Selection_008-300x111.png" alt="lvm-selection8"></p> +<p>Second, lets verify there is space to expand on the physical drive.</p> +<p>Command: <code>vgdisplay</code></p> +<p><img src="https://christitus.com/images/2018/11/Selection_009.png" alt="lvm-selection9"></p> +<p>With all this verified, you can now expand the lvm partition.<br> +<em>Note: the command below will take up a 100% of the free space, see screenshot for precise extentsion.</em></p> +<p>Command: <code>lvextend -l 100%FREE /dev/fedora/home</code></p> +<p><img src="https://christitus.com/images/2018/11/Selection_010.png" alt="lvm-selection10"></p> +<p>Finally, with the logical volume extended we simply reclaim the free space now.</p> +<p>Command: <code>resize2fs /dev/fedora/home</code></p> +<p><img src="https://christitus.com/images/2018/11/Selection_011.png" alt="lvm-selection11"></p> + + + + Logitech C920 Linux Driver | Fix Lag and Disable Auto-Focus + https://christitus.com/logitech-c920-linux-driver/ + Fri, 09 Nov 2018 20:36:56 +0000 + + https://christitus.com/logitech-c920-linux-driver/ + <p>With my webcam, I was having major issues and tried looking for a Logitech C920 Linux Driver, as I have a Logitech C920 Webcam that is very laggy in Linux, but in Windows, I don’t have any issues. I found out that the autofocus and exposure were causing a ton of issues. After following this guide, you will be able to fix this issue.</p> +<h2 id="logitech-c920-linux-driver-problem">Logitech C920 Linux Driver Problem</h2> +<p>So there isn’t a Logitech program to control and optimize your Logitech camera in Linux, like the Windows counterpart. However, there is a command line program that will allow you to change ANY setting on the Logitech camera. This is, in my opinion, way better than the Windows clunky Logitech Application. So let’s get our program to do just that and fix these horrible default settings.</p> +<h3 id="installv4l-utils">Install v4l-utils</h3> +<p><strong>Ubuntu/Debian:</strong></p> +<p><code>sudo apt-get install v4l-utils</code></p> +<p><strong>Fedora/Centos:</strong></p> +<p><code>sudo yum install v4l-utils</code></p> +<h3 id="change-settings-usingv4l-utils">Change Settings using v4l-utils</h3> +<p>Find your C920 Webcam or other webcams you need to switch the default settings on.</p> +<p><strong>Command:</strong></p> +<p><code>v4l2-ctl --list-devices</code></p> +<p><strong>Output:</strong></p> +<p><img src="https://christitus.com/images/2018/11/Selection_002.png" alt="c920-selection2"></p> +<h3 id="list-controls-for-the-logitech-c920">List controls for the Logitech C920</h3> +<p><code>v4l2-ctl -d /dev/video6 --list-ctrls</code></p> +<p><strong>Output:</strong></p> +<p><img src="https://christitus.com/images/2018/11/Selection_003.png" alt="c920-selection3"></p> +<h3 id="there-are-two-values-we-need-to-change-to-get-the-best-performance-from-our-webcam">There are two values we need to change to get the best performance from our webcam.</h3> +<p><strong>Here is the command syntax:</strong></p> +<p><code>v4l2-ctl -d /dev/video6 --set-ctrl=exposure_auto=1</code><br> +<code>v4l2-ctl -d /dev/video6 --set-ctrl=focus_auto=0</code></p> +<h3 id="video-walkthrough">Video Walkthrough</h3> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/7SZBQ5bqaWU" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + +<p>Now that you know about the Logitech C920 Linux Driver support and how it functions, you can fix it. I hope this helps you as it took me quite a while to hunt down this information.</p> + + + + Clearing out Orphaned Shadow Copies + https://christitus.com/orphaned-shadow-copies/ + Thu, 25 Oct 2018 15:34:24 +0000 + + https://christitus.com/orphaned-shadow-copies/ + <p>In this article, I go over how to get rid of Orphaned Shadow Copies that do not get cleared out by issuing: <code>vssadmin shadows delete /all</code></p> +<h2 id="steps-to-clear-out-all-orphaned-shadow-copies">Steps to clear out all orphaned shadow copies</h2> +<ul> +<li><code>vssadmin shadows delete /all</code></li> +<li><code>vssadmin shadows list</code> +<ul> +<li><em>verify orphaned shadow copies still exist</em></li> +</ul> +</li> +<li>Use the following command to resize shadow storage, consequently, clears out any shadow copies on that drive +<ul> +<li><code>vssadmin Resize ShadowStorage /For=C: /On=C: /MaxSize=300MB</code> +<ul> +<li><em>Note: Repeat this for each drive with orphaned shadow copies</em></li> +</ul> +</li> +</ul> +</li> +<li>Afterward, do a shadows list to verify the shadow copies have been cleared out +<ul> +<li><em>This process can take a very long time for large drives with a lot of shadow copies.</em></li> +</ul> +</li> +<li>With all that finished, reset your shadow copies to either unbounded or 50-100 GB if you have space.</li> +</ul> +<p><img src="https://christitus.com/images/2018/10/shadow-copies.png" alt="server-vss"></p> +<p>In conclusion, this issue has become less of an issue with the newer versions of Windows Server, but can still rear its ugly head from time to time. It’s important that you keep these pruned and functional, due to the fact a large number of shadow copies will bloat your server. This also can cause massive performance issues that will lock up a server. It is very important that you keep these manageable and functional for each server instance. In the day and age where virtualization has become so prevalent, you shouldn’t need many shadow copies.</p> + + + + Install Plex plugin in FreeNAS + https://christitus.com/install-plex-plugin-freenas/ + Tue, 23 Oct 2018 19:14:03 +0000 + + https://christitus.com/install-plex-plugin-freenas/ + <p>This is an in-depth installation and configuration of the Plex plugin in FreeNAS 11.2. I detail the installation of plex on FreeNAS Jail and configuration of using a share as a Plex mount point.</p> +<h2 id="plex-plugin-in-freenas-steps">Plex plugin in FreeNAS Steps</h2> +<ol> +<li>Install Plex Plugin +<ul> +<li>Under Plugins -&gt; Availiable</li> +</ul> +</li> +<li>Set Static IP +<ul> +<li>Interface em0 (or your interface name), Static IP for Plex Server, and Netmask (/24 is 255.255.255.0)</li> +</ul> +</li> +<li>Stop Plugin</li> +<li>Edit Plex Jail – Mount Point – <em>Note: This is only used if you want a share to add movies to your plex from another computer</em> +<ul> +<li>Set Source Share (/mnt/sharename/) and Set Destination (I selected the media folder in the jail directory)</li> +</ul> +</li> +<li>Edit Plex Jail – Edit Confiuration +<ol> +<li>Check VNET and Berkeley Packet Filter</li> +<li>Set Default IPv4 Route to your Gateway or Router (Ex. 192.168.1.1)</li> +<li>Next</li> +<li>Select “allow:raw_sockets”</li> +<li>Click save in the bottom left</li> +</ol> +</li> +<li>Launch Management from Plugin Menu</li> +<li>Name your Server</li> +<li>Enter your Destination folder from Jail Mount Point (Ex. /media/)</li> +<li>Finish!</li> +</ol> +<h2 id="video-walkthrough">Video Walkthrough</h2> +<p>Install Plex on FreeNAS Video: +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/99fQNbuAOlg" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> +</p> +<p>Install FreeNAS Video: <a href="https://youtu.be/G2-s1_OkHGA">https://youtu.be/G2-s1_OkHGA</a><br> +Setup FreeNAS Video: <a href="https://youtu.be/JexkrpeM_WA">https://youtu.be/JexkrpeM_WA</a></p> +<p>In closing, This guide will get Plex up and running on your FreeNAS without much hassle. I highly recommend this setup as ZFS is far superior to a RAID setup and makes sure that your data stays stable and reliable. Consequently, I find that my Plex server does run considerably faster in this configuration than it ever did when it was on my Windows 10 machine.</p> +<p>For general setup, configuration, and hardware setup, please refer to my guide @ <a href="https://christitus.com/setup-freenas-11/">https://christitus.com/setup-freenas-11/</a></p> + + + + How to Install Linux for the First Time + https://christitus.com/install-linux-first-time/ + Thu, 18 Oct 2018 15:23:20 +0000 + + https://christitus.com/install-linux-first-time/ + <p>This article goes over installing Linux for the first time. I will break it down into 3 parts with a Video Walkthrough. Using this will make it very easy for you to install Linux for the first time.</p> +<h2 id="choosing-the-right-version-or-flavor-of-linux">Choosing the right version or flavor of Linux</h2> +<p>Latest Ubuntu Desktop LTS – <a href="https://www.ubuntu.com/download">https://www.ubuntu.com/download</a></p> +<p>RUFUS USB Creator for Windows – <a href="https://rufus.ie/en_IE.html">https://rufus.ie/en_IE.html</a></p> +<h2 id="installation-process">Installation Process</h2> +<ul> +<li>Download ISO for ubuntu</li> +<li>Create a USB Thumb drive</li> +<li>Install</li> +</ul> +<p><img src="https://christitus.com/images/2011/11/business-code-codes-207580.jpg" alt="business-codes"></p> +<h2 id="basic-configuration">Basic Configuration</h2> +<ul> +<li>Installing Software</li> +<li>Using GUI / Gnome / Search</li> +</ul> +<h2 id="video-walkthrough">Video Walkthrough</h2> +<p>Here is an entire Video playlist that you can choose from depending on where you are in the installation process. This is geared for new Linux users.<br> +<a href="https://www.youtube.com/playlist?list=PLc7fktTRMBoz7n-ugZm2Ndi0np_Y4Hh1k">https://www.youtube.com/playlist?list=PLc7fktTRMBoz7n-ugZm2Ndi0np_Y4Hh1k</a></p> +<p>In conclusion, this will get you started with Linux. It is a steep learning curve starting out, but well worth it in the end. After you install Linux for the first time, you will need some time to adjust. I personally did this for my Mother-In-Law and she loves it. She never has to worry about viruses or her computer crashing, which was happening often in Windows, and it was the perfect solution for her.</p> + + + + How To Change Cortana Search + https://christitus.com/change-cortana-search/ + Wed, 17 Oct 2018 15:22:41 +0000 + + https://christitus.com/change-cortana-search/ + <p>This article goes over how to change Cortana search engine to display results in chrome instead of Microsoft Edge. Afterward, the second part requires you to install a chrome extension to search in Google instead of Bing.</p> +<h2 id="links-from-video">Links from Video</h2> +<ul> +<li><a href="https://github.com/sylveon/SearchWithMyBrowser">https://github.com/sylveon/SearchWithMyBrowser</a> – GitHub Source and Compile Instructions</li> +<li><a href="https://www.microsoft.com/store/apps/9PPKNR9RK26R?ocid=badge">https://www.microsoft.com/store/apps/9PPKNR9RK26R?ocid=badge</a> – Windows Store Link from Developer</li> +<li><a href="https://chrome.google.com/webstore/detail/chrometana-pro-redirect-c/lllggmgeiphnciplalhefnbpddbadfdi">https://chrome.google.com/webstore/detail/chrometana-pro-redirect-c/lllggmgeiphnciplalhefnbpddbadfdi</a> – Chrometana Pro Google Store Extension</li> +</ul> +<h2 id="steps-to-change-cortana-search-updated">Steps to Change Cortana Search (Updated)</h2> +<ul> +<li>Open up Chrometana Pro Google Store Extension and Install (Link Above)</li> +<li>Install EdgeDeflector (On Page after Extension Installed) +<ul> +<li><em>Note: SearchWithMyBrowser is no longer needed as EdgeDeflector takes its place</em></li> +</ul> +</li> +<li>Open Webpage and select EdgeDeflector.exe for default open with application</li> +<li>Done!</li> +</ul> +<h2 id="video-walkthrough">Video Walkthrough</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/Vw-JA89brSg" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + +<p>In the end, you need to watch out for Windows updates. Anytime Windows does a major update, be prepared to repeat the process above, as it will reset it to Edge. Therefore, I’d bookmark the Chrometana Pro page or this one as you will be coming back to do this about twice a year. If you don’t want to do this, you can always switch to Linux. Consequently, I have written an article about the pro’s and con’s of such a switch and I highly recommend the switch if you are able.</p> + + + + Why should I switch to Linux from Windows? + https://christitus.com/linux-switch-video/ + Tue, 16 Oct 2018 17:59:04 +0000 + + https://christitus.com/linux-switch-video/ + <p>This will be the first article in a series of Linux articles, I am going over 6 reasons to switch to Linux and 1 big reason not to. Many people ask “Why should I switch to Linux from Windows?” and in this article below I break it down for you.</p> +<h3 id="pros">Pros</h3> +<ol> +<li>It’s Free – Tons of Free software</li> +<li>No big brother – Microsoft Telemetry reports on you!</li> +<li>Stable – Can go months or even years before rebooting</li> +<li>Works on anything – Pretty much any piece of hard will run Linux.</li> +<li>Updates the way you WANT!</li> +<li>Virus/malware resistant</li> +</ol> +<h3 id="cons">Cons</h3> +<ol> +<li>Windows only software +<ul> +<li>Microsoft Office</li> +<li>Adobe Software Suite</li> +<li>Specific Games</li> +</ul> +</li> +</ol> +<h2 id="video-walkthrough">Video Walkthrough</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/s5QGZ-DBYGs" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + How to Setup FreeNAS 11 + https://christitus.com/setup-freenas-11/ + Fri, 12 Oct 2018 16:11:50 +0000 + + https://christitus.com/setup-freenas-11/ + <p>This article goes over how to setup FreeNAS 11 and configure it. These are the basic steps so you can have a reliable network storage at your house.</p> +<h2 id="steps-to-setup-freenas-11">Steps to setup FreeNAS 11</h2> +<ol> +<li>Download FreeNAS stable from <a href="http://www.freenas.org/download-freenas-release/">http://www.freenas.org/download-freenas-release/</a></li> +<li>Create Thumb drive from iso and Win32DiskImager <a href="https://sourceforge.net/projects/win32diskimager/">https://sourceforge.net/projects/win32diskimager/</a> +<ul> +<li><em>Note: DO NOT use Rufus or Yumi as these won’t create a bootable thumb drive</em></li> +</ul> +</li> +<li>Install and Follow the Prompts</li> +<li>Set Static IP</li> +<li>Reboot</li> +<li>Login to Web Interface with IP from Step 4</li> +<li>Set up Storage Pool</li> +<li>Assign SMB Share +<ul> +<li>Make sure allow guest access  is checked</li> +</ul> +</li> +<li>Configure SMB Share Service +<ul> +<li>Auto-Start and Enabled</li> +<li>Configure Guest user to be root</li> +</ul> +</li> +<li>Test!</li> +</ol> +<h2 id="installation-video-walkthrough">Installation Video Walkthrough</h2> +<p>Install FreeNAS Video: +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/G2-s1_OkHGA" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> +</p> +<p>Setup FreeNAS Video: +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/JexkrpeM_WA" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> +</p> +<p>This will get you set up for a reliable network-attached storage in your home environment. Remember once you are finished to clone and image the USB FreeNAS drive. These USB Drives typically only last a couple years, so a backup is a must! In the end, FreeNAS is far more reliable than other commercial NAS products because of ZFS and its versatility.</p> +<p>For further configuration, I highly recommend checking out the FreeNAS wiki for using some of its more advanced features.</p> +<p><a href="http://doc.freenas.org">http://doc.freenas.org</a></p> +<h2 id="recommended-hardware">Recommended Hardware</h2> +<ul> +<li>Samsung 32 GB Bar (Metal Series) <a href="https://amzn.to/2PPvyrf">https://amzn.to/2PPvyrf</a></li> +<li>Pre-Built FreeNAS Device (Official Brand – No Drives) <a href="https://amzn.to/2R7uyid">https://amzn.to/2R7uyid</a></li> +<li>Hard Disk Drives – HGST +<ul> +<li>4 GB – <a href="https://amzn.to/2Sc3lfM">https://amzn.to/2Sc3lfM</a></li> +<li>6 TB – <a href="https://amzn.to/2q9NsJL">https://amzn.to/2q9NsJL</a></li> +</ul> +</li> +<li>Solid State Drives – Samsung Pro +<ul> +<li>256 GB – <a href="https://amzn.to/2Jf58MM">https://amzn.to/2Jf58MM</a></li> +<li>512 GB – <a href="https://amzn.to/2R6bbGn">https://amzn.to/2R6bbGn</a></li> +<li>1 TB – <a href="https://amzn.to/2D1CBKz">https://amzn.to/2D1CBKz</a></li> +</ul> +</li> +</ul> + + + + How to Install Xen Orchestra + https://christitus.com/how-to-install-xen-orchestra/ + Thu, 11 Oct 2018 17:14:47 +0000 + + https://christitus.com/how-to-install-xen-orchestra/ + <p>This article shows you how to install Xen Orchestra and use the interface via the web. XOA is a very powerful addition to XenServer as it brings auto-updates and making it easier to manage entire farms.</p> +<h2 id="step-by-step-guide">Step-by-Step Guide</h2> +<ol> +<li>Login to your XenServer via PuTTy OR through XenCenter console</li> +<li>Type <code>bash -c &quot;$(curl -s http://xoa.io/deploy)&quot;</code> +<ul> +<li>Enter a new IP where you will access XOA from web</li> +<li>Wait for this to finish you will see XOA VM popup</li> +<li><em>Note: This may take a couple hours if XOA servers are downloading slow. I highly recommend downloading offline installer if installing on multiple servers.</em></li> +</ul> +</li> +<li>Once Complete, PuTTy to XOA VM (IP Address from prior install) +<ul> +<li>login with username/password: xoa</li> +<li>set new password for console</li> +<li>register xoa from username and password that you used on their website <a href="https://xen-orchestra.com/">https://xen-orchestra.com/</a> +<ul> +<li><code>sudo xoa-updater --register</code></li> +</ul> +</li> +<li>now run the updater to check for any upgrades +<ul> +<li><code>sudo xoa-updater &amp;#8211;upgrade</code></li> +</ul> +</li> +<li>reboot if any upgrades were performed</li> +</ul> +</li> +<li>Open Browser, Login to XOA +<ul> +<li>login username <code>admin@admin.net</code> password <code>admin</code></li> +</ul> +</li> +<li>Add your XenServers – If you only have 1 pool, you only need to add your pool master +<ul> +<li>Remember: if you are using default self-signed certificates on XenServer enable “unauthorized certificates” and then click disconnected</li> +</ul> +</li> +<li>Enjoy</li> +</ol> +<h2 id="video-walkthrough">Video Walkthrough</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/QU28LQ1CX7Q" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + +<p>I hope you enjoyed this walkthrough of how to install Xen Orchestra and if you have any feedback let me know below. In closing, I really like this product and think it is a great addition to the XenServer and a much-needed improvement over what Citrix offers.</p> + + + + Create iSCSI SR in XenServer + https://christitus.com/create-iscsi-sr/ + Tue, 09 Oct 2018 16:18:46 +0000 + + https://christitus.com/create-iscsi-sr/ + <p>This guide goes over how to Create iSCSI SR on Xen to connect to an iSCSI target. Here is the step-by-step and a video walkthrough, which includes setting up iSCSI in FreeNAS.</p> +<h3 id="requirements">Requirements</h3> +<ul> +<li>Multiple XenServers (2+) in a Pool</li> +<li>iSCSI target (Check out FreeNAS in the video below for setting one up)</li> +<li>At LEAST a gigabit environment</li> +</ul> +<p><img src="https://christitus.com/images/2018/10/xen-iscsi-sr.png" alt="xen-iscsi"></p> +<h3 id="step-by-step-guide-to-create-iscsi-sr">Step-by-Step Guide to Create iSCSI SR</h3> +<ol> +<li>Open and Connect to XenCenter / XCP-ng Center</li> +<li>Select Pool and Click New Storage</li> +<li>Make sure iSCSI is selected</li> +<li>Name Storage</li> +<li>Select either provisioning methods</li> +<li>Enter IP Address / Authentication (if needed) / Click Scan Target Host</li> +<li>Pick IQN / LUN from your storage device +<ul> +<li><em>Note: When Selecting</em> IQN_, make sure you select your SAN if you are using a dedicated network_</li> +</ul> +</li> +<li>Finish</li> +</ol> +<h3 id="video-walkthrough">Video Walkthrough</h3> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/mn17fHzn2XQ" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + +<p>In the end, we now have a centralized storage system that all our hosts can put their VMs on. This is key for using high availability, Xen Orchestra, and quick migrations. Remember to use the community-driven XenServer @ <a href="https://xcp-ng.org/">https://xcp-ng.org/</a>, therefore you can get all the enterprise features of XenServer in your lab environment.</p> + + + + Disable Windows Firewall Properly + https://christitus.com/disable-windows-firewall-properly/ + Sat, 06 Oct 2018 17:20:22 +0000 + + https://christitus.com/disable-windows-firewall-properly/ + <p>This walkthrough goes over how to Disable Windows Firewall while not affecting other programs that rely on this service. It’s important that you **DO NOT **disable the service, due to the fact it can cause issues with Microsoft Office and other products.</p> +<p><img src="https://christitus.com/images/2018/10/windows-firewall.png" alt="win-firewall"></p> +<h2 id="steps-to-bypass-firewall">Steps to bypass firewall</h2> +<ol> +<li>Launch Windows Defender Firewall with Advanced Security (Start -&gt; Run -&gt; wf.msc)</li> +<li>Click Inbound Rules</li> +<li>Select “New Rule”</li> +<li>Custom rule</li> +<li>All Programs</li> +<li>Leave Any and All Ports</li> +<li>Any IP Address for both</li> +<li>Allow the connection</li> +<li>Check Domain, Private, and Public</li> +<li>Name “Allow All”</li> +</ol> +<h2 id="video-guide">Video Guide</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/fvFWFrN-MZQ" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + +<h3 id="finishing-up">Finishing Up</h3> +<p>By doing this you allow all traffic inbound to this computer, consequently, all outbound traffic is already allowed by default. Therefore, certain programs and services that depend on windows firewall can function properly. In conclusion, this is a far superior way of disabling the built-in firewall in windows without affecting other programs.</p> + + + + SATA vs SAS vs NVMe Performance Breakdown + https://christitus.com/sata-vs-sas-vs-nvme/ + Fri, 05 Oct 2018 20:28:58 +0000 + + https://christitus.com/sata-vs-sas-vs-nvme/ + <p>This is a quick breakdown of the differences between SATA vs SAS vs NVMe. After looking at the performance below, you will be able to decide which one best suits your needs.</p> +<ul> +<li>SATA (Serial Advanced Technology Advancement) +* Most common +* Least reliable +* Slow +* 5400 – 7200 RPM Hard Drives +* Half duplex (Can’t read and write simultaneously) +* 6 GB/s connection +* Cheap (1 TB  SSD $150) +<ul> +<li>SAS (Serial Attached Storage) +<ul> +<li>Commonplace in data centers</li> +<li>Very reliable +<ul> +<li>Error checking is built-in</li> +</ul> +</li> +<li>Fast +<ul> +<li>15k RPM Hard Drives</li> +<li>Full Duplex (Simultaneous read and write)</li> +<li>12 GB/s connection</li> +</ul> +</li> +<li>Expensive (800 GB SSD $600) – Pretty much enterprise only</li> +</ul> +</li> +<li>NVMe (Non-Volatile Memory Express) +<ul> +<li>Common in new PC builds, common in data center SANs for cache on tiered storage.</li> +<li>Reliable</li> +<li>Fastest +<ul> +<li>16-32 GB/s connection when directly plugged into PCIe</li> +<li>12 GB/s connection still applies when hot-swapped via SAS connection</li> +<li>Full Duplex</li> +<li>Higher Bandwidth (Able to process the most at one time)</li> +</ul> +</li> +<li>Expensive (1 TB Residential $300-$400 | 1.2 TB Enterprise $1200)</li> +</ul> +</li> +</ul> +</li> +</ul> +<p>No real surprises here but having it bullet-pointed makes the comparison very easy. I hope this helps those trying to decide on what to buy and typical performance you can expect from it.</p> +<p><img src="https://christitus.com/images/2018/10/ssdvsnvme.png" alt="nvmevssata-pic"></p> +<h2 id="sata-vs-sas-vs-nvme--performance-winner-nvme">SATA vs SAS vs NVMe | Performance Winner: NVMe</h2> +<h2 id="sata-vs-sas-vs-nvme--budget-winner-sata">SATA vs SAS vs NVMe | Budget Winner: SATA</h2> +<p>What about SAS? Well, in enterprise environments you see this very often with pretty much every tiered storage device having it. Most of what is on the market today is a mixture of SAS and NVMe for business. These hybrid drives are crazy expensive but give system administrators the ability to claim some of the speed from NVMe without purchasing entirely new devices. While this may seem trivial when you are talking thousands of dollars, this becomes a budget issue. SAS also has the error checking built into the interface, which in turn, gives greater reliability in theory. Personally, I think the future enterprise devices will have some type of new connector or housing that will make NVMe devices hot-swappable without the 12 GB/s SAS limitation. That said, we aren’t quite there yet, and the prevalence of SAS in enterprise space will continue.</p> +<p>By doing this you allow all traffic inbound to this computer, consequently, all outbound traffic is already allowed by default. Therefore, certain programs and services that depend on windows firewall can function properly. In conclusion, this is a far superior way of disabling the built-in firewall in windows without affecting other programs.</p> + + + + Installing and Configuring Exchange 2019 + https://christitus.com/configuring-exchange-2019/ + Wed, 03 Oct 2018 15:45:56 +0000 + + https://christitus.com/configuring-exchange-2019/ + <p>This article goes over what it takes for installing and configuring exchange 2019. This step-by-step guide shows you the requirements, installation steps, and basic configuration.</p> +<h3 id="requirements">Requirements</h3> +<ul> +<li>Microsoft recommends 128 GB of memory. If in a medium size environment (100-1000 users) 32-64 GB will be sufficient.</li> +<li>Microsoft Windows Server 2012 R2/2016/2019</li> +<li>Co-Existence with Exchange 2013/2016 that are up-to-date</li> +<li>30 GB of free disk space, however, you should have plenty of TBs of storage available for the mailbox stores.</li> +<li>NTFS based file system</li> +</ul> +<h3 id="notable-improvements">Notable Improvements</h3> +<ul> +<li>Exchange 2019 has the ability to now be installed on server core 2019.</li> +<li>Exchange Admin Console – https://server/ecp – Refined and matches Office 365 layout</li> +<li>Outlook Web Access has more features and a better look</li> +</ul> +<h3 id="things-i-wished-exchange-2019-had">Things I wished Exchange 2019 had</h3> +<ul> +<li><strong>DKIM</strong>… seriously, WTF Microsoft. Office 365 has this, therefore exchange 2019 should have this!</li> +</ul> +<h2 id="installing-exchange-2019">Installing Exchange 2019</h2> +<p>This was a breeze, with only 2 pre-requirements missing on a server 2016 stock install. The only configuration during setup was the role (mailbox or edge) and naming the exchange organization. Check out this video below to see the time lapse install:</p> +<p><a href="https://youtu.be/xmDOdkOKQxQ">https://youtu.be/xmDOdkOKQxQ</a></p> +<h2 id="configuring-exchange-2019">Configuring Exchange 2019</h2> +<p>Again, this was very easy with only a couple options needed before I was operational. Using only a mailbox role with no edge you only need to add your domain, send connector, and set an email address for mailboxes. Here is the basic configuration video:</p> +<p><a href="https://youtu.be/9n6JlEUS5fw">https://youtu.be/9n6JlEUS5fw</a><br> +_Note: Do not forget to add the MX, SPF, DMARC records where your domain registrar DNS resides. _</p> +<h2 id="conclusion">Conclusion</h2> +<p>I absolutely love Exchange 2019 due to the vast amount of improvements, that said, I am still bummed that they continue to not support DKIM through exchange server. Installing and configuring exchange 2019 was the easiest experience I’ve had to date, which is saying a lot! Overall I am liking the direction Microsoft is taking with the server line of products and I believe it will continue to have a very bright future, as long as they don’t do something stupid like including the Microsoft store.</p> + + + + XenServer cannot connect in XenCenter or XCP-ng Center + https://christitus.com/xenserver-cannot-connect/ + Mon, 01 Oct 2018 18:53:13 +0000 + + https://christitus.com/xenserver-cannot-connect/ + <p>Having problems and your XenServer cannot connect to XenCenter? Did you have high availability enabled? If you answered yes to both these questions here is how you get your XenServer back online and functioning properly.</p> +<p><img src="https://christitus.com/images/2018/10/xenserver-cannot-connect.png" alt="xenserver-cannot"></p> +<h3 id="step-by-step-guide">Step-by-Step Guide</h3> +<ul> +<li>PuTTy into the XenServer Pool Master</li> +<li>run the following commands:</li> +</ul> +<p><code>xe pool-ha-disable</code><em>Note: If this fails try ha-disable force below</em></p> +<p><code>xe host-emergency-ha-disable force=true&lt;br /&gt; xe pool-emergency-transition-to-master --force</code></p> +<p><em>Note: This will force the pool and slaves to reinitialize with the pool master</em></p> +<ul> +<li>Once the server reboots it should connect</li> +<li>Go into your XenCenter and re-connect</li> +</ul> +<h3 id="other-helpful-commands-for-troubleshooting">Other Helpful Commands for troubleshooting</h3> +<p><code>xe-toolstack-restart</code> – First command I always try before anything else</p> +<p><code>service xapi restart</code> – This restarts a core service</p> +<p><code>xsconsole</code> – This launches console to check pool, network config, ha, running VMS, etc.</p> +<h3 id="how-to-video-going-over-troubleshooting">How-To Video going over troubleshooting</h3> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/UqsaRixKveA" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + +<h3 id="conclusion">Conclusion</h3> +<p>This will get your server back up and accessible, however, this disables high availability and will need to be set back up. It’s important to note the cause of an event like this. In my case, the SR I was using to host my VMs was not sufficient and caused the outage. If this happens to you make sure you have a good SAN/NAS for hosting on a Gigabit or above connection. I’d highly recommend a 10Gbs connection or a multipath gigabit connection at the very least.</p> + + + + Installing and Configuring Windows Server 2016 Core + https://christitus.com/configuring-windows-server-2016-core/ + Fri, 28 Sep 2018 19:42:47 +0000 + + https://christitus.com/configuring-windows-server-2016-core/ + <p>This guide walks you through how to installing and configuring windows server 2016 core, afterward you will easily be able to add one to your environment with very little resources. Start off by using the video guide over the installation process. Once done, check the bullets below to help walk you through doing it in your infrastructure.</p> +<h4 id="remote-server-administration-tools-for-windows-10">Remote Server Administration Tools for Windows 10</h4> +<p><a href="https://www.microsoft.com/en-us/download/details.aspx?id=45520">https://www.microsoft.com/en-us/download/details.aspx?id=45520</a></p> +<p><img src="https://christitus.com/images/2018/09/windows-server-2016.png" alt="configure-core"></p> +<h3 id="steps-toconfiguring-windows-server-2016-core">Steps to configuring windows server 2016 core</h3> +<ul> +<li>Run <code>sconfig</code></li> +<li>Configure Static IP</li> +<li>Set Computer Name</li> +<li>Join to Domain</li> +<li>Set Windows Update Settings to Download ONLY</li> +<li>Download and Install all Updates</li> +<li>Enable Remote Desktop and Remote Management</li> +<li>Change Telemetry to Security</li> +<li>Activate Windows</li> +<li>Reboot</li> +</ul> +<h3 id="connecting-remotely-to-server-2016-core">Connecting Remotely to Server 2016 Core</h3> +<p>Finally, we can now go back to our workstation and start utilizing and configuring windows server 2016 core. Once you have launched server manager verify you can connect after adding your server. Please note, this may take about 10-30 seconds so be patient after you add the server and look for any error messages. If you are adding this to the same domain and subnet, you should automatically connect with no issue.</p> + + + + Optimizing Apache Memory Usage using mpm prefork + https://christitus.com/apache-mpm-prefork/ + Wed, 26 Sep 2018 17:31:24 +0000 + + https://christitus.com/apache-mpm-prefork/ + <p>This guide goes over optimizing apache memory usage by configuring mpm prefork module to the best values for your server. Afterword, you should notice substantial increases in performance especially if you are using free micro instances from Google Cloud or AWS.</p> +<h3 id="commands-used">Commands used:</h3> +<ul> +<li>Check Apache Memory usage +<ul> +<li> +<p><code>ps -ylC apache2 --sort:rss | awk '{sum+=$8; ++n} END {print &quot;Tot=&quot;sum&quot;(&quot;n&quot;)&quot;;print &quot;Avg=&quot;sum&quot;/&quot;n&quot;=&quot;sum/n/1024&quot;MB&quot;}'</code></p> +<p><em>Note: My result was between 68-71 MB with stock modules loaded, however, your results will vary.</em></p> +</li> +</ul> +</li> +<li>Launch Memory manager/resource viewer +<ul> +<li>‘<code>htop</code><span style="font-size: 1rem;">‘ OR you can use ‘</span><code>top</code><span style="font-size: 1rem;">‘ for fewer options and visuals</span></li> +</ul> +</li> +<li>10/4/2018 UPDATE: Follow this Github script if you want to take the guesswork out, due to this being a curl script you may want to review the code first. +<ul> +<li><code>curl -sL https://raw.githubusercontent.com/richardforth/apache2buddy/master/apache2buddy.pl | perl</code></li> +</ul> +</li> +</ul> +<h4 id="values-to-calculate">Values to calculate:</h4> +<blockquote> +<p>Total System Memory Free Buffer / Apache2 MB usage = MaxRequestWorkers, ServerLimit, and MaxClients</p> +</blockquote> +<p><img src="https://christitus.com/images/2018/09/apache2.png" alt="apache2"></p> +<h4 id="my-settings-server-instance-standard-1-dedicated-vcpu-with-35-gb-of-memory">My Settings: Server Instance (Standard) 1 dedicated vCPU with 3.5 GB of Memory</h4> +<p>Please note that the below settings is done from a stock apache configuration. With all things considered these values are very conservative and therefore can be used if you are hosting with these specs or greater. In future articles I’ll go through disabling un-needed modules to reduce apache’s footprint, thus allowing you to increase these numbers.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl"># prefork MPM +</span></span><span class="line"><span class="cl"># StartServers: number of server processes to start +</span></span><span class="line"><span class="cl"># MinSpareServers: minimum number of server processes which are kept spare +</span></span><span class="line"><span class="cl"># MaxSpareServers: maximum number of server processes which are kept spare +</span></span><span class="line"><span class="cl"># MaxRequestWorkers: maximum number of server processes allowed to start +</span></span><span class="line"><span class="cl"># MaxConnectionsPerChild: maximum number of requests a server process serves +</span></span><span class="line"><span class="cl">StartServers 3 +</span></span><span class="line"><span class="cl">MinSpareServers 5 +</span></span><span class="line"><span class="cl">MaxSpareServers 10 +</span></span><span class="line"><span class="cl">ServerLimit 45 +</span></span><span class="line"><span class="cl">MaxClients 45 +</span></span><span class="line"><span class="cl">MaxRequestWorkers 45 +</span></span><span class="line"><span class="cl">MaxConnectionsPerChild 2000 +</span></span></code></pre></div><blockquote> +<p>45 processes x 68 MB per = 3060 MB Free Memory needed for the above configuration</p> +</blockquote> +<p>Comparatively, a microserver with 600-700 MB of ram and shared CPU you will be looking at 1-3 Start/Min/Max Start and Spare servers, and no more than 10 for ServerLimit/MaxClients/MaxRequestWorkers. There are other modifications you need to make in culling down apache modules, therefore you can increase these values further.</p> +<h3 id="video-walkthrough">Video Walkthrough</h3> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/uGugeHVEeiU" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + The Perfect htaccess for WordPress + https://christitus.com/perfect-htaccess/ + Sun, 23 Sep 2018 20:50:39 +0000 + + https://christitus.com/perfect-htaccess/ + <p>This walks you through what your htaccess should look like in a WordPress Installation. I am a minimalist and believe you shouldn’t be using a ton of plugins that slow down your install when most of what you are looking to accomplish can be achieved with this file.</p> +<p>Therefore, this htaccess will contain bad bot blocker, security optimizations, force https, and a variety of other optimizations. This will save you from installing about 5-10 plugins that would slow down your website.</p> +<h2 id="the-htaccess-file-to-rule-them-all">The .htaccess file to rule them all</h2> +<h5 id="basic-wordpress-part">Basic WordPress part</h5> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl"># BEGIN WordPress +</span></span><span class="line"><span class="cl">&lt;IfModule mod_rewrite.c&gt; +</span></span><span class="line"><span class="cl">RewriteEngine On +</span></span><span class="line"><span class="cl">RewriteBase / +</span></span><span class="line"><span class="cl">RewriteRule ^index\.php$ - [L] +</span></span><span class="line"><span class="cl">RewriteCond %{REQUEST_FILENAME} !-f +</span></span><span class="line"><span class="cl">RewriteCond %{REQUEST_FILENAME} !-d +</span></span><span class="line"><span class="cl">RewriteRule . /index.php [L] +</span></span><span class="line"><span class="cl">&lt;/IfModule&gt; +</span></span><span class="line"><span class="cl"># END WordPress +</span></span></code></pre></div><h5 id="secure-the-wordpressinstall">Secure the WordPress install</h5> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl"># Allow mod_rewrite in htaccess +</span></span><span class="line"><span class="cl">Options +FollowSymLinks +</span></span><span class="line"><span class="cl"># Disable directory browsing +</span></span><span class="line"><span class="cl">Options All -Indexes +</span></span><span class="line"><span class="cl"># Block wp-includes folder and files +</span></span><span class="line"><span class="cl">&lt;IfModule mod_rewrite.c&gt; +</span></span><span class="line"><span class="cl">RewriteEngine On +</span></span><span class="line"><span class="cl">RewriteBase / +</span></span><span class="line"><span class="cl">RewriteRule ^wp-admin/includes/ - [F,L] +</span></span><span class="line"><span class="cl">RewriteRule !^wp-includes/ - [S=3] +</span></span><span class="line"><span class="cl">RewriteRule ^wp-includes/[^/]+\.php$ - [F,L] +</span></span><span class="line"><span class="cl">RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L] +</span></span><span class="line"><span class="cl">RewriteRule ^wp-includes/theme-compat/ - [F,L] +</span></span><span class="line"><span class="cl">&lt;/IfModule&gt; +</span></span><span class="line"><span class="cl"># Deny access to wp-config.php file +</span></span><span class="line"><span class="cl">&lt;files wp-config.php&gt; +</span></span><span class="line"><span class="cl">order allow,deny +</span></span><span class="line"><span class="cl">deny from all +</span></span><span class="line"><span class="cl">&lt;/files&gt; +</span></span></code></pre></div><h5 id="force-https-and-set-time-zones">Force HTTPS and Set Time Zones</h5> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl"># Force HTTPS +</span></span><span class="line"><span class="cl">RewriteEngine On +</span></span><span class="line"><span class="cl">RewriteCond %{SERVER_PORT} 80 +</span></span><span class="line"><span class="cl">RewriteRule ^(.*)$ https://christitus.com/$1 [R,L] +</span></span><span class="line"><span class="cl"># Set Central Time Zone +</span></span><span class="line"><span class="cl">SetEnv TZ America/Chicago +</span></span></code></pre></div><h5 id="miscellaneous-optimizations">Miscellaneous Optimizations</h5> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">&lt;IfModule mod_rewrite.c&gt; +</span></span><span class="line"><span class="cl">&lt;IfModule mod_negotiation.c&gt; +</span></span><span class="line"><span class="cl">Options -MultiViews +</span></span><span class="line"><span class="cl">&lt;/IfModule&gt; +</span></span><span class="line"><span class="cl">RewriteEngine On +</span></span><span class="line"><span class="cl"># Redirect Trailing Slashes If Not A Folder... +</span></span><span class="line"><span class="cl">RewriteCond %{REQUEST_FILENAME} !-d +</span></span><span class="line"><span class="cl">RewriteRule ^(.*)/$ /$1 [L,R=301] +</span></span><span class="line"><span class="cl"># Handle Front Controller... +</span></span><span class="line"><span class="cl">RewriteCond %{REQUEST_FILENAME} !-d +</span></span><span class="line"><span class="cl">RewriteCond %{REQUEST_FILENAME} !-f +</span></span><span class="line"><span class="cl">RewriteRule ^ index.php [L] +</span></span><span class="line"><span class="cl"># Handle Authorization Header +</span></span><span class="line"><span class="cl">RewriteCond %{HTTP:Authorization} . +</span></span><span class="line"><span class="cl">RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] +</span></span><span class="line"><span class="cl">&lt;/IfModule&gt; +</span></span></code></pre></div><h5 id="expires-header-configuration">Expires Header Configuration</h5> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl"># BEGIN Expires +</span></span><span class="line"><span class="cl">&lt;ifModule mod_expires.c&gt; +</span></span><span class="line"><span class="cl">ExpiresActive On +</span></span><span class="line"><span class="cl">ExpiresDefault &#34;access 2 days&#34; +</span></span><span class="line"><span class="cl">ExpiresByType text/html &#34;access plus 3 seconds&#34; +</span></span><span class="line"><span class="cl">ExpiresByType image/gif &#34;access plus 2419200 seconds&#34; +</span></span><span class="line"><span class="cl">ExpiresByType image/jpeg &#34;access plus 2419200 seconds&#34; +</span></span><span class="line"><span class="cl">ExpiresByType image/jpg &#34;access plus 2419200 seconds&#34; +</span></span><span class="line"><span class="cl">ExpiresByType image/png &#34;access plus 2419200 seconds&#34; +</span></span><span class="line"><span class="cl">ExpiresByType text/css &#34;access plus 2419200 seconds&#34; +</span></span><span class="line"><span class="cl">ExpiresByType text/javascript &#34;access plus 2419200 seconds&#34; +</span></span><span class="line"><span class="cl">ExpiresByType application/x-javascript &#34;access plus 2419200 seconds&#34; +</span></span><span class="line"><span class="cl">ExpiresByType application/x-shockwave-flash &#34;access 1 month&#34; +</span></span><span class="line"><span class="cl">ExpiresByType application/pdf &#34;access 1 month&#34; +</span></span><span class="line"><span class="cl">ExpiresByType image/x-icon &#34;access 1 year&#34; +</span></span><span class="line"><span class="cl">&lt;/ifModule&gt; +</span></span><span class="line"><span class="cl"># END Expires +</span></span></code></pre></div><h5 id="compression-optimization">Compression Optimization</h5> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">&lt;IfModule mod_deflate.c&gt; +</span></span><span class="line"><span class="cl">AddOutputFilterByType DEFLATE text/html +</span></span><span class="line"><span class="cl">AddOutputFilterByType DEFLATE text/css +</span></span><span class="line"><span class="cl">AddOutputFilterByType DEFLATE text/javascript +</span></span><span class="line"><span class="cl">AddOutputFilterByType DEFLATE text/xml +</span></span><span class="line"><span class="cl">AddOutputFilterByType DEFLATE text/plain +</span></span><span class="line"><span class="cl">AddOutputFilterByType DEFLATE image/x-icon +</span></span><span class="line"><span class="cl">AddOutputFilterByType DEFLATE image/svg+xml svg svgz +</span></span><span class="line"><span class="cl">AddOutputFilterByType DEFLATE application/rss+xml +</span></span><span class="line"><span class="cl">AddOutputFilterByType DEFLATE application/javascript +</span></span><span class="line"><span class="cl">AddOutputFilterByType DEFLATE application/x-javascript +</span></span><span class="line"><span class="cl">AddOutputFilterByType DEFLATE application/xml +</span></span><span class="line"><span class="cl">AddOutputFilterByType DEFLATE application/xhtml+xml +</span></span><span class="line"><span class="cl">AddOutputFilterByType DEFLATE application/x-font +</span></span><span class="line"><span class="cl">AddOutputFilterByType DEFLATE application/x-font-truetype +</span></span><span class="line"><span class="cl">AddOutputFilterByType DEFLATE application/x-font-ttf +</span></span><span class="line"><span class="cl">AddOutputFilterByType DEFLATE application/x-font-otf +</span></span><span class="line"><span class="cl">AddOutputFilterByType DEFLATE application/x-font-woff +</span></span><span class="line"><span class="cl">AddOutputFilterByType DEFLATE application/x-font-woff2 +</span></span><span class="line"><span class="cl">AddOutputFilterByType DEFLATE application/x-font-opentype +</span></span><span class="line"><span class="cl">AddOutputFilterByType DEFLATE application/vnd.ms-fontobject +</span></span><span class="line"><span class="cl">AddOutputFilterByType DEFLATE font/ttf +</span></span><span class="line"><span class="cl">AddOutputFilterByType DEFLATE font/otf +</span></span><span class="line"><span class="cl">AddOutputFilterByType DEFLATE font/eot +</span></span><span class="line"><span class="cl">AddOutputFilterByType DEFLATE font/woff +</span></span><span class="line"><span class="cl">AddOutputFilterByType DEFLATE font/woff2 +</span></span><span class="line"><span class="cl">AddOutputFilterByType DEFLATE font/opentype +</span></span><span class="line"><span class="cl"># For Olders Browsers Which Can&#39;t Handle Compression +</span></span><span class="line"><span class="cl">BrowserMatch ^Mozilla/4 gzip-only-text/html +</span></span><span class="line"><span class="cl">BrowserMatch ^Mozilla/4\.0[678] no-gzip +</span></span><span class="line"><span class="cl">BrowserMatch \bMSIE !no-gzip !gzip-only-text/html +</span></span><span class="line"><span class="cl">&lt;/IfModule&gt; +</span></span></code></pre></div><h5 id="bad-bot-and-vulnerability-blockers">Bad Bot and Vulnerability blockers</h5> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl"># Block Bad Bots &amp; Scrapers +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;Aboundex&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;80legs&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;360Spider&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Java&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Cogentbot&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Alexibot&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^asterias&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^attach&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^BackDoorBot&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^BackWeb&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;Bandit&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^BatchFTP&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Bigfoot&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Black.Hole&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^BlackWidow&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^BlowFish&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^BotALot&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;Buddy&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^BuiltBotTough&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Bullseye&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^BunnySlippers&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Cegbfeieh&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^CheeseBot&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^CherryPicker&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^ChinaClaw&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;Collector&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;Copier&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^CopyRightCheck&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^cosmos&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Crescent&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Custo&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^AIBOT&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^DISCo&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^DIIbot&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^DittoSpyder&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Download\ Demon&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Download\ Devil&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Download\ Wonder&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^dragonfly&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Drip&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^eCatch&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^EasyDL&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^ebingbong&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^EirGrabber&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^EmailCollector&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^EmailSiphon&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^EmailWolf&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^EroCrawler&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Exabot&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Express\ WebPictures&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;Extractor&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^EyeNetIE&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Foobot&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^flunky&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^FrontPage&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Go-Ahead-Got-It&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^gotit&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^GrabNet&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Grafula&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Harvest&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^hloader&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^HMView&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^HTTrack&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^humanlinks&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^IlseBot&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Image\ Stripper&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Image\ Sucker&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;Indy\ Library&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^InfoNaviRobot&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^InfoTekies&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Intelliseek&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^InterGET&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Internet\ Ninja&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Iria&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Jakarta&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^JennyBot&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^JetCar&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^JOC&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^JustView&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Jyxobot&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Kenjin.Spider&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Keyword.Density&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^larbin&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^LexiBot&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^lftp&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^libWeb/clsHTTP&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^likse&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^LinkextractorPro&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^LinkScan/8.1a.Unix&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^LNSpiderguy&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^LinkWalker&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^lwp-trivial&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^LWP::Simple&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Magnet&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Mag-Net&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^MarkWatch&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Mass\ Downloader&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Mata.Hari&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Memo&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Microsoft.URL&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Microsoft\ URL\ Control&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^MIDown\ tool&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^MIIxpc&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Mirror&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Missigua\ Locator&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Mister\ PiX&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^moget&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Mozilla/3.Mozilla/2.01&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Mozilla.*NEWT&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^NAMEPROTECT&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Navroad&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^NearSite&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^NetAnts&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Netcraft&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^NetMechanic&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^NetSpider&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Net\ Vampire&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^NetZIP&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^NextGenSearchBot&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^NG&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^NICErsPRO&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^niki-bot&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^NimbleCrawler&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Ninja&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^NPbot&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Octopus&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Offline\ Explorer&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Offline\ Navigator&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Openfind&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^OutfoxBot&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^PageGrabber&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Papa\ Foto&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^pavuk&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^pcBrowser&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^PHP\ version\ tracker&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Pockey&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^ProPowerBot/2.14&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^ProWebWalker&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^psbot&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Pump&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^QueryN.Metasearch&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^RealDownload&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;Reaper&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;Recorder&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^ReGet&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^RepoMonkey&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^RMA&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;Siphon&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^SiteSnagger&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^SlySearch&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^SmartDownload&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Snake&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Snapbot&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Snoopy&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^sogou&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^SpaceBison&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^SpankBot&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^spanner&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Sqworm&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;Stripper&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;Sucker&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^SuperBot&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^SuperHTTP&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Surfbot&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^suzuran&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Szukacz/1.4&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^tAkeOut&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Teleport&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Telesoft&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^TurnitinBot/1.5&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^The.Intraformant&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^TheNomad&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^TightTwatBot&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Titan&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^True_Robot&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^turingos&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^TurnitinBot&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^URLy.Warning&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Vacuum&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^VCI&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^VoidEYE&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Web\ Image\ Collector&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Web\ Sucker&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^WebAuto&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^WebBandit&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Webclipping.com&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^WebCopier&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^WebEMailExtrac.*&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^WebEnhancer&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^WebFetch&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^WebGo\ IS&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Web.Image.Collector&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^WebLeacher&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^WebmasterWorldForumBot&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^WebReaper&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^WebSauger&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Website\ eXtractor&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Website\ Quester&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Webster&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^WebStripper&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^WebWhacker&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^WebZIP&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;Whacker&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Widow&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^WISENutbot&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^WWWOFFLE&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^WWW-Collector-E&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Xaldon&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Xenu&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Zeus&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;ZmEu&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;^Zyborg&#34; bad_bot +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl"># Vulnerability Scanners +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;Acunetix&#34; bad_bot +</span></span><span class="line"><span class="cl">SetEnvIfNoCase User-Agent &#34;FHscan&#34; bad_bot +</span></span><span class="line"><span class="cl"># Aggressive Chinese Search Engine +</span></span><span class="line"><span class="cl">#SetEnvIfNoCase User-Agent &#34;Baiduspider&#34; bad_bot +</span></span><span class="line"><span class="cl"># Aggressive Russian Search Engine +</span></span><span class="line"><span class="cl"># Uncomment to disable this search engine +</span></span><span class="line"><span class="cl"># SetEnvIfNoCase User-Agent &#34;Yandex&#34; bad_bot` +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl">&lt;Limit GET POST HEAD&gt; +</span></span><span class="line"><span class="cl">Order Allow,Deny +</span></span><span class="line"><span class="cl">Allow from all +</span></span><span class="line"><span class="cl"># Surveillance +</span></span><span class="line"><span class="cl">deny from 38.100.19.8/29 +</span></span><span class="line"><span class="cl">deny from 38.100.21.0/24 +</span></span><span class="line"><span class="cl">deny from 38.100.41.64/26 +</span></span><span class="line"><span class="cl">deny from 38.105.71.0/25 +</span></span><span class="line"><span class="cl">deny from 38.105.83.0/27 +</span></span><span class="line"><span class="cl">deny from 38.112.21.140/30 +</span></span><span class="line"><span class="cl">deny from 38.118.42.32/29 +</span></span><span class="line"><span class="cl">deny from 65.213.208.128/27 +</span></span><span class="line"><span class="cl">deny from 65.222.176.96/27 +</span></span><span class="line"><span class="cl">deny from 65.222.185.72/29` +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl">Deny from env=bad_bot +</span></span><span class="line"><span class="cl">&lt;/Limit&gt; +</span></span></code></pre></div><h2 id="in-closing">In Closing</h2> +<p>I recommend and personally use all the above settings, however, I broke up each section of my htaccess so you can drop ones you don’t like or want. Pay close attention to the section Force HTTPS as this will force all http traffic to https and you must have a valid SSL Certificate.</p> + + + + Terms of Service + https://christitus.com/terms-conditions/ + Wed, 19 Sep 2018 15:29:33 +0000 + + https://christitus.com/terms-conditions/ + <p>Last updated: September 19, 2018</p> +<p>Please read these Terms of Service (“Terms”, “Terms of Service”) carefully before using the <a href="https://christitus.com">https://christitus.com</a> website (the “Service”) operated by Chris Titus Tech (“us”, “we”, or “our”).</p> +<p>Your access to and use of the Service is conditioned on your acceptance of and compliance with these Terms. These Terms apply to all visitors, users and others who access or use the Service.</p> +<p>By accessing or using the Service you agree to be bound by these Terms. If you disagree with any part of the terms then you may not access the Service. This Terms of Service agreement for Chris Titus Tech is managed by <a href="https://termsfeed.com/terms-conditions/generator/">TermsFeed Terms and Conditions Generator</a>.</p> +<h2 id="accounts">Accounts</h2> +<p>When you create an account with us, you must provide us information that is accurate, complete, and current at all times. Failure to do so constitutes a breach of the Terms, which may result in immediate termination of your account on our Service.</p> +<p>You are responsible for safeguarding the password that you use to access the Service and for any activities or actions under your password, whether your password is with our Service or a third-party service.</p> +<p>You agree not to disclose your password to any third party. You must notify us immediately upon becoming aware of any breach of security or unauthorized use of your account.</p> +<h2 id="links-to-other-web-sites">Links To Other Web Sites</h2> +<p>Our Service may contain links to third-party web sites or services that are not owned or controlled by Chris Titus Tech.</p> +<p>Chris Titus Tech has no control over, and assumes no responsibility for, the content, privacy policies, or practices of any third party web sites or services. You further acknowledge and agree that Chris Titus Tech shall not be responsible or liable, directly or indirectly, for any damage or loss caused or alleged to be caused by or in connection with use of or reliance on any such content, goods or services available on or through any such web sites or services.</p> +<p>We strongly advise you to read the terms and conditions and privacy policies of any third-party web sites or services that you visit.</p> +<h2 id="termination">Termination</h2> +<p>We may terminate or suspend access to our Service immediately, without prior notice or liability, for any reason whatsoever, including without limitation if you breach the Terms.</p> +<p>All provisions of the Terms which by their nature should survive termination shall survive termination, including, without limitation, ownership provisions, warranty disclaimers, indemnity and limitations of liability.</p> +<p>We may terminate or suspend your account immediately, without prior notice or liability, for any reason whatsoever, including without limitation if you breach the Terms.</p> +<p>Upon termination, your right to use the Service will immediately cease. If you wish to terminate your account, you may simply discontinue using the Service.</p> +<p>All provisions of the Terms which by their nature should survive termination shall survive termination, including, without limitation, ownership provisions, warranty disclaimers, indemnity and limitations of liability.</p> +<h2 id="governing-law">Governing Law</h2> +<p>These Terms shall be governed and construed in accordance with the laws of Texas, United States, without regard to its conflict of law provisions.</p> +<p>Our failure to enforce any right or provision of these Terms will not be considered a waiver of those rights. If any provision of these Terms is held to be invalid or unenforceable by a court, the remaining provisions of these Terms will remain in effect. These Terms constitute the entire agreement between us regarding our Service, and supersede and replace any prior agreements we might have between us regarding the Service.</p> +<h2 id="changes">Changes</h2> +<p>We reserve the right, at our sole discretion, to modify or replace these Terms at any time. If a revision is material we will try to provide at least 30 days notice prior to any new terms taking effect. What constitutes a material change will be determined at our sole discretion.</p> +<p>By continuing to access or use our Service after those revisions become effective, you agree to be bound by the revised terms. If you do not agree to the new terms, please stop using the Service.</p> +<h2 id="contact-us">Contact Us</h2> +<p>If you have any questions about these Terms, please contact us.</p> + + + + + Privacy Policy of Chris Titus Tech + https://christitus.com/privacy/ + Wed, 19 Sep 2018 15:25:58 +0000 + + https://christitus.com/privacy/ + <p>Chris Titus operates the <a href="https://christitus.com">https://christitus.com</a> website, which provides the SERVICE.</p> +<p>This page is used to inform website visitors regarding our policies with the collection, use, and disclosure of Personal Information if anyone decided to use our Service, the Chris Titus Tech website.</p> +<p>If you choose to use our Service, then you agree to the collection and use of information in relation with this policy. The Personal Information that we collect are used for providing and improving the Service. We will not use or share your information with anyone except as described in this Privacy Policy.</p> +<p>The terms used in this Privacy Policy have the same meanings as in our Terms and Conditions, which is accessible at <a href="https://christitus.com">https://christitus.com</a>, unless otherwise defined in this Privacy Policy.</p> +<h2 id="information-collection-and-use">Information Collection and Use</h2> +<p>For a better experience while using our Service, we may require you to provide us with certain personally identifiable information, including but not limited to your name, phone number, and postal address. The information that we collect will be used to contact or identify you.</p> +<h2 id="log-data">Log Data</h2> +<p>We want to inform you that whenever you visit our Service, we collect information that your browser sends to us that is called Log Data. This Log Data may include information such as your computer’s Internet Protocol (“IP”) address, browser version, pages of our Service that you visit, the time and date of your visit, the time spent on those pages, and other statistics.</p> +<h2 id="cookies">Cookies</h2> +<p>Cookies are files with small amount of data that is commonly used an anonymous unique identifier. These are sent to your browser from the website that you visit and are stored on your computer’s hard drive.</p> +<p>Our website uses these “cookies” to collection information and to improve our Service. You have the option to either accept or refuse these cookies, and know when a cookie is being sent to your computer. If you choose to refuse our cookies, you may not be able to use some portions of our Service.</p> +<h2 id="service-providers">Service Providers</h2> +<p>We may employ third-party companies and individuals due to the following reasons:</p> +<ul> +<li>To facilitate our Service;</li> +<li>To provide the Service on our behalf;</li> +<li>To perform Service-related services; or</li> +<li>To assist us in analyzing how our Service is used.</li> +</ul> +<p>We want to inform our Service users that these third parties have access to your Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use the information for any other purpose.</p> +<h2 id="security">Security</h2> +<p>We value your trust in providing us your Personal Information, thus we are striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and we cannot guarantee its absolute security.</p> +<h2 id="links-to-other-sites">Links to Other Sites</h2> +<p>Our Service may contain links to other sites. If you click on a third-party link, you will be directed to that site. Note that these external sites are not operated by us. Therefore, we strongly advise you to review the Privacy Policy of these websites. We have no control over, and assume no responsibility for the content, privacy policies, or practices of any third-party sites or services.</p> +<p>Children’s Privacy</p> +<p>Our Services do not address anyone under the age of 13. We do not knowingly collect personal identifiable information from children under 13. In the case we discover that a child under 13 has provided us with personal information, we immediately delete this from our servers. If you are a parent or guardian and you are aware that your child has provided us with personal information, please contact us so that we will be able to do necessary actions.</p> +<h2 id="changes-to-this-privacy-policy">Changes to This Privacy Policy</h2> +<p>We may update our Privacy Policy from time to time. Thus, we advise you to review this page periodically for any changes. We will notify you of any changes by posting the new Privacy Policy on this page. These changes are effective immediately, after they are posted on this page. This Privacy Policy was created with the <a href="https://gdprprivacypolicy.net">GDPR Privacy Policy Generator</a>.</p> +<h2 id="contact-us">Contact Us</h2> +<p>If you have any questions or suggestions about our Privacy Policy, do not hesitate to contact us.</p> + + + + + Snipping Tool Removed by Microsoft in October 2018 Update 1809 + https://christitus.com/snipping-tool-removed/ + Tue, 18 Sep 2018 19:06:44 +0000 + + https://christitus.com/snipping-tool-removed/ + <p>The Snipping Tool is being removed by Microsoft in October 2018 Update 1809 and I am not happy! This tool is one of the best tools Microsoft has ever created, so why? Well, they want you to use the Snip and Sketch App from the Microsoft Store. Spoiler: It sucks.</p> +<h2 id="greenshot-the-best-snipping-tool-replacement">Greenshot the best Snipping Tool Replacement</h2> +<p>So what should you use? Greenshot. Its freeware and it just works. Not bulky with a toolbar, but adds a tray icon, which you don’t have to use. You can just press print screen and away you go.</p> +<p>Download it from there website here: <a href="http://getgreenshot.org/downloads/">http://getgreenshot.org/downloads/</a></p> +<h2 id="microsoft-snip-and-sketch-replacement">Microsoft Snip and Sketch Replacement</h2> +<p>Currently, this is labeled as Screen Sketch, however, this is changing to Snip and Sketch App in the next update. Here is the preview of the upcoming disaster for Microsoft their predictably bad moves on forcing their tragic app store on us. Here is today’s download image of the app prior to the upcoming update that sunsets our beloved Snipping Tool.</p> +<p><img src="https://christitus.com/images/2018/09/screen-sketch.png" alt="screen-sketch"></p> +<h2 id="conclusion">Conclusion</h2> +<p>With Snipping Tool gone, you might as well get used to something new, and Greenshot is a great freeware that has been around for 4 years. In the short week or so that I have been using this, I have grown to love it more than the old Snipping Tool. The features give me more options, but with its polish, I am much more efficient than I ever was.</p> + + + + Using IOMeter to determine hard drive performance + https://christitus.com/using-iometer/ + Fri, 14 Sep 2018 16:50:46 +0000 + + https://christitus.com/using-iometer/ + <p>Using IOMeter will give you a great benchmark on any hard drives and network drives you have. I use this quite often as you can see the effects of new hardware, introducing Link-Aggregation, or troubleshooting drives to determine if they are losing performance.</p> +<h2 id="steps-to-follow">Steps to Follow</h2> +<ol> +<li>Download IOMeter from the <a href="http://www.iometer.org/doc/downloads.html">Official Site</a> and run setup</li> +</ol> +<p><img src="https://christitus.com/images/2018/09/isometer1.png" alt="isometer1"></p> +<ol start="2"> +<li> +<p>All Programs -&gt; Iometer -&gt; Iometer</p> +</li> +<li> +<p>Under ‘Topology’ tab, select the local machine<br> +-Delete All workers but 1<br> +-Under ‘Disk Targets’ tab select the drive you want to run the IO test on:<br> +-Set Maximum Disk Size to 204800 Sectors (one sector is 512 B, so 204800 sectors gives 100MB)</p> +</li> +</ol> +<p><img src="https://christitus.com/images/2018/09/isometer2.png" alt="isometer2"></p> +<ol start="4"> +<li>Under ‘Access Specifications’ tab, under Global Access Specifications, select Default, and Click Add</li> +</ol> +<p>_Note: Default test is – 67% read, 33% write, 2 KB, 100% Random non/sequential writes, Burst Length 1 I/O. This is fine for this brief guide and the sample results below use this. _</p> +<p><img src="https://christitus.com/images/2018/09/isometer3.png" alt="isometer3"></p> +<ol start="5"> +<li>Under ‘Results Display’ tab, under Update Frequency, set to 10 seconds</li> +</ol> +<p><img src="https://christitus.com/images/2018/09/iometer4.png" alt="isometer4"></p> +<ol start="6"> +<li> +<p>Under ‘Test Setup’ tab, set Run Time to 1 minute ( If bench-marking a SAN or Network drive I recommend doing it for 5 minutes for consistency. )</p> +</li> +<li> +<p>Clone Workers from the first page to the number of cores you have. (Ex. Quad Core = 4 workers)</p> +</li> +<li> +<p>The click the green flag to start the test, and choose a location to save the results….</p> +</li> +</ol> +<h2 id="conclusion">Conclusion</h2> +<p>Remember to benchmark often and always do a before and after you make any changes. This is imperative so you can see any performance gains or losses you might incur. There are many times I have been surprised by the results of switching hardware or simply testing older hardware to see how it is holding up. One thing is for certain, I haven’t found a freeware tool that is better than IOMeter in the past 15 years that I’ve been doing IT.</p> + + + + Issuing SSL Certs using Let’s Encrypt in Ubuntu + https://christitus.com/issuing-ssl-certs/ + Thu, 13 Sep 2018 20:49:56 +0000 + + https://christitus.com/issuing-ssl-certs/ + <p>This article goes over Issuing SSL Certs using Let’s Encrypt in Ubuntu 16.04. The basic steps outlined in the video are adding the repository, installing certbot, issuing a certificate, and enabling SSL.</p> +<h4 id="video-guide">Video Guide:</h4> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/yC3GTHJRQuM" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + +<h2 id="links">Links</h2> +<p>Let’s Encrypt @ <a href="https://letsencrypt.org">https://letsencrypt.org</a></p> +<p>Certbot @ <a href="https://certbot.eff.org">https://certbot.eff.org</a></p> +<h2 id="command-list-for-issuing-ssl-certs">Command List for Issuing SSL Certs</h2> +<p><code>sudo apt-get update</code><br> +<code>sudo apt-get install software-properties-common -y</code><br> +<code>sudo add-apt-repository ppa:certbot/certbot</code><br> +<code>sudo apt-get update</code><br> +<code>sudo apt-get install python-certbot-apache -y</code><br> +<code>sudo certbot --apache</code></p> +<h2 id="finishing-up">Finishing Up</h2> +<p>After performing these steps you will make your site secure and it will automatically renew this certificate. This is a great set it and forget solution, expecially if you are running your own site on a budget.</p> + + + + Google Chrome missing www and how to fix it + https://christitus.com/google-chrome-update-69-address-bar-and-how-to-fix-it/ + Wed, 12 Sep 2018 20:49:44 +0000 + + https://christitus.com/google-chrome-update-69-address-bar-and-how-to-fix-it/ + <p>Chrome started rolling out update 69 at the beginning of this month (September 2018) causing a missing www in the address bar. There are two things this update did that you need to be aware of.</p> +<h2 id="google-chrome-update-69-changes">Google Chrome Update 69 Changes</h2> +<ul> +<li><strong>Show trivial sub-domains (missing www in the address bar)</strong> +<ul> +<li>Fix: Type this in your address bar:</li> +<li><strong>chrome://flags/#omnibox-ui-hide-steady-state-url-scheme-and-subdomains</strong></li> +<li>Set to <strong>DISABLED</strong></li> +</ul> +</li> +<li><strong>Chrome now defaults to SSL / HTTPS for all websites</strong> +<ul> +<li>So I didn’t realize this happened and launched a new ubuntu web server to find it unreachable with apache installed. After wasting a lot of time, more than I’m willing to tell you here, I found out the new version of chrome will default to https:// before everything unless you explicitly put http:// in the address bar. This includes IP addresses and the like. So make sure you have SSL certs updated otherwise you are going to have a bad time.</li> +</ul> +</li> +</ul> +<h2 id="video-walkthrough">Video Walkthrough</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/0O9TzNvVwR0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + +<h2 id="conclusion">Conclusion</h2> +<p>I typically love a lot of the Google projects and updates they do, but the missing www in the address bar left me a little puzzled and why they thought they needed to do it. On the plus side, I do like the new chrome tabs, so the entire update is not all bad. Also, the changes to default to secure sites has been a long time coming. There are many different reasons for this, but the fact is by forcing webmasters to use SSL and get secure is a good thing. These days non-secure http sites can easily be exploited by a variety of different methods and this is a welcomed change in my opinion.</p> + + + + Installing Linux Subsystem for Windows 10 + https://christitus.com/installing-linux-subsystem/ + Tue, 11 Sep 2018 19:56:07 +0000 + + https://christitus.com/installing-linux-subsystem/ + <p>The following video goes over installing Linux Subsystem on Windows 10. Most notably it allows you to run Linux terminal commands in Windows 10 without having a virtual machine or dual boot into a Linux operating system.</p> +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/RriP3LmuKNA" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + +<h2 id="enable-linux-subsystem-feature">Enable Linux Subsystem Feature</h2> +<p><code>cd ~ Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux</code><br> +<em>Note: Perform in PowerShell</em></p> +<h3 id="powershell-installation-method">PowerShell Installation Method</h3> +<p><code>Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1604 -OutFile Ubuntu.appx -UseBasicParsing Rename-Item -Path ~/Ubuntu.appx -NewName Ubuntu.zip Expand-Archive ~/Ubuntu.zip ~/Ubuntu cd Ubuntu ./ubuntu.exe</code></p> +<h3 id="microsoft-store-installation-method">Microsoft Store Installation Method</h3> +<ul> +<li>Open the Microsoft Store</li> +<li>Browse to Ubuntu-1604 and subsequently click the Install button</li> +</ul> +<h2 id="conclusion">Conclusion</h2> +<p>In Closing The Linux Subsystem is a welcomed addition to Windows 10 because most things that come from the Microsoft store are garbage. Above all using this will give you the ability to check out and compile many GitHub projects. It is now one of the first options I enable when I do fresh installs of Windows 10 due to the fact Linux is not practical all the time. Leave any Questions and Comments below and I’ll get back to you. I regularly publish on</p> + + + + Introduction to Google Cloud Platform + https://christitus.com/intro-google-cloud-platform/ + Tue, 11 Sep 2018 13:44:02 +0000 + + https://christitus.com/intro-google-cloud-platform/ + <p>This is an Introduction to Google Cloud Platform and goes over creating your first project and virtual machine. This walkthrough is for beginners that are just getting started with Google Cloud.</p> +<h2 id="video-walkthrough">Video Walkthrough</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/tJyVG-u6RhA" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + +<h2 id="gcloud-commands">GCloud Commands</h2> +<p>Allows gcloud commands from command prompt</p> +<p><a href="https://cloud.google.com/appengine/docs/standard/python/download">https://cloud.google.com/appengine/docs/standard/python/download</a></p> +<h2 id="next-steps">Next Steps</h2> +<p>Now that we know how to use Google Cloud Platform, go out and build up your first system. I highly recommend starting with an Ubuntu server, since they have the best community support for starters, and install a web server to host a website. I found this incredibly easy, especially compared to AWS or Azure. If you want to see any follow-up topics on Google Cloud Platform, let me know below, and I will work on creating more content explaining it. If you are in business, I highly recommend you look at Google Cloud Platform for a backup server and use a VPN to connect your on-site servers. This works seamlessly and is very affordable for a cloud solution.</p> + + + + Setup an always on VPN in Ubuntu + https://christitus.com/setup-always-on-vpn/ + Mon, 10 Sep 2018 14:59:11 +0000 + + https://christitus.com/setup-always-on-vpn/ + <p>This is a guide on how to set up an always on VPN in Ubuntu, and basic troubleshooting of VPNs in ubuntu server. I used Private Internet Access as an example VPN connection.</p> +<p>Use my affiliate link to get a Private Internet Access VPN: <a href="http://www.privateinternetaccess.com/pages/buy-vpn/christitus">http://www.privateinternetaccess.com/pages/buy-vpn/christitus</a>. This is a must-have for a dedicated Linux box specifically for privacy concerns.</p> +<h3 id="setup-vpn-in-ubuntu-8211-no-commentary">Setup VPN in Ubuntu – No Commentary</h3> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/KrNgZPzHNeA" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + +<h3 id="setup-vpn-in-ubuntu-8211-with-commentary">Setup VPN in Ubuntu – With Commentary</h3> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/tHEd3fFfGpM" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + +<h2 id="vpn-setup-commands">VPN setup commands:</h2> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo su +</span></span><span class="line"><span class="cl">apt-get install openvpn -y +</span></span><span class="line"><span class="cl">cd /etc/openvpn +</span></span><span class="line"><span class="cl">wget https://www.privateinternetaccess.com... +</span></span><span class="line"><span class="cl">unzip openvpn.zip +</span></span><span class="line"><span class="cl">rm openvpn.zip +</span></span><span class="line"><span class="cl">nano .secrets +</span></span></code></pre></div><blockquote> +<p>p1234567 ###PASTE YOUR INFO###<br> +MyPIAPassword ###PASTE YOUR INFO###</p> +</blockquote> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">chmod 600 .secrets +</span></span><span class="line"><span class="cl">mv &#39;US Texas.ovpn&#39; texas.conf +</span></span><span class="line"><span class="cl">nano texas.conf +</span></span></code></pre></div><blockquote> +<p>auth-user-pass .secrets ###CHANGE THIS LINE###</p> +</blockquote> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">systemctl start openvpn@texas +</span></span><span class="line"><span class="cl">systemctl status openvpn@texas +</span></span><span class="line"><span class="cl">nano /etc/default/openvpn ###UNCOMMENT AUTOSTART +</span></span><span class="line"><span class="cl">reboot +</span></span></code></pre></div><h2 id="diagnostic-commands">Diagnostic Commands</h2> +<p>Once complete, find the external IP as that is needed to make sure it is working. If your VPN is failing to connect I recommend using tail on the syslog so consequently, you can find any issues that are stopping the connection.</p> +<h2 id="extra-tools">Extra Tools</h2> +<p>Find External IP: dig TXT +short o-o.myaddr.l.google.com @ns1.google.com | awk -F&rsquo;&quot;&rsquo; &lsquo;{ print $2}&rsquo; +Debug as necessary: tail -f /var/log/syslog|grep ovpn`</p> +<p>In closing, make sure you always use a VPN when you are concerned about your privacy. I’ve also set these up on Linux boxes between offices and it makes for a great inexpensive site-to-site VPN. Therefore, you don’t have to spend tons of money on proprietary gateways that go out of date in a couple years.</p> + + + + XCP-ng / XenServer – Your First Virtual Machine Installation + https://christitus.com/xenserver-xcp-ng-first-vm-install/ + Sun, 09 Sep 2018 18:54:21 +0000 + + https://christitus.com/xenserver-xcp-ng-first-vm-install/ + <p>This video goes through setting up a Virtual Machine in XenServer / XCP-ng in a lab environment. If you want to experiment with in detail with XenServer, I highly recommend you download XCP-ng from their <a href="https://xcp-ng.org">official website</a>.</p> +<p>This is a community-powered version of XenServer with ALL FEATURES ENABLED. XenServer from Citrix has recently started going away from its open-source roots and as a result, has begun locking features behind a paywall.</p> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/n-0CWPhxgP0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Debloat Windows 10 + https://christitus.com/debloat-windows-10/ + Sun, 09 Sep 2018 17:08:58 +0000 + + https://christitus.com/debloat-windows-10/ + <p>Trying to Debloat Windows 10 is getting ridiculous and as a system admin it is soul crushing to see all that performance go to waste on the botched attempt by Microsoft to do an Appstore and its apps (I’m looking at you Candy Crush). Luckily some admins have worked tirelessly to give us a solution that works considerably well. Lets Start!</p> +<h2 id="october-2020-update">October 2020 Update</h2> +<p>If you are coming here from the YouTube video I have taken all the scripts below and a system admin script I used a lot in the past to make a streamlined debloat script. This script will optimize Windows and can be run multiple times if you have an update ruin all the optimizations. I have also made it very easy to launch. Here is the source files: <a href="https://github.com/ChrisTitusTech/win10script">https://github.com/ChrisTitusTech/win10script</a></p> +<p>If you want to just run this on any system, you can easily copy and paste this into a Admin Powershell prompt and watch it do everything for you. It does have two prompts based on user feedback. Let me know what you think below!</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">iex ((New-Object System.Net.WebClient).DownloadString(&#39;https://git.io/JJ8R4&#39;)) +</span></span></code></pre></div><p>What this script does</p> +<ul> +<li>Installs Chocolatey, Notepad++, Irfanview, VLC, Java, and asks if you want Adobe Reader or Brave.</li> +<li>Removes all Windows Store Apps EXCEPT office, xbox, and WSL.</li> +<li>Removed Telemetry</li> +<li>Disables Cortana</li> +<li>Deletes various schedules tasks that rebloat the system</li> +<li>Removes Other Bloatware (Candy Crush, etc.)</li> +<li>Fixes problems that other scripts causes (lock screen and personalization options restricted)</li> +</ul> +<p>Based on User feedback, this no longer uninstalls OneDrive or Office.</p> +<h2 id="old-2018-instructions">Old 2018 Instructions</h2> +<ul> +<li>Right Click Windows Button -&gt;Select Powershell Prompt (Admin) OR Select Command Prompt (Admin) +<ul> +<li><em>Note: If you don’t have PowerShell and only command prompt open command prompt (admin) and type “<em>powershell</em>“</em></li> +</ul> +</li> +<li>Change Execution policy to allow a debloat script to run in Powershell <code>Set-ExecutionPolicy Unrestricted</code></li> +<li>Run the script from the following Github Repository. The person running this GitHub has been updating this script for a while and is a godsend. (Source: <a href="https://github.com/Sycnex/Windows10Debloater">https://github.com/Sycnex/Windows10Debloater</a>) Use Windows10Debloater.ps1from the location above +<ul> +<li><em>During installation select yes to debloat windows 10, select yes to remove OneDrive, and Yes to reboot after it finishes. Below is the image of performing these tasks.</em></li> +</ul> +</li> +</ul> +<p>[<img src="https://christitus.com/images/2018/09/debloatwin10cmd.png" alt="debloatwin10cmd"></p> +<h2 id="video-walkthrough">Video Walkthrough</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/q4ziE5Am0pM" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Virtualization Introduction + https://christitus.com/virtualization-introduction/ + Fri, 07 Sep 2018 21:33:35 +0000 + + https://christitus.com/virtualization-introduction/ + <p>This is a virtualization introduction and when you should be using it. In the follow-up videos, I will go into using the hypervisor, creating VMs and maintenance.</p> +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/T0nywDkf1IE" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + +<p>Now that you understand what it is and if you want to start getting your feet wet, please check out my other video to start installing your hypervisor and launching your first virtual machine [here][1]. I highly recommend starting out with VMware as it used the most. It also has the most material online if looking for virtualization introduction videos and how to guides.</p> + + + + Remove Asterisk from Linux server (ubuntu/centos/debian/rhel) + https://christitus.com/remove-asterisk/ + Fri, 17 Aug 2018 15:58:36 +0000 + + https://christitus.com/remove-asterisk/ + <p>The following removal instructions go over how to completely remove Asterisk from your Linux Instance.</p> +<h2 id="remove-and-reinstall-instructions">REMOVE AND REINSTALL INSTRUCTIONS</h2> +<p>Here is how to remove Asterisk from a Linux server and reinstall from source.</p> +<p><em>Pre-requirements: Download source, configure, make menuselect, and make. All done with root (use su) Example:</em></p> +<p><code>su</code></p> +<blockquote> +<p>###ENTER ROOT PASSWORD###</p> +</blockquote> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">mkdir ~/build +</span></span><span class="line"><span class="cl">cd ~/build +</span></span><span class="line"><span class="cl">wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-14-current.tar.gz +</span></span><span class="line"><span class="cl">tar -xvf asterisk-14-current.tar.gz +</span></span><span class="line"><span class="cl">cd asterisk-14 +</span></span><span class="line"><span class="cl">./contrib/scripts/install_prereq install +</span></span><span class="line"><span class="cl">./configure --with-jansson-bundled ##Note: you may not need jansson-bundled so omit this if needed## +</span></span><span class="line"><span class="cl">make menuselect +</span></span></code></pre></div><blockquote> +<p>###Select any needed addons: MP3, etc.###</p> +</blockquote> +<p><code>make</code><br> +<em>Note: you can install asterisk 13, 15, or custom git asterisk branch (i.e. gvsip) instead of Asterisk-14 tar</em></p> +<p>Once you have the project built, you now need to clean the old asterisk out and reboot</p> +<p><code>make uninstall</code></p> +<blockquote> +<p>###OR to clean EVERYTHING###</p> +</blockquote> +<p><code>make uninstall-all</code></p> +<p>Once this is complete I like to reboot, and then run a <strong>make install</strong> to install the different version of asterisk.</p> +<h2 id="full-removal-no-reinstall">FULL REMOVAL NO REINSTALL</h2> +<p>Now let’s say you just want to remove Asterisk and just don’t want it anymore. Well, that is far simpler. Just run the following commands and it will be gone forever</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">killall -9 safe_asterisk +</span></span><span class="line"><span class="cl">killall -9 asterisk +</span></span><span class="line"><span class="cl">systemctl disable asterisk ##Note: depending on the install this may not be enabled or was set to run via @reboot cron or daemon service - Mileage will vary## +</span></span><span class="line"><span class="cl">rm -rf /etc/asterisk +</span></span><span class="line"><span class="cl">rm -rf /var/log/asterisk +</span></span><span class="line"><span class="cl">rm -rf /var/lib/asterisk +</span></span><span class="line"><span class="cl">rm -rf /var/lib64/asterisk +</span></span><span class="line"><span class="cl">rm -rf /var/spool/asterisk +</span></span><span class="line"><span class="cl">rm -rf /usr/lib/asterisk +</span></span><span class="line"><span class="cl">rm -rf /usr/lib64/asterisk +</span></span><span class="line"><span class="cl">reboot +</span></span></code></pre></div><p>These instructions should work on any Linux Based system and it shouldn’t matter if it is Red Hat based or Debian based.</p> + + + + Repair Windows Boot Partition | Includes files and partitioning + https://christitus.com/repair-windows-boot-partition/ + Mon, 02 Jul 2018 17:01:44 +0000 + + https://christitus.com/repair-windows-boot-partition/ + <p>This walkthrough shows you how to repair windows boot partition and boot from an existing windows installation without reinstalling windows.</p> +<p>Recently I had an old server with a FAT32 system reserved partition and a bunch of extra partitions. I have already moved all the data off the server and it was ready for decommissioning. Before, I did this I wanted to go ahead and remove all these old partitions and just leave the C: Drive with the Windows installation then rebuild the System Reserved partition as NTFS as an exercise. Many backup programs have issues doing block level images with FAT32 partitions OR you need to do a physical to virtual setup. For me, I wanted to decommission the hardware but be able to spin up this server in a virtual environment if needed.</p> +<h2 id="backup-before-attempting-this">Backup Before Attempting This!</h2> +<h3 id="step-1-delete-old-partitions-and-create-new-ones">Step 1: Delete old partitions and create new ones</h3> +<ul> +<li>Boot into your partition manager of choice (I used Parted Magic <a href="https://partedmagic.com/">https://partedmagic.com/</a> ) GParted</li> +<li>Delete extra partitions including the old FAT32 system partition (These all should be very small between 100 MB and up to 2 GB)</li> +<li>Create new NTFS partition with 512 MB of space and label it System Reserved</li> +<li>Shutdown</li> +</ul> +<h3 id="step-2-setup-partitions-with-the-correct-drive-letters">Step 2: Setup Partitions with the correct drive letters</h3> +<ul> +<li>Launch Windows 10 Install disc / usb</li> +<li>Shift+F10 once you see language select to bring up command prompt</li> +<li>Launch <code>DISKPART</code></li> +<li>select volume with 512MB (ex: <code>select vol 0</code>)</li> +<li><code>assign letter=G:</code> (or any letter that isn’t taken that is NOT C:)</li> +<li><code>exit</code> OR If Windows operating system is NOT on C:</li> +<li><code>select volume</code> with windows installation on it</li> +<li><code>assign letter=C:</code></li> +<li><code>exit</code></li> +</ul> +<p><em>Example output:</em></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">diskpart +</span></span><span class="line"><span class="cl">select disk 0 +</span></span><span class="line"><span class="cl">list vol +</span></span><span class="line"><span class="cl">select vol 0 &lt;---500 MB Partition +</span></span><span class="line"><span class="cl">assign letter=G: +</span></span><span class="line"><span class="cl">select vol 1 &lt;--- Large Partition with Windows Install on it +</span></span><span class="line"><span class="cl">assign letter=C: +</span></span><span class="line"><span class="cl">exit +</span></span></code></pre></div><p>Partitions are done. Now time to fix problems with the “type” of partition – By forcing all partitions to be NTFS NT60</p> +<p><code>bootsect.exe /nt60 all /force</code></p> +<h5 id="step-3-copy-boot-records-fix-mbr-and-rebuild-bcd">Step 3: Copy Boot Records, Fix MBR, and Rebuild BCD</h5> +<p>Rebuild new system reserved partition with EFI and regular boot files</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">bcdboot c:\Windows /s &lt;boot letter of System Reserved Partion&gt;: /f ALL +</span></span><span class="line"><span class="cl">bcdboot c:\Windows /s G: /f ALL +</span></span></code></pre></div><ul> +<li>Now we can finally rebuild the bcd and master boot record like you see in so many online guides</li> +<li>You can verify the system is seeing the windows installation by doing a <code>bootrec /scanos</code> and then be running through the rest of the commands to do the rest of the repairs</li> +</ul> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">bootrec /scanos &lt;---Verify it sees the windows install +</span></span><span class="line"><span class="cl">bootrec /fixmbr +</span></span><span class="line"><span class="cl">bootrec /fixboot &lt;----Pick the installation will mirror /scanos bootrec /rebuildbcd +</span></span></code></pre></div><ul> +<li>Reboot and you are done!</li> +</ul> +<h2 id="video">Video</h2> + +<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"> + <iframe src="https://www.youtube.com/embed/F72D7uL6cZg" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe> +</div> + + + + Commiting Changes to Docker images and containers + https://christitus.com/commiting-docker-images/ + Thu, 21 Jun 2018 19:36:03 +0000 + + https://christitus.com/commiting-docker-images/ + <p>This is a walkthrough of how to commit changes to docker images and containers. You need to do this if you make configuration changes to any docker images. By committing changes to the docker images you can backup and clone them.</p> +<p>Docker is a very powerful tool you can use to isolate applications, therefore, you won’t have them on a single server. However, some docker images don’t save changes to their container when a restart happens. You will notice that when a reboot or unexpected outage happens all your configuration will be gone since the creation of container. The Ubiquiti Unifi Controller docker image is a good example of this.</p> +<h5 id="here-are-the-following-commands-to-commit-those-changes-to-a-new-image">Here are the following commands to commit those changes to a new image</h5> +<p><code>sudo docker ps -l</code><br> +<em>Note: This shows all your containers you need to copy Container ID for the one you want to commit changes on.</em></p> +<p><code>sudo docker commit CONTAINER_ID_GOES_HERE IMAGENAME:TAG</code><br> +<em>Example Syntax: sudo docker commit 520b0f024bf6 unifi:latest-06-21-2018</em></p> +<p><img src="https://christitus.com/images/2018/06/docker.png" alt="docker"></p> +<p>Now if you have any issues you can simply create a new container using the image you created above.</p> + + + + Moving Unifi Access Point to another Unifi Controller + https://christitus.com/moving-unifi-access-point/ + Thu, 21 Jun 2018 15:57:35 +0000 + + https://christitus.com/moving-unifi-access-point/ + <p>This walkthrough goes over moving Unifi access point to another Unifi controller. To remove APs from a Unifi Controller you need to reset the APs and then either discover them or manually SSH set-inform the devices.</p> +<h3 id="first-reset-the-ap">First Reset the AP</h3> +<ul> +<li>Use Terminal or SSH (Either in existing Controller -&gt; Manage Device -&gt; Open Terminal or Putty) +<ul> +<li>Type: <code>syswrapper.sh restore-default</code><br> +OR</li> +<li>Reset the Unifi AP by the old paperclip method if you can’t putty or use existing controller</li> +</ul> +</li> +</ul> +<p><img src="https://christitus.com/images/2018/06/reset-unifi.png" alt="unifi reset"></p> +<h3 id="second-discover-device-or-manually-set-inform">Second discover device or manually set-inform</h3> +<p>On the new controller try to discover the now factory reset APs and with any luck they will show up. However in big environments I typically can never get them to be discovered so I will show you the manual method.</p> +<p>Find the IP of the AP (You can easily grab this by looking at old controller OR using advanced IP Scanner. Note: match MAC address if scanning)</p> +<ul> +<li> +<p>Putty into the AP (Launch Putty type IP, and Username/Password is factory ubnt/ubnt)</p> +<ul> +<li><code>set-inform http://ip-of-controller:8080/inform</code></li> +</ul> +</li> +<li> +<p>Adopt AP in new controller webpage</p> +<ul> +<li>Type AGAIN: <code>set-inform http://ip-of-controller:8080/inform</code></li> +</ul> +</li> +</ul> +<p><img src="https://christitus.com/images/2018/06/unifi-set-inform.png" alt="unifi set-inform"></p> +<p>We are now done moving Unifi access point on to the new Controller, and as a result, will be in the device list. From here you will be able to manage it, upgrade firmware, and do all the configuration options needed.</p> + + + + How to remotely access Window Server 2016 Core in PowerShell  + https://christitus.com/windows-server-2016-core-remote/ + Wed, 20 Jun 2018 20:30:49 +0000 + + https://christitus.com/windows-server-2016-core-remote/ + <p>This walkthrough shows you how to remotely access Window Server 2016 Core in PowerShell. Windows Server 2016 Core is a great minimal install of windows server but doesn’t come with any desktop experience. This means we will be doing everything via command prompt or PowerShell for the initial setup. The great thing is you use Powershell and RSAT from a Windows 10 machine and working on the server is a snap. You get the ease of administration and the reliability and compact design of Core.</p> +<h2 id="enable-psremote-powershell-remote">Enable PSRemote (Powershell Remote)</h2> +<p>On Host – Windows Server 2016 Core<br> +<code>Enable-PSRemoting -Force</code></p> +<p>Your Workstation <br> +<code>Enter-PSSession -ComputerName 10.0.0.2</code> <br> +<em>Note: you can use netbios name here as well</em></p> +<p>For any troubleshooting we will need to do make sure the initial setup is done by typing, <code>sconfig</code> once this has been completed you will have set the static IP, opened remote access, activated windows, and ran windows update.</p> + + + + Changing file permissions using PowerShell + https://christitus.com/changing-file-permissions/ + Thu, 14 Jun 2018 15:46:23 +0000 + + https://christitus.com/changing-file-permissions/ + <p>Use the following script for changing file permissions using PowerShell. I use this script when command line takeown and icacls fail. Obviously, run from an elevated PowerShell prompt or by typing ‘powershell’ from elevated cmd.</p> +<h2 id="the-script">The Script</h2> +<p>Change $folder to the base directory you want for changing permissions. <br> +<em>Please note, you can use network UNC paths for this or a simple C:.</em></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">$folder = &#34;\\homeserver\users\&#34; +</span></span><span class="line"><span class="cl">$users = get-childitem $folder +</span></span><span class="line"><span class="cl">Foreach ($user in $users) { +</span></span><span class="line"><span class="cl">$acl = Get-Acl $user.FullName +</span></span><span class="line"><span class="cl">$acl.SetOwner([System.Security.Principal.NTAccount]&#34;$user&#34;) +</span></span><span class="line"><span class="cl">set-acl $user.FullName $acl -Verbose +</span></span><span class="line"><span class="cl">$subFolders = Get-ChildItem $user.FullName -Directory -Recurse +</span></span><span class="line"><span class="cl">Foreach ($subFolder in $subFolders) { +</span></span><span class="line"><span class="cl">$acl = Get-Acl $subFolder.FullName +</span></span><span class="line"><span class="cl">$acl.SetOwner([System.Security.Principal.NTAccount]&#34;$user&#34;) +</span></span><span class="line"><span class="cl">set-acl $subFolder.FullName $acl -Verbose +</span></span><span class="line"><span class="cl">} +</span></span><span class="line"><span class="cl">$subFiles = Get-ChildItem $user.FullName -File -Recurse +</span></span><span class="line"><span class="cl">Foreach ($subFile in $subFiles) { +</span></span><span class="line"><span class="cl">$acl = Get-Acl $subFile.FullName +</span></span><span class="line"><span class="cl">$acl.SetOwner([System.Security.Principal.NTAccount]&#34;$user&#34;) +</span></span><span class="line"><span class="cl">set-acl $subFile.FullName $acl -Verbose +</span></span><span class="line"><span class="cl">} +</span></span><span class="line"><span class="cl">} +</span></span></code></pre></div><p>I’ve never had takeown fail on local disks, but I have found that I needed to resort to using a PowerShell script when doing this through a network location. It’s a very powerful script, however always be careful when running this. Be sure to always test this in a subdirectory first. This can be catastrophic for a company with millions of files and folder to reset the permission on, therefore be very careful!</p> + + + + Python script to print out specific results from an API JSON call + https://christitus.com/api-json-call/ + Tue, 28 Nov 2017 22:03:53 +0000 + + https://christitus.com/api-json-call/ + <p>The following is a Python script to print out specific results from an API JSON call from a website. This basic syntax will allow you to create a value to use.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">import json, urllib2 # Import libraries we will be using +</span></span><span class="line"><span class="cl">url = urllib2.urlopen(&#39;http://baseurl.com:port/api.json&#39;) # Pull webpage into a variable +</span></span><span class="line"><span class="cl">result = json.load(url) # Format the URL for JSON +</span></span><span class="line"><span class="cl">allhash = result[&#39;hashrate&#39;][&#39;total&#39;] # Pull a specific array of values +</span></span><span class="line"><span class="cl">checkhash= allhash[0] # Specify a single value in the array +</span></span></code></pre></div><h2 id="making-an-api-json-call">Making an API JSON call</h2> +<p>Using this basic script this will make a call from the JSON API on a website. I wanted a specific value 2 levels down. To determine which value you want to grab remember { open bracket will expand a level and a } close bracket will go back a level.</p> +<p>For instance, using this api.json</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">{&#34;hashrate&#34;:{&#34;threads&#34;:[[632.8,629.7,631.0],[531.6,524.6,518.4],[631.9,628.6,625.0],[501.6,520.4,512.0]],&#34;total&#34;:[2297.8,2303.2,2286.4],&#34;highest&#34;:2339.2},&#34;results&#34;:{&#34;diff_current&#34;:100001,&#34;shares_good&#34;:281,&#34;shares_total&#34;:301,&#34;avg_time&#34;:49.9,&#34;hashes_total&#34;:32000515,&#34;best&#34;:[11141633,10328800,8258255,8129845,4476110,3954464,3795403,3425658,3208501,3130523],&#34;error_log&#34;:[{&#34;count&#34;:18,&#34;last_seen&#34;:1511905084,&#34;text&#34;:&#34;Job not found.&#34;}]},&#34;connection&#34;:{&#34;pool&#34;: &#34;cryptonight.usa.nicehash.com:3355&#34;,&#34;uptime&#34;:15018,&#34;ping&#34;:109,&#34;error_log&#34;:[]}} +</span></span></code></pre></div><h3 id="in-closing">In Closing</h3> +<p>Using the above API readout you can see I go into the hashrate brackets and pull the values for “total”. This creates an array and not a single string. So to make a call for the second value in “total” you would change the python code from allhash[0] to allhash[1]. You can use this to print out the values from the script, put them in a variable to be displayed on a website, or use it in a Nagios script for monitoring. The options are limitless.</p> + + + + Taking Databases Offline and/or Dropping through SQL Query + https://christitus.com/taking-databases-offline-sql-query/ + Thu, 31 Aug 2017 17:00:08 +0000 + + https://christitus.com/taking-databases-offline-sql-query/ + <p>The following SQL query is for taking databases offline, drop the offline databases, or bring them all back online. This affects every database in your SQL instance, so be very careful when using these. The following three queries will save you a considerable amount of time if repurposing an instance.</p> +<h2 id="taking-databases-offline-and-then-dropping-them">Taking databases offline and then dropping them</h2> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">use master; +</span></span><span class="line"><span class="cl">declare @nsql nvarchar(max); +</span></span><span class="line"><span class="cl">select @nsql=coalesce(@nsql+CHAR(13)+CHAR(10),&#39;&#39;)+ +</span></span><span class="line"><span class="cl">&#39;ALTER DATABASE [&#39;+name+&#39;] SET OFFLINE WITH NO_WAIT;&#39; +</span></span><span class="line"><span class="cl">from master..sysdatabases where sid &lt;&gt; 0x01 +</span></span><span class="line"><span class="cl">exec (@nsql)` +</span></span></code></pre></div><p>Once all databases are offline you can drop them to clear out the entire instance with this SQL query.<br> +<em>Note: This is extremely destructive so please use this with care.</em></p> +<h1 id="warning-running-this-will-destroy-all-databases"><em>WARNING</em> Running this WILL DESTROY ALL DATABASES!!!</h1> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">use master; +</span></span><span class="line"><span class="cl">declare @nsql nvarchar(max); +</span></span><span class="line"><span class="cl">select @nsql=coalesce(@nsql+CHAR(13)+CHAR(10),&#39;&#39;)+ +</span></span><span class="line"><span class="cl">&#39;DROP DATABASE [&#39;+name+&#39;];&#39; +</span></span><span class="line"><span class="cl">from master..sysdatabases where sid &lt;&gt; 0x01 +</span></span><span class="line"><span class="cl">exec (@nsql) +</span></span></code></pre></div><h2 id="use-the-following-sql-query-to-take-all-databases-online">Use the following SQL query to take all databases online</h2> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">use master; +</span></span><span class="line"><span class="cl">declare @nsql nvarchar(max); +</span></span><span class="line"><span class="cl">select @nsql=coalesce(@nsql+CHAR(13)+CHAR(10),&#39;&#39;)+ +</span></span><span class="line"><span class="cl">&#39;ALTER DATABASE [&#39;+name+&#39;] SET ONLINE WITH NO_WAIT;&#39; +</span></span><span class="line"><span class="cl">from master..sysdatabases where sid &lt;&gt; 0x01 +</span></span><span class="line"><span class="cl">exec (@nsql) +</span></span></code></pre></div> + + + + Get rid of Amazon Fire Launcher without root access + https://christitus.com/amazon-fire-launcher/ + Mon, 10 Jul 2017 21:46:28 +0000 + + https://christitus.com/amazon-fire-launcher/ + <p>This How-To shows you how to get rid of Amazon Fire Launcher without root access. Amazon Fire 5.3.3 OS can’t be downgraded or rooted, and since the Fire tablet line auto-updates, this leads many folks with the horrible experience of using the Fire OS with their gimped store/subscriptions.</p> +<p>The process to use Google Services and Googles Store instead is a bit involved but entirely doable on the Fire Tablets without having to root it. From then on, you don’t have to navigate the out of date and limited Amazon App Store.</p> +<h3 id="here-is-the-process">Here is the process:</h3> +<ul> +<li>Enable ADP USB Debugging (Settings -&gt; Device -&gt; Tap Serial 10 Times -&gt; Select Developer options -&gt; Turn ADP Debugging ON)</li> +</ul> +<p><img src="https://christitus.com/images/2017/07/ADP-Enable.png" alt="ADP Enable"></p> +<ul> +<li>Enable Downloads from Unknown Sources (Settings -&gt; Security -&gt; Allow Unknown Sources ON)</li> +</ul> +<p><img src="https://christitus.com/images/2017/07/Unknown-Sources.png" alt="Unknown Sources"></p> +<ul> +<li>Install Google Play Services +<ul> +<li>Plug Device into USB on Computer and run the Supertool as Administrator +<ul> +<li>On Tablet Select Always Allow this computer and press OK</li> +<li>Download this zip file <a href="http://rootjunkysdl.com/files/?dir=Amazon%20Fire%205th%20gen/SuperTool">http://rootjunkysdl.com/files/?dir=Amazon%20Fire%205th%20gen/SuperTool</a></li> +<li>Run 1-Amazon-Fire-5th-gen.bat</li> +<li>Select Install Google Play Services/Framework</li> +<li>Wait for it to Finish and Close the program</li> +</ul> +</li> +</ul> +</li> +<li>Launch Google Play using Search on Home Screen</li> +</ul> +<p><img src="https://christitus.com/images/2017/07/Search-Play.png" alt="Search Play"></p> +<ul> +<li>Sign-in to Google</li> +<li>Update Google Play Services (Note: you can type Google Play Services in or launch update from the notifications tray — This will take 5-10 minutes to update)</li> +<li>Install Nova Launcher from Play next</li> +<li>Download the following APK to change the Amazon Fire’s Default Launcher. Afterward, on the tablet open Google Chrome or Amazon Silk Browser enter this address: <a href="http://bit.ly/amalaunch">http://bit.ly/amalaunch</a></li> +</ul> +<p><em>Note: This is the shortlink for https://github.com/BaronKiko/LauncherHijackV2/releases/download/2.1/LauncherHijackV2.1.apk Github project. It is open source and I encourage you to look over the project on your PC so you aren’t blindly installing things on your tablet.</em></p> +<ul> +<li>Install the HijackLauncherV2.apk and Open it</li> +<li>Select Nova Launcher in the App and hit Ok at the prompt</li> +<li>Go back to settings -&gt; Accessibility -&gt;To detect home button press -&gt; Switch to On</li> +</ul> +<p><img src="https://christitus.com/images/2017/07/HijackLauncher.png" alt="Hijack Launcher"></p> +<p><strong>Finished, Enjoy being able to use Google Services on your Amazon Fire!</strong></p> + + + + Report Nvidia-smi Temperature to Nagios + https://christitus.com/nvidia-smi-nagios/ + Sat, 24 Jun 2017 04:14:45 +0000 + + https://christitus.com/nvidia-smi-nagios/ + <p>Here is a custom script that reports the nvidia-smi temperature of the Nvidia cards in your system using NRPE. Conversely,  NRPE performs much better than NCPA and my protocol of choice.</p> +<p><em>*Note: Install NRPE to your</em> Linux <em>box first, and create this file (gpu_temp.sh) in your /<em>usr</em>/lib/<em>nagios</em>/plugins directory for Nagios Core 4+</em></p> +<h2 id="nagios-nrpe-query-command">Nagios NRPE Query Command</h2> +<p><code>check_nrpe!gpu_temp.sh</code></p> +<p>This will only query the first GPU that is found via nvidia-smi CLI command. It will do warnings and alerts at the given thresholds.</p> +<p><img src="https://christitus.com/images/2017/06/script.png" alt="nvidia smi nagios"></p> +<h3 id="the-gpu_tempsh-script">The gpu_temp.sh Script</h3> +<p>Use this script to query nvidia-smi, thus reporting the temp of the card.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">############################################ +</span></span><span class="line"><span class="cl">## Sample nvidia commands to query gpu +</span></span><span class="line"><span class="cl">## +</span></span><span class="line"><span class="cl">##nvidia-smi -q -d TEMPERATURE | grep &#34;GPU Current Temp&#34; | awk &#39;{print $5}&#39; +</span></span><span class="line"><span class="cl">##nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader +</span></span><span class="line"><span class="cl">##nvidia-smi | grep &#39;[0-9][0-9]C&#39; | awk &#39;{print $3}&#39; | sed &#39;s/C//&#39; +</span></span><span class="line"><span class="cl">############################################` +</span></span></code></pre></div><p>Here is the script code:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="cp">#!/bin/bash +</span></span></span><span class="line"><span class="cl"><span class="cp"></span><span class="nv">gpu_temp</span><span class="o">=</span><span class="sb">`</span>nvidia-smi <span class="p">|</span> grep <span class="s1">&#39;[0-9][0-9]C&#39;</span> <span class="p">|</span> awk <span class="s1">&#39;{print $3}&#39;</span><span class="sb">`</span> +</span></span><span class="line"><span class="cl"><span class="k">case</span> <span class="nv">$gpu_temp</span> in +</span></span><span class="line"><span class="cl"><span class="o">[</span>1-70<span class="o">]</span>*<span class="o">)</span> +</span></span><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s2">&#34;OK - </span><span class="nv">$gpu_temp</span><span class="s2"> in normal operating range.&#34;</span> +</span></span><span class="line"><span class="cl"><span class="nb">exit</span> <span class="m">0</span> +</span></span><span class="line"><span class="cl"><span class="p">;;</span> +</span></span><span class="line"><span class="cl"><span class="o">[</span>71-80<span class="o">]</span>*<span class="o">)</span> +</span></span><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s2">&#34;WARNING - </span><span class="nv">$gpu_temp</span><span class="s2"> in high operating range.&#34;</span> +</span></span><span class="line"><span class="cl"><span class="nb">exit</span> <span class="m">1</span> +</span></span><span class="line"><span class="cl"><span class="p">;;</span> +</span></span><span class="line"><span class="cl"><span class="o">[</span>81-100<span class="o">]</span>*<span class="o">)</span> +</span></span><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s2">&#34;CRITICAL - </span><span class="nv">$gpu_temp</span><span class="s2"> in extreme operating range. Shutdown ASAP!&#34;</span> +</span></span><span class="line"><span class="cl"><span class="nb">exit</span> <span class="m">2</span> +</span></span><span class="line"><span class="cl"><span class="p">;;</span> +</span></span><span class="line"><span class="cl">*<span class="o">)</span> +</span></span><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s2">&#34;UNKNOWN - </span><span class="nv">$gpu_temp</span><span class="s2"> is current temperature.&#34;</span> +</span></span><span class="line"><span class="cl"><span class="nb">exit</span> <span class="m">3</span> +</span></span><span class="line"><span class="cl"><span class="p">;;</span> +</span></span><span class="line"><span class="cl"><span class="k">esac</span><span class="sb">`</span> +</span></span></code></pre></div><p>You will need to modify this as the nvidia-smi tool will be updated in the future and the grep command will have to be reconfigured if due to any output changes.</p> + + + + Troubleshooting Nagios 4 Core Installation + https://christitus.com/troubleshooting-nagios/ + Wed, 21 Jun 2017 17:13:44 +0000 + + https://christitus.com/troubleshooting-nagios/ + <p>Use the following command to verify you have all your config and command files correct when troubleshooting Nagios core installation. This will give you a readout of any configuration errors, thus giving you the ability to fix it on the fly.</p> +<p><code>/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg</code></p> +<p>I’d recommend making an alias in your .bashrc so you can just type:<code>testnag</code></p> +<p>Here is an example of the alias I use</p> +<p><code>alias testnag='/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg'</code></p> +<p>By using these tips it will cut down on your install and configuration times considerably. You can also make changes and test them before restarting the service, therefore avoiding any potential downtime in your monitoring.</p> + + + + Spooler subsystem app high CPU usage on Windows 10 + https://christitus.com/spooler-subsystem-app-cpu-usage/ + Tue, 02 May 2017 19:53:16 +0000 + + https://christitus.com/spooler-subsystem-app-cpu-usage/ + <p>Perform the following steps to solve the Spooler subsystem app high CPU usage. I recently updated a computer to Windows 10 and found that the spooler service was using a lot of resources.</p> +<h2 id="the-solution">The Solution</h2> +<ul> +<li>Open up command prompt as administrator and type the following</li> +</ul> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">net stop spooler +</span></span><span class="line"><span class="cl">del /Q /F /S &#34;%systemroot%\System32\Spool\Printers\*.*&#34; +</span></span><span class="line"><span class="cl">net start spooler +</span></span></code></pre></div><h2 id="conclusion">Conclusion</h2> +<p>Now check task manager again and verify the Spooler subsystem app is now at 0% usage. Alternatively, you can disable the spooler service in services (Start -&gt; Run -&gt; Type: services.msc) and this will make sure it doesn’t run, however, it also means you can’t print.</p> + + + + Launching a startup program to run as administrator + https://christitus.com/run-as-administrator/ + Mon, 27 Mar 2017 02:26:36 +0000 + + https://christitus.com/run-as-administrator/ + <p>The following script shows you how to launch a startup program to run as administrator in Windows 10. This fixes many programs that require elevation and you don’t want to launch manually every time.</p> +<p>Almost every online tutorial I came across said to run it as a scheduled task. This is very cumbersome and I hate it, however using the following method is easier and saves you time.</p> +<p>Create a Text file in shell:startup and put the following in it.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Set WshShell = CreateObject(&#34;WScript.Shell&#34; ) +</span></span><span class="line"><span class="cl">WshShell.Run chr(34) &amp; &#34;C:\Program Files (x86)\File\Program.exe&#34; &amp; Chr(34), 0 +</span></span><span class="line"><span class="cl">Set WshShell = Nothing +</span></span></code></pre></div><p>Now save the file as ProgramName.vbs</p> +<p>You are done! Reboot and see that program launch.</p> + + + + How to choose DNS Server by benchmarking them + https://christitus.com/benchmark-dns-server/ + Thu, 09 Mar 2017 17:35:18 +0000 + + https://christitus.com/benchmark-dns-server/ + <p>By default, your DNS Server is set to your ISP’s DNS and this SLOWS down your internet, due to the fact, they are poorly managed and have horrid performance. This shows you how to choose the fastest DNS Server, but results will vary depending on the location. Running this benchmark will tell you which ones are the best to use.</p> +<h2 id="finding-the-fastest"><strong>Finding the Fastest</strong></h2> +<p>Go to <a href="https://www.grc.com/dns/benchmark.htm">https://www.grc.com/dns/benchmark.htm</a> and download the benchmark tool. From the list make sure you put in all your DNS Servers you want to test. Level3, Google, OpenDNS, and the usual suspects are already in there. I also recommend right-clicking and removing the dead or stale DNS Server. I tossed in free DNS Filtering servers like Norton ConnectSafe and Comodo Secure DNS as well. These performed the worst in speed tests and I recommend not using them in a business environment. If you need DNS filtering and have the budget using OpenDNS (Cisco Umbrella) is going to be your best bet.</p> +<p>Here are my results, Enjoy!</p> +<p><img src="https://christitus.com/images/2017/03/dnsresults.png" alt="DNS Results"></p> +<ul> +<li>Red = Cached Time, Green = Uncached Time, and Blue = dotcom Time</li> +<li>Grey Dots = Filters bad domain names by default, Green Dots = No filtering</li> +</ul> + + + + Cloud migration hosting in Google, Amazon, or Microsoft + https://christitus.com/cloud-migration/ + Mon, 27 Feb 2017 21:03:20 +0000 + + https://christitus.com/cloud-migration/ + <h3 id="moving-to-the-cloud">Moving to the Cloud</h3> +<p>The following article outlines what it takes for a cloud migration to Google Cloud Compute, Amazon Web Services, or Microsoft Azure means. Most businesses want to move to the “cloud” but have no idea what that means.</p> +<p>If you’re a small business you typically have a couple computers scattered around with one storage device. If you’re a medium or large business you probably already have several servers at a location in a contract. Moving to the cloud is often pitched to businesses using Software-as-a-Service replacing the current system with a web application that runs through your browser. While this is ideal, in most instances it isn’t practical. So you keep paying for a bloated IT infrastructure that is dated, isn’t as reliable, and unable to change with your business needs.</p> +<p><img src="https://christitus.com/images/2017/02/pc-solution.png" alt="PC Solution"></p> +<h3 id="performing-a-cloud-migration">Performing a Cloud Migration</h3> +<p>Leverage Google Cloud Compute, Amazon Web Services, or Microsoft Azure to perform a cloud migration. Moving your servers will often end up costing between $100 – $400 per server a month depending on your environment. When you factor in that there is no capital expenditure, maintenance, or power costs this is a far cheaper solution than your current environment. You also gain a <strong>SUBSTANTIAL</strong> increase in flexibility, performance, and reliability. So why hasn’t everyone transitioned to these services?</p> +<p><img src="https://christitus.com/images/2017/02/tangled.png" alt="tangled"></p> +<h3 id="migration-pains">Migration Pains</h3> +<p>The main issue is getting a cloud migration completed. It’s hard to find businesses, technicians, or engineers that will do the migration. In the end, you should be paying these companies directly.</p> +<p><em>Pitfalls</em></p> +<ol> +<li>Contracting a company that uses their own hardware and you pay them for substandard service and equipment on a monthly basis.</li> +<li>Under-estimating the extended downtime that is required for moving to these services. If you have 30+ servers it will take months for preparation, transfer time, and deployment.</li> +<li>Degraded service if you have to work in a hybrid environment. Working through a VPN for an extended time that it takes to complete the full migration.</li> +<li>Mass Storage – Most of the cost of using these services come from storage, and typically it’s not till you hit the petabytes that you’d run into ROI issues. As a general rule of thumb, anything less than 1000 Terabytes is more cost-effective using these services.</li> +</ol> +<h3 id="conclusion">Conclusion</h3> +<p>I think every business should be leveraging this technology. The larger the business the harder the cloud migration will be. Small businesses I’ve done in the course of a day, whereas larger businesses take considerably longer. Stay the course and keep searching for talent capable of helping with this transition. I enjoy using all three of these major players in the market, however, for Website Hosting and Linux boxes I like Google Cloud Compute the most, and for businesses already running Office 365 Microsoft Azure makes for the easiest transition.</p> + + + + Create Swap file on Cloud VM (AWS, GCloud, or Azure) + https://christitus.com/create-swap-file/ + Tue, 14 Feb 2017 21:16:13 +0000 + + https://christitus.com/create-swap-file/ + <p>Use the commands below to create swap file on a micro instance with a Linux operating system. This creates a 2GB Swap file to help alleviate low system ram. Consequently, this is great for those using micro instances in the cloud that have under 1 GB of memory.</p> +<h3 id="commands">Commands</h3> +<p>Run the following from your SSH window</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sudo fallocate -l 2G /swapfile +</span></span><span class="line"><span class="cl">sudo chmod 600 /swapfile +</span></span><span class="line"><span class="cl">sudo mkswap /swapfile +</span></span><span class="line"><span class="cl">sudo swapon /swapfile +</span></span><span class="line"><span class="cl">sudo swapon -s` +</span></span></code></pre></div><p>then change fstab (<strong>/etc/fstab</strong>) so it automatically mounts your swap file on startup</p> +<p><code>/swapfile none swap sw 0 0</code></p> +<p>Afterward, check if your swap file is operating properly with<code>top</code> or <code>htop</code>.</p> + + + + Updating LDAP Credentials for Netscaler VPX 1000 + https://christitus.com/update-netscaler-vpx/ + Sat, 12 Nov 2016 15:13:18 +0000 + + https://christitus.com/update-netscaler-vpx/ + <p>This article shows you how to update LDAP credentials on the Netscaler VPX 1000. It goes over logging in, editing virtual server, and applying settings.</p> +<h3 id="login-to-the-netscaler-device">Login to the NetScaler Device</h3> +<p>Default User: nsroot Pass: nsroot (or password you changed it to)</p> +<h3 id="go-to-netscaler-gateway-virtual-server-controlling-your-logins">Go to Netscaler gateway virtual server controlling your logins</h3> +<p><img src="https://christitus.com/images/2016/11/netscaler1.png" alt="Netscaler1"></p> +<h3 id="click-on-ldap-policy-and-select-edit-server">Click on LDAP Policy and select Edit Server</h3> +<p><img src="https://christitus.com/images/2016/11/netscaler2.png" alt="Netscaler2"></p> +<h3 id="update-the-credentials-under-connection-settings-and-also-test-the-new-settings">Update the credentials under connection settings, and also test the new settings.</h3> + + + + Exclude shared mailboxes from Dynamic Distribution Group + https://christitus.com/exclude-shared-mailboxes-exchange/ + Mon, 31 Oct 2016 20:29:26 +0000 + + https://christitus.com/exclude-shared-mailboxes-exchange/ + <p>This shows you how to exclude shared mailboxes from a Dynamic Distribution Group in Exchange Online. We will be using Powershell to make sure your shared mailboxes don’t get spam in them.</p> +<p><img src="https://christitus.com/images/2016/10/exclude-shared-mailboxes.png" alt="Exclude Shared Mailboxes"></p> +<h3 id="commands">Commands</h3> +<h4 id="connect-to-o365-in-ps">Connect to O365 in PS:</h4> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">$UserCredential = Get-Credential +</span></span><span class="line"><span class="cl">$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection +</span></span><span class="line"><span class="cl">Import-PSSession $Session +</span></span></code></pre></div><h4 id="exclude-shared-mailboxes-with-this-filter-command">Exclude Shared Mailboxes with this filter command:</h4> +<p><code>set-DynamicDistributionGroup -Name &quot;all@yourcompany.com&quot; -RecipientFilter {((RecipientType -eq 'UserMailbox') -and -not (RecipientTypeDetailsValue -eq 'SharedMailbox'))}</code></p> +<h3 id="conclusion">Conclusion</h3> +<p>Afterward, Verify in Exchange Admin Console. You always want to prevent your shared mailboxes from getting spammed in a distribution group. Consequently, I’d highly recommend setting a requirement to send to-these dynamic mailboxes. This will prevent every employee from sending emails to everyone, which will be a bad thing.</p> + + + + Force active directory sync to Office 365 with Azure ADSync + https://christitus.com/force-active-directory-sync/ + Fri, 07 Oct 2016 14:01:26 +0000 + + https://christitus.com/force-active-directory-sync/ + <p>Use the following from an Elevated Powershell Prompt to force active directory sync to your O365 admin portal. You will be performing this on the server where Azure AD Sync is installed, however, when running this command you will need to wait 5 minutes before checking your portal to verify it is working. In larger environments, this can take a longer time.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Import-Module “C:\Program Files\Microsoft Azure AD Sync\Bin\ADSync\ADSync.psd1” +</span></span><span class="line"><span class="cl">Start-ADSyncSyncCycle -PolicyType Delta +</span></span></code></pre></div><p>This is great for forcing a sync of time-sensitive distribution list updates or user updates. If you find yourself doing this frequently make a PowerShell script for ease of access.</p> + + + + Windows 10 IIS: C:\WINDOWS\system32\inetsrv\rewrite.dll failed to load + https://christitus.com/windows-10-iis-rewrite-error/ + Mon, 19 Sep 2016 00:07:43 +0000 + + https://christitus.com/windows-10-iis-rewrite-error/ + <p>This article shows you what to do if you get the rewrite.dll failed to load in Windows 10 event viewer for Windows 10 IIS.</p> +<h3 id="commands">Commands</h3> +<p>Checked Event viewer when my website Showed up with</p> +<p><code>Service Unavailable 503 error</code></p> +<p>The Event Viewer Error was</p> +<p><code>The Module DLL C:\WINDOWS\system32\inetsrv\rewrite.dll failed to load</code></p> +<p>I went into Add/Remove Programs (Start -&gt; Run-&gt; appwiz.cpl) and simply repaired the following program</p> +<p><code>IIS Url Rewrite Module 2.0</code></p> +<h3 id="troubleshootingdownload">Troubleshooting/Download</h3> +<p>Afterward, restart your WWW Service in services.msc and your website will now be working. If you are unable to repair the IIS rewrite module using Add/Remove Programs, you will need to redownload them from Microsoft.</p> +<p><a href="https://www.microsoft.com/en-us/download/details.aspx?id=47337">IIS Url Rewrite Module 2.0 for Windows 10</a></p> + + + + Cleanup Server WinSxS Free Space on Server 2008 and Server 2012 + https://christitus.com/winsxs-free-space-server/ + Wed, 03 Aug 2016 23:19:49 +0000 + + https://christitus.com/winsxs-free-space-server/ + <p>Run the following commands if you are running low on C: drive space. Generally, this is caused by windows updates and you need to clear WinSxS free space. Do this in your PowerShell prompt and you will free up a substantial amount of space.</p> +<p><em>Please Note: You have to run updates on Windows Server 2008 if you are far behind and these commands don’t exist!</em></p> +<p>MASTER CLEANUP: (Run this First)</p> +<p><code>Dism.exe /online /Cleanup-Image /SPSuperseded</code></p> +<p>FOLLOWUP:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Windows 2008 Use: Dism.exe /online /Cleanup-Image /StartComponentCleanup +</span></span><span class="line"><span class="cl">Windows 2012 Use: Dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase +</span></span></code></pre></div> + + + + Reattach LVM after a reinstalling XenServer + https://christitus.com/reattach-lvm-xenserver/ + Wed, 03 Aug 2016 16:18:32 +0000 + + https://christitus.com/reattach-lvm-xenserver/ + <p>This article describes how to reattach LVM or a local Storage repository on XenServer. The XenServer database has become corrupt or your XenServer does not see the local SR.</p> +<h3 id="instructions">Instructions</h3> +<ul> +<li> +<p>Do a pvscan to get the Universally Unique Identifier (UUID) of an existing SR on a local disk. In this example uses UUID 39baf126-a535-549f-58d6-feeda55f7801:</p> +<p><code>pvscan</code></p> +</li> +</ul> +<h5 id="output">Output:</h5> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">PV /dev/sda3 VG VG_XenStorage-39baf126-a535-549f-58d6-feeda55f7801 lvm2 [66.87 GB / 57.87 GB free] +</span></span><span class="line"><span class="cl">Total: 1 [66.87 GB] / in use: 1 [66.87 GB] / in no VG: 0 [0 ] +</span></span></code></pre></div><p><em>Note the output above, the VG name of the local drive /dev/sda3 is VG_XenStorage-39baf126-a535-549f-58d6-feeda55f7801 . The VG name contains the SR UUID that resides on this storage media. In this case, the UUID is 39baf126-a535-549f-58d6-feeda55f7801.</em></p> +<ul> +<li> +<p>Introduce the SR with the following command:</p> +<p><code>xe sr-introduce uuid=39baf126-a535-549f-58d6-feeda55f7801 type=lvm name-label=”Local storage” content-type=user</code></p> +<p><em>This command sets up database records for the SR named “Local storage”</em></p> +</li> +<li> +<p>Locate the SCSI ID of the device or partition where the SR data is stored:</p> +<p><code>ls -l /dev/disk/by-id/</code></p> +</li> +</ul> +<h5 id="output-1">Output:</h5> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">total 0 +</span></span><span class="line"><span class="cl">lrwxrwxrwx 1 root root 9 Jan 15 09:44 scsi-SATA_ST3500320AS_9QM13WP2 -&gt; ../../sdb +</span></span><span class="line"><span class="cl">lrwxrwxrwx 1 root root 10 Jan 15 09:44 scsi-SATA_ST3500320AS_9QM13WP2-part1 -&gt; ../../sdb1 +</span></span><span class="line"><span class="cl">lrwxrwxrwx 1 root root 9 Jan 15 09:44 scsi-SATA_ST380815AS_6QZ5Z1AM -&gt; ../../sda +</span></span><span class="line"><span class="cl">lrwxrwxrwx 1 root root 10 Jan 15 09:44 scsi-SATA_ST380815AS_6QZ5Z1AM-part1 -&gt; ../../sda1 +</span></span><span class="line"><span class="cl">lrwxrwxrwx 1 root root 10 Jan 15 09:44 scsi-SATA_ST380815AS_6QZ5Z1AM-part2 -&gt; ../../sda2 +</span></span><span class="line"><span class="cl">lrwxrwxrwx 1 root root 10 Jan 15 09:44 scsi-SATA_ST380815AS_6QZ5Z1AM-part3 -&gt; ../../sda3 +</span></span></code></pre></div><p>_In this case, the SCSI ID of the device /dev/sda3 is scsi-SATA_ST380815AS_6QZ5Z1AM-part3.</p> +<p>Notate the device name to use in the next command, where a PBD (physical block device – a connector between the XenServer host and the SR) is created._</p> +<ul> +<li> +<p>Run the xe host-list command to find out the host UUID for the local host:</p> +<p><code>xe host-list</code></p> +</li> +</ul> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">uuid ( RO) : 83f2c775-57fc-457b-9f98-2b9b0a7dbcb5 +</span></span><span class="line"><span class="cl">name-label ( RW): xenserver1 +</span></span><span class="line"><span class="cl">name-description ( RO): Default install of XenServer +</span></span></code></pre></div><ul> +<li>Create the PBD using the device SCSI ID, host UUID and SR UUID detected above:</li> +</ul> +<p><code>xe pbd-create sr-uuid=39baf126-a535-549f-58d6-feeda55f7801</code> +<code>device-config:device=/dev/disk/by-id/scsi-SATA_ST380815AS_6QZ5Z1AM-part3 host-uuid=83f2c775-57fc-457b-9f98-2b9b0a7dbcb5</code></p> +<p><em>Afterward, it displays: aec2c6fc-e1fb-0a27-2437-9862cffe213e</em></p> +<ul> +<li> +<p>Attach the PBD created with xe pbd-plug command:</p> +<p><code>xe pbd-plug uuid=aec2c6fc-e1fb-0a27-2437-9862cffe213e</code></p> +</li> +</ul> +<p>In the end, you now have reattach LVM to the XenServer host and be visible in XenCenter.</p> +<p>Source: Original Article from Citrix <a href="http://support.citrix.com/article/CTX121896">http://support.citrix.com/article/CTX121896</a></p> + + + + XenServer tapdisk experienced an error + https://christitus.com/xenserver-tapdisk-error/ + Wed, 03 Aug 2016 16:12:57 +0000 + + https://christitus.com/xenserver-tapdisk-error/ + <p>When re-attaching a SR on a fresh VM, I ran into this XenServer tapdisk error. I ran the following from XenServer console to eject all CD drives on that host. I was then able to start the VM with the old image.</p> +<p><code>xe vm-cd-eject --multiple</code></p> +<p>If your XenCenter hangs or becomes unresponsive, you can also reset the toolstack from console from a PuTTy session or if XenCenter console is working running the following command:</p> +<p><code>xe-toolstack-restart</code></p> +<p>It’s important to note what caused the XenServer tapdisk error. I experienced this on an old version of XenServer 6 when switching out the ISOs from the VMs.</p> + + + + “Target account name is incorrect” Domain Controller Error + https://christitus.com/target-account-name-domain-controller-error/ + Thu, 21 Jul 2016 13:31:35 +0000 + + https://christitus.com/target-account-name-domain-controller-error/ + <p>This article explains how to fix the “Target account name is incorrect” error you are getting on your domain controllers. This usually stems from a system administrator doing a snapshot revert on the Domain Controller which messes up the KDC service and domain replication. It also can happen if you had a DC offline for a long time 30+ days.</p> +<h3 id="commands">Commands</h3> +<ul> +<li>Stop and disable the Key Distribution Center (KDC) service on the troubled domain controller</li> +</ul> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">net stop kdc +</span></span><span class="line"><span class="cl">sc config &#34;kdc&#34; start= disabled +</span></span></code></pre></div><p><em>Please Note: space is REQUIRED after start=</em><br> +<em>Alternatively, you can do this from the Services Panel</em></p> +<ul> +<li> +<p>Purge the ticket cache on the local domain controller. +<code>klist purge</code><br> +_Note: you can use <code>klist tickets</code> to view tickets before purging them</p> +<ul> +<li> +<p>Afterward, Reboot Troubled Domain Controller</p> +</li> +<li> +<p>Reset the troubled domain controller’s account password to the primary domain controller (PDC) emulator master using netdom /resetpwd. Find PDC using: netdom query fsmo</p> +<ul> +<li><code>netdom /RESETPWD /s:pdcserver.domain.local /ud:domain\Administrator /pd:*</code></li> +</ul> +</li> +<li> +<p>Synchronize the domain directory partition of the replication partner with the PDC emulator master</p> +<ul> +<li><code>repadmin /kcc</code></li> +</ul> +</li> +<li> +<p>Once more, Reboot the Troubled DC and start and enable the KDC on the local domain controller:</p> +</li> +</ul> +</li> +</ul> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sc config &#34;kdc&#34; start= auto +</span></span><span class="line"><span class="cl">net start KDC +</span></span></code></pre></div><p>Typically I wait about 5-10 minutes after this and start doing checks to see if it is now replicating properly. You can also force a replicate using repadmin /replicate but usually not necessary. In the end, make sure you check to make you aren’t getting the “Target account name is incorrect” error anymore.</p> + + + + Citrix XenCenter error “Could not create SSL/TLS Secure Channel” + https://christitus.com/citrix-xencenter-error-ssl-secure-channel/ + Wed, 13 Jul 2016 14:24:04 +0000 + + https://christitus.com/citrix-xencenter-error-ssl-secure-channel/ + <p>Running the following commands will fix the XenCenter Error. You are typically encountering this error because Windows 10 requires stronger encryption, consequently, this is prevalent on older XenServer installations. I encountered this on XenServer 6.0.</p> +<h3 id="commands">Commands</h3> +<ul> +<li>Putty in using SSH</li> +</ul> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">service xapissl stop +</span></span><span class="line"><span class="cl">mv /etc/xensource/xapi-ssl.pem /etc/xensource/xapi-ssl.pem.bak +</span></span><span class="line"><span class="cl">/opt/xensource/libexec/generate_ssl_cert &#34;/etc/xensource/xapi-ssl.pem&#34; &#39;10.100.0.40&#39; +</span></span><span class="line"><span class="cl">service xapissl start +</span></span><span class="line"><span class="cl">xe-toolstack-restart +</span></span></code></pre></div><p>Where you see 10.100.0.40 this is the IP of your XenServer that you are connecting to (not VM ips). Once you run this it reissues the cert and you will be able to properly connect. I’ve seen this on Windows 10 Systems since they force the higher level encryption, however,  If this doesn’t resolve the XenCenter error let me know.</p> + + + + Prevent autodiscover on Exchange server after an Office 365 Migration + https://christitus.com/prevent-autodiscover-exchange-server/ + Mon, 04 Jul 2016 16:44:02 +0000 + + https://christitus.com/prevent-autodiscover-exchange-server/ + <p>This article teaches you how to prevent autodiscover from happening on Exchange Server. This is important on an Office 365 migration when you still need to keep your local exchange server from resolving.</p> +<h3 id="commands">Commands</h3> +<p>First change your local DNS</p> +<p><code>autodiscover.yourdomain.com cname autodiscover.office365.com</code></p> +<p>(Option 1)Next, you need to disable SCP site-wide. I did this performing a GPO Registry edit.</p> +<p><code>HKEY_CURRENT_USER\Software\Microsoft\Office\x.0\Outlook\AutoDiscover</code><br> +Notex.0 in the above registry path corresponds to the Outlook version (16.0 = Outlook 2016, 15.0 = Outlook 2013, 14.0 = Outlook 2010, 12.0 = Outlook 2007).<br> +<code>ExcludeScpLookup DWORD 1</code></p> +<p>(Option 2)Now you can also do this with a Reg file. Name it SCPDisable.reg</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Windows Registry Editor Version 5.00 +</span></span><span class="line"><span class="cl">[HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Outlook\AutoDiscover] +</span></span><span class="line"><span class="cl">&#34;ExcludeScpLookup&#34;=dword:00000001` +</span></span></code></pre></div><p>The above is Office 2010, Notice the 14.0, and make sure you change it to the version you have.</p> +<p>Now simply create a new profile and your domain should now point to Office 365 by default.</p> + + + + Grant Full Access to all Public Folders for a user in Exchange + https://christitus.com/grant-full-access-public-folders/ + Mon, 04 Jul 2016 16:32:21 +0000 + + https://christitus.com/grant-full-access-public-folders/ + <p>This post goes over how to grant full access to all public folders for a user in Microsoft Exchange. I recently was migrating all public folders from an Exchange 2010 to Office 365 Environment and didn’t have access to some of the folders. Consequently, this solution saved me a lot of time from doing it through a GUI.</p> +<h3 id="command">Command</h3> +<p>Enter the following in Exchange Management Shell:</p> +<p><code>Get-PublicFolder –Identity &quot;\Root Folder Name&quot; -Recurse | Add-PublicFolderAdministrativePermission -User &quot;ctitus&quot; -AccessRights AllExtendedRights</code></p> +<p>This will recurse the root folder and grant all rights to the user you specify.</p> + + + + Encore Bandit II/III Connection Instructions + https://christitus.com/encore-bandit-connection/ + Thu, 17 Mar 2016 14:52:31 +0000 + + https://christitus.com/encore-bandit-connection/ + <p>These steps will show you how to connect to the encore bandit devices. I recently configured both a bandit II and a bandit III device for using a VPN over satellite. The devices are configured through a 9-pin serial port they call the “Supervisory Port”. I use a basic serial to USB adapter and putty to connect. All the white papers for this device are good, but the setup and login are not as clear as you would think, that said, below are the following steps I used to connect.</p> +<p>Here is all of encore’s documentation for their devices: <a href="http://www.encorenetworks.com/document_catalog.htm">http://www.encorenetworks.com/document_catalog.htm</a></p> +<p><strong>Steps for connection</strong></p> +<ul> +<li>Hook Serial Adapter to your PC <em>Please Note the COM port</em></li> +<li>Run Putty and select Serial for Connection</li> +<li>Type default username and password (encore!1) for both</li> +<li>Configure Device according to Quick Setup</li> +</ul> + + + + Move Website from Linux to IIS + https://christitus.com/move-website-linux-iis/ + Sat, 26 Dec 2015 05:41:50 +0000 + + https://christitus.com/move-website-linux-iis/ + <p>This guide goes over how to Move Website from Linux to IIS. If you’re in the tech field, you probably see moving from Linux to IIS on a WordPress platform and immediately cringed.</p> +<h3 id="migration">Migration</h3> +<p>The database migration from MySQL to MS SQL is actually pretty easy since you just push it through a large query, but I didn’t really want to mess with it, so I stuck with MySQL.</p> +<p><a href="https://dev.mysql.com/downloads/mysql/">Download and Install MySQL for Windows</a></p> +<p>With that down setting up IIS is also extremely simple now, which is quite surprising given how unfriendly IIS 6 was. The interface is pretty much the same, so you can do it the way you have always known, but now they have added multiple friendly tools in the form of <strong>Microsoft WebMatrix</strong> and <strong>Web Platform Installer</strong>.</p> +<p><a href="https://go.microsoft.com/fwlink/?LinkID=286266">Download Microsoft WebMatrix (official Microsoft Link)</a></p> +<p>Using the Web Platform Install you can just select whatever install you want (WordPress for me) and click install. It grabs all the dependencies and installs them for you, and from here I had a fresh WordPress install. I did a simple import and changed a couple of settings that were reset and was back up and running. Overall a simple migration, and pretty happy with IIS 10 (What happened to IIS 9 we will never know…)</p> + + + + FTP Credentials Required for WordPress Update to Plugins/Themes + https://christitus.com/ftp-credentials-required/ + Thu, 03 Dec 2015 22:47:50 +0000 + + https://christitus.com/ftp-credentials-required/ + <p>If you are getting errors on a WordPress update that say you need FTP credentials, your apache install doesn’t have rights to do the changes. You could install vsftpd, but it is MUCH easier to just grant apache access to your WordPress.</p> +<h3 id="commands-to-grant-access">Commands to grant access</h3> +<p><code>sudo chown -R apache:apache path/to/wordpress</code></p> +<h4 id="here-is-the-syntax-i-used">Here is the syntax I used</h4> +<p><code>sudo chown -R apache:apache /var/www/html/</code></p> +<p>OR</p> +<p><code>sudo chown -R www-data:www-data /var/www/html/public_html</code></p> +<p>Afterward, you should not see the error asking for FTP Credentials again. This is a very simple process and one I highly recommend due to many plugins requiring this to update.</p> + + + + Check External IP in Linux Server + https://christitus.com/check-external-ip/ + Mon, 14 Sep 2015 18:33:12 +0000 + + https://christitus.com/check-external-ip/ + <p>All these commands check external IP in Linux Terminal for any Linux system.</p> +<h3 id="commands">Commands</h3> +<h5 id="nice-format-for-external-ip">Nice format for External IP</h5> +<p><code>curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/&lt;.*$//'</code></p> +<h5 id="short-and-simple-to-remember">Short and Simple to remember</h5> +<p><code>curl ifconfig.co</code></p> +<h5 id="for-those-with-security-concerns-without-using-curl">For those with security concerns without using curl</h5> +<p><code>dig TXT +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'&quot;' '{ print $2}'</code></p> +<p>Any of these commands will achieve the same result, so pick which one you like best. Personally, for business and professional environments I stick with dig and just make an alias for it, however, for home projects a simple curl ifconfig.co is great.</p> + + + + SFC scannow error and Windows 10 corruption + https://christitus.com/sfc-scannow-error/ + Sun, 26 Jul 2015 02:39:10 +0000 + + https://christitus.com/sfc-scannow-error/ + <p>If you run into SFC scannow error which cannot be repaired chances are you have some corrupt system components. The fastest way to fix this is by following these steps to repair your system.</p> +<p>Here is an example of the error you are seeing:</p> +<p><img src="https://christitus.com/images/2015/07/SFC-scannow-error-1.png" alt="SFC Scannow Error"></p> +<ul> +<li>Download Windows 10 ISO from <a href="https://www.microsoft.com/en-us/software-download/windows10">https://www.microsoft.com/en-us/software-download/windows10</a></li> +<li>Mount the ISO file by double-clicking on it.</li> +<li>Open ‘Windows Powershell’ or ‘Command Prompt’ with Admin privileges (right click -&gt; Run as Administrator)</li> +<li>Let’s check the System Health first, by running these commands: +<ul> +<li><code>dism /online /cleanup-image /scanhealth</code></li> +<li><code>dism /online /cleanup-image /checkhealth</code></li> +<li><code>dism /online /cleanup-image /restorehealth</code></li> +</ul> +</li> +<li>I’m sure that will give you an error stating that it could not perform the task. Afterward, Let’s specify the file from the ISO so that we can fix it. Run the following command: (Notice that X must be the drive letter on which your system has mounted the ISO) +<ul> +<li><code>DISM /Online /Cleanup-Image /RestoreHealth /source:WIM:X:SourcesInstall.wim:1 /LimitAccess</code></li> +</ul> +</li> +<li>Now let’s repair any damage in the system files, shall we? +<ul> +<li><code>sfc /scannow</code></li> +</ul> +</li> +</ul> +<p>Once this is complete, you will see you now have a functional windows environment again. One other tip that I would suggest is to re-run windows updates because your windows components were damaged and the updates have not been happening.</p> + + + + iDrac Dell Server (Off-Band Remote Access) + https://christitus.com/idrac-dell-server/ + Tue, 24 Mar 2015 18:43:46 +0000 + + https://christitus.com/idrac-dell-server/ + <p>I recently had a server freeze up when I wasn’t on-site and needed to power cycle it. I had configured iDrac before but it was not responsive. Here are some useful commands that can configure, reboot, and reset the iDrac function on Dell Servers. The commands below are run from a command prompt on the server (unless otherwise stated) in the (C:\Program Files\Dell\SysMgt\idrac) path.</p> +<p><img src="https://christitus.com/images/2015/03/idrac.png" alt="iDrac"></p> +<p><strong>Remote Commands (Workstation or another server)</strong></p> +<p><code>racadm -r -u -p</code></p> +<p>Example: <code>racadm -r 10.1.1.1 -u root -p calvin getsysinfo</code></p> +<p>DEFAULT USER: root</p> +<p>DEFAULT PASS: calvin</p> +<p><strong>iDrac Information</strong></p> +<p><code>racadm getsysinfo</code></p> +<p><strong>Reset and Factory Defaults</strong></p> +<p><code>racadm racreset</code> (soft Reset)</p> +<p><code>racadm racresetcfg</code> (Hard Reset – Resets IP/Account settings back to factory default)</p> +<p>NOTE: Resets Default IP &gt; 192.168.0.120</p> +<p><strong>Network Setup</strong></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">racadm config -g cfgLanNetworking -o cfgNicEnable 1 +</span></span><span class="line"><span class="cl">racadm config -g cfgLanNetworking -o cfgNicIpAddress 192.168.0.120 +</span></span><span class="line"><span class="cl">racadm config -g cfgLanNetworking -o cfgNicNetmask 255.255.255.0 +</span></span><span class="line"><span class="cl">racadm config -g cfgLanNetworking -o cfgNicGateway 192.168.0.120 +</span></span><span class="line"><span class="cl">racadm config -g cfgLanNetworking -o cfgNicUseDHCP 0 +</span></span><span class="line"><span class="cl">racadm config -g cfgLanNetworking -o cfgDNSServersFromDHCP 0 +</span></span><span class="line"><span class="cl">racadm config -g cfgLanNetworking -o cfgDNSServer1 192.168.0.5 +</span></span><span class="line"><span class="cl">racadm config -g cfgLanNetworking -o cfgDNSServer2 192.168.0.6 +</span></span></code></pre></div><p><strong>User Setup</strong></p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">racadm config -g cfgUserAdmin -o cfgUserAdminUserName -i 2 john +</span></span><span class="line"><span class="cl">racadm config -g cfgUserAdmin -o cfgUserAdminPassword -i 2 123456 +</span></span><span class="line"><span class="cl">racadm config -g cfgUserAdmin -o cfgUserAdminEnable -i 2 1 +</span></span></code></pre></div><p>To verify the new user, use one of the following commands:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">racadm getconfig -u john +</span></span><span class="line"><span class="cl">racadm getconfig –g cfgUserAdmin –i 2 +</span></span></code></pre></div><p>From here you will use your web browser to enter the iDrac configuration GUI and finish setting up SMTP servers, alerts and other things. I only recommend the above from command line since it gives direct access when the web browser isn’t functions due to bad IP address or invalid username.</p> + + + + GFI Archiver resource usage + https://christitus.com/gfi-archiver-resource-usage/ + Fri, 06 Mar 2015 23:56:01 +0000 + + https://christitus.com/gfi-archiver-resource-usage/ + <p>Does your GFI Archiver resource usage SQL process ballon over 8GB? If so, the following procedure will reduce usage by about half and fix many performance issues.</p> +<ol> +<li> +<p>Stop all MailArchiver and SQL services</p> +</li> +<li> +<p>Create a backup of ..MailArchiverStoreDataproduct.config</p> +</li> +<li> +<p>Edit product.config and add the following key within the <code>&lt;AppSettings&gt;</code> section: <code>&lt;add key=&quot;MaxPoolSize&quot; value=&quot;20&quot; /&gt;</code></p> +</li> +<li> +<p>Re-start the services</p> +</li> +</ol> +<p>*Note GFI has built-in scripts made to stop all NON-SQL services. Run the Stop script then stop SQL Server Instance, When starting start SQL Server Service before running a start script. The scripts default location are: ..MailArchiver\Tools\Scripts</p> +<p>After performing this procedure the SQL Server Process is now under 4GB or cut in half from their previous usage. In closing, this type of tweak is vital especially if you are running out of resources on the source server or you are running into performance problems within GFI Archiver.</p> + + + + Raid Re-syncing Windows software raid + https://christitus.com/windows-software-raid/ + Sun, 28 Dec 2014 22:53:22 +0000 + + https://christitus.com/windows-software-raid/ + <p>I want to preface this article in saying that I would never use a software raid in a business environment. However, recently I tried the windows software raid on a home theater PC. We recently had a power issue and caused the RAID 1 to go into resyncing status. Since it was about 2 TB of data, the resync would take several days and be causing performance issues. I found I could not break the raid or remove the mirror.</p> +<p>The following solutions are how you’d fix the issue:</p> +<p><img src="https://christitus.com/images/2014/12/resyncing.png" alt="resyncing"></p> +<h3 id="solution-one">Solution One:</h3> +<ol> +<li>Open up Disk management (Start -&gt; Run -&gt; Type diskmgmt.msc)</li> +<li>Right click disk to remove from Raid and select Offline (Click on Disk to left not the graphic on right)</li> +<li>Reboot PC</li> +<li>Open Disk management back up, select disk, and put online.</li> +<li>Immediately after, Right click graphic and select remove Mirror.</li> +</ol> +<h3 id="solution-two">Solution Two:</h3> +<ol> +<li>Physically unplug one of the disks</li> +<li>Open Disk Management</li> +<li>Remove Mirror</li> +</ol> +<p>In closing, this will get rid of your raid and give you the ability to repurpose these disks as you see fit. In the above experience, I still had my data on both disks so I just formatted one and repurposed it for other functions.</p> + + + + Deploy excel macros to all xls files on startup + https://christitus.com/deploy-excel-macros/ + Tue, 01 Jul 2014 15:39:39 +0000 + + https://christitus.com/deploy-excel-macros/ + <p>To deploy excel macros on every excel file you open, you will need to create a personal file in your XLStart folder.</p> +<h3 id="here-is-a-step-by-step">Here is a step-by-step</h3> +<ol> +<li>Create and test your macro</li> +<li>Save as – Personal.xls (Macro-Enabled workbook)</li> +<li>Copy the personal file to your C:Program Files\Microsoft Office\Office1#\XLStart folder</li> +<li>Done!</li> +</ol> +<p>I have no clue why the articles on TechNet and Microsoft’s Knowledge-base are so long when this is all you have to do.  Other than its Microsoft 😉</p> +<p>Note: I’ve also heard of folks dropping there *.bas macro files directly into XLStart and having the same result, but I personally have not used that method.</p> + + + + Remove or Hide System Reserved Partition + https://christitus.com/hide-system-reserved-partition/ + Thu, 26 Jun 2014 17:55:42 +0000 + + https://christitus.com/hide-system-reserved-partition/ + <p>Does your system reserve partition have a drive letter? With these steps, you will Hide System Reserved Partition and no longer see it when browsing your computer.</p> +<p>Here is the fix using Diskpart:</p> +<ol> +<li>Load Command Prompt (cmd)</li> +<li>Load Diskpart (diskpart)</li> +<li>List Disks (list disk)</li> +<li>Select Proper Disk (select disk #)</li> +<li>List Partitions (list partition)</li> +<li>Select Proper Partition (select partition #)</li> +<li>List Volumes (list volume) NOTE: Look at Drive letter of system reserved volume</li> +<li>Select the volume to hide (select volume #)</li> +<li>Remove assigned disk letter (remote letter X)</li> +</ol> +<p>With this, you should no longer see it, and you will Hide System Reserved Partition for good.</p> + + + + Using the find command Linux Terminal + https://christitus.com/find-command-linux-terminal/ + Fri, 21 Feb 2014 20:56:09 +0000 + + https://christitus.com/find-command-linux-terminal/ + <p>Here is the syntax for using the find command Linux terminal. The following commands are great to have in your back pocket when looking for specific files or directories.</p> +<p>How to find a file from the root directory and check the entire system:</p> +<p><code>find / -name filename.ext</code><br> +See directory structure without files (requires <code>tree</code> use yum or apt-get to install)</p> +<p><code>tree -d /var/www/</code> <br> +<em>Note: if you don’t include the -d it will list ALL files and folders</em></p> +<p>The two commands I use almost daily as they are fantastic for finding files or just seeing how a programs directories are structured.</p> + + + + Take ownership of an entire drive in Windows + https://christitus.com/take-ownership-windows/ + Mon, 13 Jan 2014 16:37:53 +0000 + + https://christitus.com/take-ownership-windows/ + <p>The commands below will show you how to take ownership of an entire drive. Here is a simple script to accomplish just that.</p> +<p>Option 1: Create a cmd file takeowner.cmd in notepad</p> +<p>Option 2: Type the following or past this in a command line prompt one line at a time</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">takeown /f %1 /r /d y +</span></span><span class="line"><span class="cl">icacls %1 /grant administrators:F /t +</span></span></code></pre></div><p><em>Please Note: This will take a large amount of time on big drives</em></p> +<p>In closing, this will work in almost any situation, however, if you do have issues check out my PowerShell post on taking ownership of entire network drives.</p> +<p><a href="https://christitus.com/changing-file-permissions/">File Permissions in PowerShell</a></p> + + + + Outlook Security Certificate is invalid + https://christitus.com/outlook-security-certificate/ + Mon, 09 Dec 2013 21:33:37 +0000 + + https://christitus.com/outlook-security-certificate/ + <p>The following article fixes the Outlook security certificate error your users get when they connect to your exchange server internally. This is typically from installing a 3rd party SSL Certificate.</p> +<p>(Original Article Link: <a href="http://community.spiceworks.com/how_to/show/48384-outlook-the-name-of-the-security-certificate-is-invalid-or-does-not-match-the-name-of-the-site">http://community.spiceworks.com/how_to/show/48384-outlook-the-name-of-the-security-certificate-is-invalid-or-does-not-match-the-name-of-the-site</a>)</p> +<p>Issue: Outlook anywhere works fine with third party cert, but internal Outlook clients get cert error with NETBIOS name of Exchange server.</p> +<p>Example: <code>https://NetBIOS_name.contoso.com/autodiscover/autodiscover.xml</code></p> +<p>Note: I tested this on Exchange 2010 as well.</p> +<h3 id="outlook-security-certificate-resolution">Outlook Security Certificate Resolution</h3> +<p>Change the URLs for the appropriate Exchange 2007 components. To do this, follow these steps:</p> +<ol> +<li>Start the Exchange Management Shell.</li> +<li>Change the Autodiscover URL in the Service Connection Point. The Service Connection Point is stored in the Active Directory directory service. To change this URL, type the following command, and then press Enter:</li> +</ol> +<pre><code>`Set-ClientAccessServer -Identity CAS_Server_Name -AutodiscoverServiceInternalUri https://mail.contoso.com/autodiscover/autodiscover.xml` +</code></pre> +<ol start="3"> +<li>Change the InternalUrl attribute of the EWS. To do this, type the following command, and then press Enter:</li> +</ol> +<pre><code>`Set-WebServicesVirtualDirectory -Identity &quot;CAS_Server_NameEWS (Default Web Site)&quot; -InternalUrl https://mail.contoso.com/ews/exchange.asmx` +</code></pre> +<ol start="4"> +<li>Change the InternalUrl attribute for Web-based Offline Address Book distribution. To do this, type the following command, and then press Enter:</li> +</ol> +<pre><code>`Set-OABVirtualDirectory -Identity &quot;CAS_Server_nameoab (Default Web Site)&quot; -InternalUrl https://mail.contoso.com/oab` +</code></pre> +<ol start="5"> +<li>Change the InternalUrl attribute of the UM Web service. To do this, type the following command, and then press Enter:</li> +</ol> +<pre><code>`Set-UMVirtualDirectory -Identity &quot;CAS_Server_Nameunifiedmessaging (Default Web Site)&quot; -InternalUrl https://mail.contoso.com/unifiedmessaging/service.asmx` + + _Note: The command in step 5 is required only in an Exchange 2007 environment._ This command no longer exists in an Exchange 2010 environment. Instead, the WebServices URL is used for this purpose. +</code></pre> +<ol start="6"> +<li>Open IIS Manager.</li> +<li>Expand the local computer, and then expand Application Pools.</li> +<li>Right-click MSExchangeAutodiscoverAppPool, and then click Recycle.</li> +</ol> +<p>Now that you have finished, you will not see anymore certificate popups. I highly recommend issuing a proper certificate if possible, but this typically happens when your active directory is not resolvable from the outside world. Such as <code>contsco.local</code> instead of <code>microsoft.com</code>.</p> + + + + Removing or Adding 9 to Dial out on VeriFone VX510 + https://christitus.com/verifone-vx510-add-9/ + Wed, 07 Aug 2013 17:29:19 +0000 + + https://christitus.com/verifone-vx510-add-9/ + <p>Using the following steps to add or remove a 9 when using the VeriFone VX510 to process credit cards.</p> +<p><img src="https://christitus.com/images/2013/08/33937_Vx510hero-e1375896480531.jpg" alt="VX510"></p> +<h3 id="step-by-step-instructions">Step-by-Step Instructions</h3> +<ol> +<li>First go into Quick Setup (6 on pad)</li> +<li>Password is 1 Alpha Alpha 66831</li> +<li>Select Phone</li> +<li>Edit to add or remove 9 and then exit</li> +<li>Done!</li> +</ol> +<p>Now run a couple tests to verify that is properly dialing out on your VeriFone VX510. Once done you don’t have to worry about it failing when dialing out any longer. Should you continue to have problems, it is likely that your unit is defective and will need to be replaced.</p> + + + + Installing .NET Framework 3.5 / 3.0 / 2.0 Error 0x800F0906 + https://christitus.com/error-0x800f0906/ + Mon, 01 Jul 2013 19:23:04 +0000 + + https://christitus.com/error-0x800f0906/ + <p>Recently I had error 0x800F0906 when doing a dot net framework update. <a href="http://support.microsoft.com/kb/2734782">http://support.microsoft.com/kb/2734782</a> Note: You could take this resolution further and push it out via network script if needed. Make sure to copy the Windows 8 DVD to a local network drive before attempting.</p> +<p>To resolve this problem, use one of the following methods, as appropriate for the error code that you are receiving.</p> +<h3 id="error-code-0x800f0906">Error code: 0x800F0906</h3> +<p>This error code occurs because the computer cannot download the required files from Windows Update.</p> +<p>This behavior can be caused by a system administrator who configures the computer to use Windows Server Update Services (WSUS) instead of the Microsoft Windows Update server for servicing. In this case, contact your system administrator and request that they enable the <em>Specify settings for optional component installation and component repair</em> Group Policy setting and configure the <em>Alternate source file path</em> value or select the <em>Contact Windows Update directly to download repair content instead of Windows Server Update Services (WSUS)</em> option.</p> +<h3 id="configure-group-policy-8211-option-1">Configure Group Policy – Option 1</h3> +<ul> +<li>Start the Local Group Policy Editor or Group Policy Management Console.</li> +<li>Expand <em>Computer Configuration</em>, expand <em>Administrative Templates</em>, and then select <em>System</em>.</li> +<li>Open the <em>Specify settings for optional component installation and component repair</em> Group Policy setting, and then select <em>Enabled</em>.</li> +</ul> +<p>If you want to specify an alternative source file, in the <em>Alternate source file path</em> box, specify a fully qualified path of a shared folder that contains the contents of the sources\sxs folder from the installation media. Or, specify a WIM file. To specify a WIM file as an alternative source file location, add the prefix <em>WIM:</em> to the path, and then add the index of the image that you want to use in the WIM file as a suffix. The following are examples of values that you can specify:</p> +<ul> +<li>Path of a shared folder: <em><code>\server_name\share\Win8sxs</code></em></li> +<li>Path of a WIM file, in which 3 represents the index of the image in which the feature files are found: <em><code>WIM: \server_name\share\install.wim:3</code></em></li> +</ul> +<p>If it is applicable to do this, select the* Contact Windows Update directly to download repair content instead of Windows Server Update Services (WSUS)* check box.<br> +Tap or click* O*K.<br> +At an elevated command prompt, type the following command and then press Enter to apply the policy immediately:<br> +<code>gpupdate /force</code></p> +<h3 id="use-dism-via-powershell-8211-option-2">Use DISM via PowerShell – Option 2</h3> +<p>Insert the Windows 8 or Windows Server 2012 installation media.</p> +<ol> +<li>At an elevated command prompt, run the following command: +<code>Dism /online /enable-feature /featurename:NetFx3 /All /Source:Drive:sourcessxs /LimitAccess</code> +<strong>Note</strong> In this command, Drive is a placeholder for the drive letter for the DVD drive or for the Windows 8 installation media. For example, you run the following command:<br> +<code>Dism /online /enable-feature /featurename:NetFx3 /All /Source:D:sourcessxs /LimitAccess</code></li> +</ol> + + + + Cannot Rename Folders on mapped drive + https://christitus.com/rename-folders-mapped-drive/ + Mon, 15 Apr 2013 21:46:08 +0000 + + https://christitus.com/rename-folders-mapped-drive/ + <p>This error message is displayed and I cannot rename folders on the mapped drive. By making a group policy change I was able to make this error go away.</p> +<p><code>The drive that this file or folder is stored on does not allow long file names, or names containing blanks or any of the following characters: / : , ; * ? &lt; &gt; |</code></p> +<h2 id="solution-create-a-gpo-to-fix">Solution: Create a GPO to fix</h2> +<p>To resolve this problem, turn off Fast Logon Optimization. I recommend creating a GPO in your domain controller to achieve this. If its an isolated instance to one PC, you can use gpedit.msc to enforce it on that one PC.</p> +<h3 id="group-policy-settings-to-change">Group Policy Settings to Change</h3> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Computer Configuration\Administrative Templates\System\Logon\Always wait for the network at computer startup and logon +</span></span><span class="line"><span class="cl">User Configuration\Administrative Templates\System\Scripts\Run logon scripts synchronously +</span></span></code></pre></div> + + + + Full Screen RDP and various Remote Desktop Session hotkeys + https://christitus.com/full-screen-rdp/ + Tue, 09 Apr 2013 21:40:02 +0000 + + https://christitus.com/full-screen-rdp/ + <p>Here are all the hotkeys I use regularly when doing Full Screen RDP.</p> +<p>Full Screen RDP Hotkey:</p> +<p><code>Ctrl + Alt + Pause/Break Key</code></p> +<p>Activate Connection Bar:</p> +<p><code>Ctrl + Alt + Home</code></p> +<p>Send Ctrl+Alt+Del on Remote Computer</p> +<p><code>Ctrl + Alt + End</code></p> +<p>Simulate Alt+Tab on Remote Computer</p> +<p><code>Alt + Page Up/Page Down</code></p> +<p>Windows Key Press on Remote Computer</p> +<p><code>Alt + Home</code></p> +<p>I often find myself using these hotkeys to move around, but these are needed especially when you have a locked up program in an RDP session.</p> + + + + GFI MailArchiver MAIS Queue Folder has tons of emails stuck + https://christitus.com/mais-queue-folder/ + Tue, 09 Apr 2013 16:50:22 +0000 + + https://christitus.com/mais-queue-folder/ + <p>The Import service can get stuck and this will stop all the mail in the MAIS Queue Folder. These are the emails that have not been processed and added to GFI Archiver yet, so do not delete them. Below is the fix on how I restored the import service and processed all the stuck email.</p> +<h2 id="the-fix">The Fix</h2> +<p>Deleted all files <strong>EXCEPT</strong> for *.eml from <code>C:\Program Files (x86)\GFIMailArchiver\MAIS\Queue</code></p> +<p>Renamed all *.eml files to *.txt (Command Prompt: ren *.eml *.txt)</p> +<p>Move all files to <code>C:\Program Files (x86)\GFIMailArchiver\MAIS\Pickup</code></p> +<h2 id="in-closing">In Closing</h2> +<p>This will force GFI Mailarchiver to reprocess all these emails. I’d highly recommend doing all these operations from a command prompt as the sheer number of files in the folders can potentially lock up your server when using a Graphic User Interface. Once you restart your processes wait for the MAIS Queue Folder to reduce in size before checking again.</p> + + + + Moving GFI MailArchiver to another server + https://christitus.com/moving-gfi-mailarchiver/ + Tue, 09 Apr 2013 16:39:37 +0000 + + https://christitus.com/moving-gfi-mailarchiver/ + <p>The following walkthrough shows you the process of moving GFI MailArchiver to another server.</p> +<p>These KB articles will assist you in the moving and migration of this server. The process is very involved and requires copying all the data files over to the new server. Afterward, backing up every single SQL database (archive store) and detaching/copying them. From there you reattach the stores and reinstall GFI MailArchiver on the new server.</p> +<h4 id="here-is-the-article-describing-the-data-file-moves-andre-installationon-the-new-server">Here is the Article describing the data file moves and re-installation on the new server.</h4> +<p><em>Please Note: DO NOT re-install GFI before moving SQL Databases from</em> the second <em>article unless you plan on leaving SQL on old server!</em></p> +<p><a href="http://kb.gfi.com/articles/SkyNet_Article/Is-it-possible-to-move-MailArchiver-to-a-new-server?retURL=%2Fapex%2FSupportHome&amp;popup=true">http://kb.gfi.com/articles/SkyNet_Article/Is-it-possible-to-move-MailArchiver-to-a-new-server?retURL=%2Fapex%2FSupportHome&amp;popup=true</a></p> +<h4 id="this-articledescribes-the-actual-sql-server-move">This Article describes the actual SQL Server Move</h4> +<p><a href="http://kb.gfi.com/articles/SkyNet_Article/How-to-move-a-GFI-MailArchiver-database-from-one-Microsoft-SQL-Server-to-another?retURL=%2Fapex%2FSupportHome&amp;popup=true">http://kb.gfi.com/articles/SkyNet_Article/How-to-move-a-GFI-MailArchiver-database-from-one-Microsoft-SQL-Server-to-another?retURL=%2Fapex%2FSupportHome&amp;popup=true</a></p> +<p><img src="https://christitus.com/moving-gfi-mailarchiver/moving-gfi-mailarchiver-2/" alt="Moving GFI MailArchiver"></p> +<h3 id="installation-notes">Installation Notes:</h3> +<ul> +<li>I had to switch to SQL authentication because my old archive store kept popping up errors.</li> +<li>A very long process, because of the massive amount of emails in this archiver. Depending on the business it can take a few days or weeks!</li> +</ul> + + + + Configuring SQL Authentication + https://christitus.com/configuring-sql-authentication/ + Tue, 09 Apr 2013 16:24:26 +0000 + + https://christitus.com/configuring-sql-authentication/ + <p>Configuring SQL Authentication can be tricky at times, and this is a great article that goes over the two types of authentication in SQL. I find some programs interface better with direct SQL authentication when Windows Authentication fails for any reason.</p> +<p><em>Note: This article is taken from <a href="http://kb.gfi.com/articles/SkyNet_Article/How-to-configure-SQL-Server-2005-2008-to-accept-SQL-Authentication">http://kb.gfi.com/articles/SkyNet_Article/How-to-configure-SQL-Server-2005-2008-to-accept-SQL-Authentication</a> and all credit goes to them for the writing. I’m posting it here simply as a reference in case</em> there _site changes the above link. _</p> +<h3 id="fix-authentication-in-gfi-reportcenter">Fix Authentication in GFI ReportCenter</h3> +<p>In order to use SQL Server authentication, you must first configure your server using the steps below.</p> +<ol> +<li>Right-click on the server node and select ‘Properties’</li> +<li>Select ‘Security’ from the left menu under ‘Select a page’</li> +<li>Under ‘Server Authentication’, select the ‘SQL Server and Windows Authentication mode option’</li> +<li>Click ‘OK’ to close the dialog</li> +<li>Right click on the server node and choose ‘Restart’ for the changes to take effect</li> +</ol> +<h4 id="sql-server-authentication-login">SQL Server authentication login</h4> +<ol> +<li>In the server node expand ‘Security’ and ‘Logins’</li> +<li>Right click on the login name and select ‘Properties’</li> +<li>Enter a password and confirm the password for the login</li> +<li>Select ‘Status’ from the left menu under ‘Select a page’</li> +<li>Set the ‘Login’ option to ‘Enabled’</li> +<li>Click ‘OK’ to close the dialog</li> +</ol> +<p>Once you have walked through configuring SQL authentication, you can now change your instance to the type you need.</p> + + + + Could not continue installation because update is pending + https://christitus.com/update-is-pending/ + Thu, 04 Apr 2013 19:04:14 +0000 + + https://christitus.com/update-is-pending/ + <p>When installing a program I kept getting the prompt below that an update is pending. Even after a restart, this would display, therefore I changed these registry keys to clear up the issue.</p> +<blockquote> +<p>Microsoft Server setup cannot continue because a restart from a previous installation or update is pending.</p> +</blockquote> +<h2 id="the-fix-for-an-update-is-pending">The Fix for an update is pending</h2> +<p>The following Registry keys control this error message. If you have rebooted and are still experiencing this issue, clear out these keys and relaunch your installer.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\UpdateExeVolatile +</span></span><span class="line"><span class="cl">HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ControlSession Manager\PendingFileRenameOperations +</span></span></code></pre></div><p>The Setup MSI displays an error message if one of the following conditions is true:</p> +<ul> +<li>The value of the **UpdateExeVolatile **registry key is anything other than 0.</li> +<li>The **PendingFileRenameOperations **registry key has any value.</li> +</ul> +<h3 id="microsoft-knowledgebase-article">Microsoft Knowledgebase article</h3> +<p>You can read this article about regedit.</p> +<p><a href="http://technet.microsoft.com/en-us/library/cc164360(v=exchg.80).aspx">http://technet.microsoft.com/en-us/library/cc164360(v=exchg.80).aspx</a></p> + + + + Ideas + https://christitus.com/ideas/ + Wed, 14 Nov 2012 00:00:00 +0000 + + https://christitus.com/ideas/ + <p>Current Ideas for Videos and Articles</p> +<ul> +<li><input disabled="" type="checkbox"> ZFS, couple that with Sanoid and Syncoid</li> +<li><input disabled="" type="checkbox"> Tiling Window Manager for Windows - <a href="https://github.com/LGUG2Z/komorebi">https://github.com/LGUG2Z/komorebi</a></li> +<li><input disabled="" type="checkbox"> TrueNAS Scale</li> +<li><input disabled="" type="checkbox"> Hyprland Window Manager for Wayland - <a href="https://github.com/hyprwm/Hyprland">https://github.com/hyprwm/Hyprland</a></li> +<li><input disabled="" type="checkbox"> Setting Up Linux Gaming</li> +<li><input disabled="" type="checkbox"> Live Stream Radio Browser Program <a href="https://strimio.com/">https://strimio.com/</a></li> +<li><input disabled="" type="checkbox"> DSTask - <a href="https://github.com/naggie/dstask">https://github.com/naggie/dstask</a></li> +<li><input disabled="" type="checkbox"> <a href="http://Portainer.io">Portainer.io</a></li> +<li><input disabled="" type="checkbox"> PiKVM (<a href="https://pikvm.org/)%5Bhttps://pikvm.org/%5D(https://pikvm.org/">https://pikvm.org/)[https://pikvm.org/](https://pikvm.org/</a>)</li> +<li><input disabled="" type="checkbox"> KVM / QEMU full tutorial</li> +<li><input disabled="" type="checkbox"> Zerotier - BestVPN</li> +<li><input disabled="" type="checkbox"> Darling - MacOS Emulation <a href="https://www.darlinghq.org/">https://www.darlinghq.org/</a></li> +<li><input disabled="" type="checkbox"> plex server setup linux</li> +<li><input disabled="" type="checkbox"> Enable GPO in Win 10 Home <a href="https://www.itechtics.com/enable-gpedit-windows-10-home/#Method_1_Enable_Group_Policy_Editor_in_Windows_10_Home_using_GPEdit_Installer">https://www.itechtics.com/enable-gpedit-windows-10-home/#Method_1_Enable_Group_Policy_Editor_in_Windows_10_Home_using_GPEdit_Installer</a></li> +<li><input disabled="" type="checkbox"> automount drives systemd</li> +<li><input disabled="" type="checkbox"> rEFInd Bootloader</li> +<li><input disabled="" type="checkbox"> <a href="http://snapdrop.net/">snapdrop.net</a> - Share files between devices</li> +<li><input disabled="" type="checkbox"> WinGet and Windows Terminal</li> +<li><input disabled="" type="checkbox"> <a href="https://mycroft.ai">https://mycroft.ai</a> - Open Source Home Assistant</li> +<li><input disabled="" type="checkbox"> Samba Advanced Video</li> +<li><input disabled="" type="checkbox"> Github config save</li> +<li><input disabled="" type="checkbox"> systemd-services on startup cleanup</li> +<li><input disabled="" type="checkbox"> debtap install deb packages on arch - rpm2cpio - alien</li> +<li><input disabled="" type="checkbox"> <a href="https://github.com/dreamer/luxtorpeda/">https://github.com/dreamer/luxtorpeda/</a> - Gaming native</li> +<li><input disabled="" type="checkbox"> OpenHABian</li> +<li><input disabled="" type="checkbox"> Startup Programs and managing them</li> +<li><input disabled="" type="checkbox"> Live USB Environments</li> +<li><input disabled="" type="checkbox"> jellyfin</li> +<li><input disabled="" type="checkbox"> Adding Android Libraries / Davik Virtualization</li> +<li><input disabled="" type="checkbox"> Quibble Windows Bootloader - <a href="https://github.com/maharmstone/quibble"></a><a href="https://github.com/maharmstone/quibble">https://github.com/maharmstone/quibble</a></li> +<li><input disabled="" type="checkbox"> Kodachi</li> +<li><input disabled="" type="checkbox"> Linux Users and Groups</li> +<li><input disabled="" type="checkbox"> Grafana Zabbix Monitoring</li> +<li><input disabled="" type="checkbox"> Alienvault OSSIM</li> +<li><input disabled="" type="checkbox"> resize filesystem</li> +<li><input disabled="" type="checkbox"> URXVT</li> +<li><input disabled="" type="checkbox"> Ranger</li> +<li><input disabled="" type="checkbox"> Vagrant</li> +<li><input disabled="" type="checkbox"> Arch CHROOT Repair</li> +<li><input disabled="" type="checkbox"> alpine linux - The 100MB Linux</li> +<li><input disabled="" type="checkbox"> Kubernetes Initial Setup</li> +<li><input disabled="" type="checkbox"> DEX Linux</li> +<li><input disabled="" type="checkbox"> Making a workstation to load images on PCs - FOG Project</li> +<li><input disabled="" type="checkbox"> Linux Screen Command</li> +<li><input disabled="" type="checkbox"> Firejail</li> +<li><input disabled="" type="checkbox"> Chroot from USB drive</li> +<li><input disabled="" type="checkbox"> Debloat Linux</li> +<li><input disabled="" type="checkbox"> Linux Firewall - UFW</li> +<li><input disabled="" type="checkbox"> <a href="http://privacytools.io/">Privacytools.io</a></li> +<li><input disabled="" type="checkbox"> Add SSD or Hard Drive to VM</li> +<li><input disabled="" type="checkbox"> pulse effects and pulse equalizer</li> +<li><input disabled="" type="checkbox"> PxE and TFTP Servers</li> +<li><input disabled="" type="checkbox"> Update MOTD for on Servers</li> +<li><input disabled="" type="checkbox"> Using the grep command</li> +<li><input disabled="" type="checkbox"> LAMP Stack on Ubuntu</li> +<li><input disabled="" type="checkbox"> SMB4k</li> +<li><input disabled="" type="checkbox"> Docker</li> +<li><input disabled="" type="checkbox"> Redhat Line of Products (Insights / Ansible / OpenShift)</li> +<li><input disabled="" type="checkbox"> Snaps and Flatpacks</li> +</ul> + + + + Windows Store not loading (On Domain) + https://christitus.com/windows-store-not-loading/ + Fri, 12 Oct 2012 17:13:46 +0000 + + https://christitus.com/windows-store-not-loading/ + <p>After joining my computer to the domain windows store would not load. I first had to re-enable UAC because of a GPO and that fixed launching the metro apps. I was still having the issue with Windows Store not loading and this fixed it.</p> +<h2 id="symptoms">Symptoms</h2> +<p>First, if you’re getting shut out of the store (“Can’t connect to the Store right now” kind of messages) &amp; on a corporate, managed machine (you’ll see ‘Managed by your system administrator’ in Windows Update) – plus getting stuff like this in event viewer:</p> +<blockquote> +<p>Fault bucket -1485561316, type 5<br> +Event Name: WindowsUpdateFailure2</p> +</blockquote> +<h2 id="resolution">Resolution</h2> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">[HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsWindowsUpdate] +</span></span><span class="line"><span class="cl">&#34;DisableWindowsUpdateAccess&#34;=dword:00000000 +</span></span></code></pre></div><p>Either copy/paste that text into a text file, save it as storefix.reg &amp; run it, or navigate to that tree &amp; change the DWORD from 1 to 0. Next, go into services.msc &amp; restart the Windows Update service.</p> + + + + Windows Refresh PC Setting + https://christitus.com/windows-refresh-pc/ + Wed, 26 Sep 2012 16:51:38 +0000 + + https://christitus.com/windows-refresh-pc/ + <p>Using Windows Refresh PC now solves the common problem, that PCs get infected with viruses and require you to either reload it from the disc or recovery partition. Sometimes people lost the disc, re-partitioned their drives, or simply had their hard drive fail. This leads to installing windows from scratch and hunting down all your drivers.</p> +<p>That is all changing in Windows 8, they are including a “Refresh” option and a “Remove everything and Re-install Windows” option.</p> +<p><img src="https://christitus.com/images/2012/09/refresh-pc.png" alt="Refresh PC"></p> +<p>I’m skeptical on how well this works, but in theory, this could be a great thing for the home user. Windows 8 computers are likely to get infected, just as much as a Windows 7 computer. However, having these options at users fingertips could be a blessing or a curse. Imagine if a virus re-programs these features, wouldn’t that be fun 😉 I guess we will just have to wait and see.</p> +<h2 id="8220refresh-your-pc8221">“Refresh your PC”</h2> +<p>The Windows refresh PC options remove all user-installed applications from 3rd parties, i.e. Adobe products from a disc, Google Chrome, or anything you installed on the “desktop” portion of windows 8. This pretty much erases all applications on your PC, except those from the windows store. You see where I’m going here, don’t you? Microsoft hopes that end users will purchase EVERYTHING from their store, which it can vet and make sure it doesn’t have viruses. Microsoft will, of course, take a piece of the pie on that purchase and is why Windows 8 will be so cheap. I have mixed emotions on this, but it does make a lot of sense.</p> +<h2 id="8220remove-everything-and-reinstall-windows8221">“Remove Everything and Reinstall Windows”</h2> +<p>This will be nice to have it part of the operating system. It should have been there on past windows, but better late than never. A simple reformats, and reload without the need to hunt down the correct windows disc.</p> +<p>Overall, I’m happy to see Microsoft taking steps to transition the computer world away from where we have been. There will be bugs, and Windows 8 is a far cry from perfect, but I like its direction. I’m looking forward to the official launch next month.</p> +<p>To Learn more about Windows Refresh PC and Restoring custom images go to <a href="http://blogs.msdn.com/b/b8/archive/2012/01/04/refresh-and-reset-your-pc.aspx">http://blogs.msdn.com/b/b8/archive/2012/01/04/refresh-and-reset-your-pc.aspx</a></p> +<p>This details creating a custom refresh image which would include 3rd party applications. This could be a godsend for IT Professionals in business, since the image would be local and easily a one-click fix all button, so to speak.</p> + + + + Exchange on Primary Domain Controller Slow Reboot and Startup + https://christitus.com/exchange-primary-domain-controller/ + Thu, 26 Jul 2012 20:31:21 +0000 + + https://christitus.com/exchange-primary-domain-controller/ + <p>If you had the misfortune of installing Exchange on Primary Domain Controller you will experience some pain when doing a reboot. Typically it will take 10-15 minutes before it restarts and up to 30 minutes to start the Microsoft Exchange Information Store. Consequently, what is really happening in the background is the IS service is being terminated incorrectly on shutdown and the store is left in a “DIRTY” shutdown state. This is very bad on several levels and can cause the Store to corrupt and not start at all, which can be catastrophic.</p> +<p>Luckily, it’s a simple fix and all you have to do is shut down the services before restarting. Below is a script that does it automatically. So, just plug it into a .cmd or .bat file and run.</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">@ECHO OFF +</span></span><span class="line"><span class="cl">ECHO ARE YOU SURE YOU WANT TO RESTART SERVER?? +</span></span><span class="line"><span class="cl">pause +</span></span><span class="line"><span class="cl">net stop msexchangeadtopology /y +</span></span><span class="line"><span class="cl">net stop msftesql-exchange /y +</span></span><span class="line"><span class="cl">net stop msexchangeis /y +</span></span><span class="line"><span class="cl">net stop msexchangesa /y +</span></span><span class="line"><span class="cl">net stop iisadmin /y +</span></span><span class="line"><span class="cl">ECHO DONE STOPING SERVICES REBOOT NOW! +</span></span><span class="line"><span class="cl">pause +</span></span></code></pre></div><p>I hope this helps you and keeps your server running until you are able to install it on another server. That said, try to avoid installing exchange on primary domain controller at all costs. You will avoid so many headaches by doing this.</p> + + + + Fix for Kernel Panic in Mac OSX + https://christitus.com/kernel-panic-mac-osx/ + Tue, 24 Jan 2012 22:55:18 +0000 + + https://christitus.com/kernel-panic-mac-osx/ + <p>Follow these steps to fix a kernel panic in Mac OSX. However, if this doesn’t fix the issue, there is a good chance the motherboard is damaged and you need to send it to Apple.</p> +<h2 id="1-smc-resetting">1) SMC RESETTING</h2> +<ul> +<li>Shut down the computer.</li> +<li>Plug in the MagSafe power adapter to a power source, connecting it to the Mac if its not already connected.</li> +<li>On the built-in keyboard, press the (left side) Shift-Control-Option keys and the power button at the same time.</li> +<li>Release all the keys and the power button at the same time after 25 seconds.</li> +</ul> +<h2 id="2-pram-setting">2) PRAM SETTING</h2> +<ul> +<li>Shut down the computer.</li> +<li>Locate the following keys on the keyboard: Command, Option, P, and R. You will need to hold these keys down</li> +<li>Turn on the computer.</li> +<li>Hold the keys down until the computer restarts and you hear the startup sound for the second time.</li> +<li>Release the keys.</li> +</ul> +<p><em>IF THE ABOVE STEPS DOES NOT WORK THEN PLEASE FOLLOW THE BELOW TROUBLESHOOTING STEPS TO FIX A KERNAL PANIC IN MAC OSX.</em></p> +<h2 id="3-boot-to-startup-manager">3) BOOT TO STARTUP MANAGER</h2> +<ul> +<li> +<p>Press and hold the option key and start the machine then the machine will boot to the startup manager.</p> +</li> +<li> +<p>Check in the windows the partition of your HD shows or not.</p> +<p>If it shows then the machine is working fine but if it does not show then the Hard disk is gone for a toss.</p> +</li> +</ul> +<h2 id="4-insert-the-mac-osx-install-dvd-if-the-hd-is-seen-in-startup-manager">4) INSERT THE MAC OSX INSTALL DVD (IF THE HD IS SEEN IN STARTUP MANAGER)</h2> +<ul> +<li>Boot to the disk.</li> +<li>If you still get the kernel panic in mac osx then it will be 2 possible hardware issues.</li> +<li>Either the Hard disk or the Logic Board.</li> +<li>If you are able to boot through the disk and get the language selection link then go to the first option **Select English as the Main Language. **</li> +<li>Then very next page you need to click on utility option (Found on the taskbar at the top)</li> +<li>Select the disk utility and on that page, you get 3 options +<ul> +<li>Some HD size in MB with any of the HD company name</li> +<li>Macintosh HD.</li> +<li>Optical drive</li> +</ul> +</li> +<li>Select the first option and do the repair disk only.</li> +</ul> +<p>(NOTE: In the install, DVD do not run the repair disk permissions as it sets the default permissions)</p> +<p>If you get a repair disk error, you will need to back up any data you can, and reformat the entire hard disk. Once you don’t get a kernel panic in Mac OSX any longer you will be able to restore from time machine. However, if you continue to have issues, you will need to ship it back to Apple for a logic board replacement.</p> + + + + “Error 1327. Invalid Drive” or “Error 1325 – not a valid short file name” Fix + https://christitus.com/valid-short-file-name/ + Thu, 13 Oct 2011 20:05:32 +0000 + + https://christitus.com/valid-short-file-name/ + <p>If you are installing a program and receiving a pop-up message during installation of valid short file name this applies to you. I removed a drive from my computer and had this happen to me.</p> +<h2 id="steps-to-fix-8220not-avalid-short-file-name8221">Steps to Fix “not a valid short file name”</h2> +<ol> +<li> +<p>Click Start, and then click Run.</p> +</li> +<li> +<p>In the Open box, type regedit, and then click OK.</p> +</li> +<li> +<p>Under Registry Editor, locate the following registry key: <code>HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders</code></p> +</li> +<li> +<p>On the right pane, note the values in the Data field of each entry. If any value contains a drive that is not correct for your computer, right-click the entry, type c:\my documents in the Value data box, and then click OK.</p> +</li> +<li> +<p>Repeat step 4 for each entry whose Data value contains an incorrect drive.</p> +</li> +<li> +<p>Repeat steps 3 through 5 for each of the following registry keys:</p> +</li> +</ol> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders +</span></span><span class="line"><span class="cl">HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion +</span></span><span class="line"><span class="cl">HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders +</span></span><span class="line"><span class="cl">HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders +</span></span></code></pre></div><p>7.Close Registry Editor.</p> +<p>Re-run your setup program and you shouldn’t see “not a valid short file name” error. Also, I’d recommend running the registry cleaning portion of CCleaner and checking your Environmental Variables (Under System Properties, Advanced, then Environmental Variables.)</p> + + + + Release and Renew IP in OS X + https://christitus.com/release-and-renew-ip-in-os-x/ + Thu, 29 Sep 2011 18:46:43 +0000 + + https://christitus.com/release-and-renew-ip-in-os-x/ + <p>I recently had some issues where a bridged virtual machine in osx would disconnect my osx side network connection. A simple release and renew would fix this.</p> +<p>Simply open up Terminal in OSX and type:</p> +<p><code>sudo ifconfig en0 down</code></p> +<p><code>sudo ifconfig en0 up</code></p> +<p>Obviously if you are renewing another interface other than your Ethernet port, en0 would need to be changed to the corresponding short name of the interface.</p> + + + + Keep Windows 7 from installing device drivers from Windows Update + https://christitus.com/keep-windows-7-from-installing-device-drivers-from-windows-update/ + Thu, 15 Sep 2011 15:57:09 +0000 + + https://christitus.com/keep-windows-7-from-installing-device-drivers-from-windows-update/ + <p>I find a very annoying feature of Windows 7 is every device you install by default searches windows update. This makes installing devices a lot longer than it needs to be. Follow these steps to make windows search your computer first and then Windows Update if needed.</p> +<ol> +<li> +<p>Right Click My Computer from Start Menu and select “Properties”</p> +</li> +<li> +<p>Click “Advanced System Settings”</p> +</li> +<li> +<p>Select Hardware Tab, and click “Device Installation Settings”</p> +</li> +<li> +<p>Highlight “No, Let me choose what to do”</p> +</li> +</ol> +<p>4a. Also, “Install driver software from Windows Update if it is not found on my computer”</p> +<p>Save Changes and you are done. You now install devices at lightning speed!</p> + + + + Disable Outlook Anywhere in Group Policy Object (GPO) + https://christitus.com/disable-outlook-anywhere-in-group-policy-object-gpo/ + Wed, 23 Mar 2011 15:35:23 +0000 + + https://christitus.com/disable-outlook-anywhere-in-group-policy-object-gpo/ + <p>By default the standard outlk12.adm templates do not come with a configuration of Outlook Anywhere. You can configure the “<strong>Configure Outlook Anywhere user interface options</strong>” options to disable or grey out the settings. However, this DOES NOT disable Outlook anywhere, just user interaction with it.</p> +<p>You will need to download a new administrative template that Microsoft released in this <a href="http://support.microsoft.com/kb/961112">hotfix</a>. If you don’t like reading Microsoft’s wonderful support site instructions or Microsoft changes their support site after this blog post, here is the file and instructions paraphrased.</p> +<ol> +<li> +<p>Download Add-On Outlook Anywhere Administrative Template here…<a href="http://localhost/images/2011/03/article-961112.zip">article-961112</a> (unzip to reveal article-961112.adm file).</p> +</li> +<li> +<p>In the Group Policy Object Editor add the Article-961112.adm file:</p> +</li> +</ol> +<p>Right-click Administrative Templates and click Add/Remove Templates.</p> +<p>In the Add/Remove Templates dialog box click Add.</p> +<p>In the Policy Templates dialog box locate and select the Article-961112.adm file. Click Open.</p> +<p>Click Close in the Add/Remove Templates dialog box.</p> +<ol start="3"> +<li> +<p>Under User Configuration in Administrative Templates expand the policy node labeled Article 961112 Policy Settings. (Note: You may see this under Classic Administrative Templates in a sub-menu)</p> +</li> +<li> +<p>Select the Outlook Anywhere (RPC/HTTP) node to list the following policies under the Setting column in the right-pane:</p> +</li> +</ol> +<blockquote> +<p>RPC/HTTP Connection Flags -&gt; Set to Enabled -&gt; No Flags</p> +</blockquote> +<blockquote> +<p>Proxy Server Name -&gt; Do not change</p> +</blockquote> +<blockquote> +<p>Only Connect if Proxy Server certificate has this principle name -&gt; Do not change</p> +</blockquote> +<blockquote> +<p>Proxy authentication Setting -&gt; Do not change</p> +</blockquote> +<ol start="5"> +<li>Double-click each policy to configure the appropriate RPC/HTTP setting for your Outlook clients.</li> +</ol> + + + + + Target Specific People or Computers with Item-Level Targeting in GPOs + https://christitus.com/target-specific-people-or-computers-with-item-level-targeting-in-gpos/ + Tue, 22 Mar 2011 21:59:02 +0000 + + https://christitus.com/target-specific-people-or-computers-with-item-level-targeting-in-gpos/ + <p>Using Group Policy Objects can be a huge time saver, but if used improperly can be a big headache. Once you’ve messed around with GPO settings enough, you quickly figure out that you need to create new GPOs for specific programs, events, etc… that are not all in one GPO. This gives you a lot more flexibility and makes it very easy to track down troublesome GPO related issues when done properly.</p> +<p>Now lets say you create a Power Savings GPO that you want to apply only to computers that meet certain conditions. WMI, Security, and Site Filtering are all too broad for this task, and you want to use Item-Level Targeting. After you create your Group Policy Object you will need to add this setting to the GPO.</p> +<p><strong>In Group Policy Management Settings</strong></p> +<p>-User Configuration -&gt; Preferences -&gt; Control Panel -&gt; Regional Options</p> +<p>-Right-Click and Select New</p> +<p>-Navigate to Common Tab</p> +<p>-Check Item-Level Targeting and Press Targeting…</p> +<p>From here you will be able to select tons of critaria that you want to meet for your GPO. This can be system requirements to install a program, or only select certain Operating Systems. You can also add is not tags that will rule out any computer that meet that criteria. The options are limitless and its very easy to incorporate in your GPO. Personally, I never use the often complicated and time consuming WMI Filters anymore.</p> + + + + RSS Feeds + https://christitus.com/rss/ + Mon, 01 Jan 0001 00:00:00 +0000 + + https://christitus.com/rss/ + + + + + Search Result + https://christitus.com/search/ + Mon, 01 Jan 0001 00:00:00 +0000 + + https://christitus.com/search/ + + + + + Videos + https://christitus.com/videos/ + Mon, 01 Jan 0001 00:00:00 +0000 + + https://christitus.com/videos/ + + + + +