<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Developer Tooling on The Final Artefact</title><link>https://www.thefinalartefact.xyz/categories/developer-tooling/</link><description>Recent content in Developer Tooling on The Final Artefact</description><generator>Hugo</generator><language>en-gb</language><lastBuildDate>Fri, 28 Mar 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://www.thefinalartefact.xyz/categories/developer-tooling/index.xml" rel="self" type="application/rss+xml"/><item><title>Automatically Refreshing NVim plugins</title><link>https://www.thefinalartefact.xyz/post/nvim-autoupdate/</link><pubDate>Fri, 28 Mar 2025 00:00:00 +0000</pubDate><guid>https://www.thefinalartefact.xyz/post/nvim-autoupdate/</guid><description>&lt;p&gt;One of the key benefits of modern editors like NVim, Vim, or Emacs is the rich plugin ecosystem. After years with Vim, I switched to NVim and was immediately impressed by its plugin landscape. The &lt;a href="https://github.com/folke/lazy.nvim"&gt;Lazy&lt;/a&gt; plugin manager—available for NVim &amp;gt; 0.8—quickly became my favourite. &lt;a href="https://github.com/folke/lazy.nvim"&gt;Lazy&lt;/a&gt; simplifies plugin discovery and management. It offers an intuitive interface and powerful commands that make it easy to add, remove, or update plugins.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.thefinalartefact.xyz/post/nvim-autoupdate/images/lazy_image.png" target="_blank" rel="noopener noreferrer"&gt;
&lt;img alt="Lazy Plugin in Actions" loading="lazy" src="https://www.thefinalartefact.xyz/post/nvim-autoupdate/images/lazy_image.png"&gt;
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>One Line Docker Commands</title><link>https://www.thefinalartefact.xyz/post/one-line-docker/</link><pubDate>Wed, 19 Mar 2025 00:00:00 +0000</pubDate><guid>https://www.thefinalartefact.xyz/post/one-line-docker/</guid><description>&lt;p&gt;&lt;a href="https://www.thefinalartefact.xyz/post/one-line-docker/images/ast_docker.png" target="_blank" rel="noopener noreferrer"&gt;
&lt;img alt="Executing Python command across multiple versions" loading="lazy" src="https://www.thefinalartefact.xyz/post/one-line-docker/images/ast_docker.png"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Setting up a robust data science development environment takes time, and it&amp;rsquo;s a process that’s rarely ever finished. If you’re the type who likes to get the most out of your tools, you’ll likely enjoy tweaking, optimising, and layering your workspace with productivity enhancements. That might mean refining your Python setup to easily manage multiple language versions and dependencies, or expanding your text editor with plugins for linting, code suggestions, unit test execution, and CI/CD integration.&lt;/p&gt;</description></item><item><title>Version Control your Dotfiles</title><link>https://www.thefinalartefact.xyz/post/git-dotfiles/</link><pubDate>Fri, 14 Mar 2025 00:00:00 +0000</pubDate><guid>https://www.thefinalartefact.xyz/post/git-dotfiles/</guid><description>&lt;p&gt;&lt;a href="https://www.thefinalartefact.xyz/post/git-dotfiles/images/imageGitStatus.png" target="_blank" rel="noopener noreferrer"&gt;
&lt;img alt="Using git to version control dotfiles" loading="lazy" src="https://www.thefinalartefact.xyz/post/git-dotfiles/images/imageGitStatus.png"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="what-are-dotfiles"&gt;What are .dotfiles?&lt;/h2&gt;
&lt;p&gt;Dotfiles are hidden configuration files on Unix-like systems.&lt;br&gt;
Their filenames start with a dot (&lt;code&gt;.&lt;/code&gt;), making them hidden by default.&lt;br&gt;
They store preferences and settings for programs like shells, text editors, and version control systems.&lt;/p&gt;
&lt;p&gt;Many modern Linux applications follow the XDG Base Directory Specification.&lt;br&gt;
This guideline recommends placing user-specific configuration files in &lt;code&gt;~/.config&lt;/code&gt; (or &lt;code&gt;$XDG_CONFIG_HOME&lt;/code&gt;).&lt;br&gt;
Using this standard reduces clutter in home directories and simplifies managing configurations across systems.&lt;/p&gt;</description></item><item><title>Aggressively formatting your Python files</title><link>https://www.thefinalartefact.xyz/post/aggressively-formatting-your-python-files/</link><pubDate>Sat, 30 Sep 2023 00:00:00 +0000</pubDate><guid>https://www.thefinalartefact.xyz/post/aggressively-formatting-your-python-files/</guid><description>&lt;p&gt;Vim provides a wide range of functions for file formatting, starting with basic features such as &lt;code&gt;reindent&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="viml-implementation"&gt;VimL Implementation&lt;/h2&gt;
&lt;p&gt;Creating a function within Vim to process the file is likely the most straightforward approach. The primary purpose of this function is to pass the filename to an external command for formatting. Leveraging the rich ecosystem of Python formatting tools available from the command line allows the function to efficiently and consistently format files, tapping into powerful, pre-existing solutions for code aesthetics and standardization. In effect, the role of the function is to pass the filename to the call below:&lt;/p&gt;</description></item><item><title>Using RScript for R Installation Management</title><link>https://www.thefinalartefact.xyz/post/rscriptt-for-r-managment/</link><pubDate>Mon, 03 Jan 2022 00:00:00 +0000</pubDate><guid>https://www.thefinalartefact.xyz/post/rscriptt-for-r-managment/</guid><description>&lt;p&gt;Most frequently, users tend to undertake common R installation and management tasks from within the R session. Frequently making use of commands, like &lt;code&gt;install.packages&lt;/code&gt;, &lt;code&gt;update.packages&lt;/code&gt; or &lt;code&gt;old.packages&lt;/code&gt; to obtain or update packages or update/verify the existing packages. Those common tasks can also be accomplished via the GUI offered within RStudio, which provides an effortless mechanism for undertaking basic package management tasks. This is approach is usually sufficient for the vast majority of cases; however, there are some examples when working within REPL^[REPL stands for &lt;strong&gt;R&lt;/strong&gt;ead &lt;strong&gt;E&lt;/strong&gt;val &lt;strong&gt;P&lt;/strong&gt;rint &lt;strong&gt;L&lt;/strong&gt;oop and is usually delivered in a form of an interactive shell. While working in Python users would commonly access REPLY by running &lt;code&gt;python&lt;/code&gt; or &lt;code&gt;ipython&lt;/code&gt;, &lt;a href="https://pythonprogramminglanguage.com/repl/"&gt;more details&lt;/a&gt;.] to accomplish common installation tasks is not hugely convenient.&lt;/p&gt;</description></item></channel></rss>