<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="/feed.xml" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2026-02-27T16:06:42+00:00</updated><id>/feed.xml</id><title type="html">Keon Cachia’s Paradise</title><subtitle>This is my blog for anything I found interesting such as Linux ricing or  cli tools.</subtitle><entry><title type="html">Archival of Astronaut Reader</title><link href="/programming/2026/02/27/Archival-of-Astronaut-reader.html" rel="alternate" type="text/html" title="Archival of Astronaut Reader" /><published>2026-02-27T15:41:00+00:00</published><updated>2026-02-27T15:41:00+00:00</updated><id>/programming/2026/02/27/Archival-of-Astronaut-reader</id><content type="html" xml:base="/programming/2026/02/27/Archival-of-Astronaut-reader.html"><![CDATA[<p>A month ago, I started work on a project in purely Lua called Astronaut Reader.
You can read my <a href="https://paradiseofmagic.github.io/programming/2026/01/26/New-personal-project-in-Lua.html">earlier
post</a>
about to learn what it was. I’ve decided to archive the repository and stop
work on the project, however I am not one to leave something unfinished so the
project technically works, you can give it a link to an Atom feed and it will
get its posts and navigate through them and open their links. It’s just awfully
inconvenient to use; this is due to the fact that I had made it in pure Lua which while can be “compiled” into an
executable using a tool called ‘Luastatic’ is a interpreted language mostly used alongside C and C++.</p>

<p>It was not for naught however, it showed that I’m becoming a better programmer
due to just how quickly I had worked on the project as opposed my very slow
development on my previous projects. I do also know even more Lua and that does
not hurt at all! It has showed not to use it as a general purpose programming
language on its own.</p>

<p>I probably start another project with due time, with different tooling. Haskell
and C with Raylib have caught my interest so it will probably be one of those.</p>

<p>My second semester has started so I’ll probably have less time to my own
projects and to write posts. Thanks for reading!</p>

<p>Software mentioned:</p>
<ul>
  <li><a href="https://github.com/ers35/luastatic">Luastatic</a></li>
  <li><a href="https://www.raylib.com/">Raylib</a></li>
</ul>]]></content><author><name></name></author><category term="programming" /><summary type="html"><![CDATA[A month ago, I started work on a project in purely Lua called Astronaut Reader. You can read my earlier post about to learn what it was. I’ve decided to archive the repository and stop work on the project, however I am not one to leave something unfinished so the project technically works, you can give it a link to an Atom feed and it will get its posts and navigate through them and open their links. It’s just awfully inconvenient to use; this is due to the fact that I had made it in pure Lua which while can be “compiled” into an executable using a tool called ‘Luastatic’ is a interpreted language mostly used alongside C and C++.]]></summary></entry><entry><title type="html">Using Linux as a MCAST student: Trials and Tribulations</title><link href="/mcast/linux/2026/02/14/Using-Linux-as-a-MCAST-student.html" rel="alternate" type="text/html" title="Using Linux as a MCAST student: Trials and Tribulations" /><published>2026-02-14T12:50:00+00:00</published><updated>2026-02-14T12:50:00+00:00</updated><id>/mcast/linux/2026/02/14/Using-Linux-as-a-MCAST-student</id><content type="html" xml:base="/mcast/linux/2026/02/14/Using-Linux-as-a-MCAST-student.html"><![CDATA[<p>At MCAST, I opted to use Linux for my studies. This meant I had to come with
some workarounds, this post can also serve as a pseudo-guide on what software
to use for those like me. At the time of writing, I’m in my second year and
final semester for my advanced diploma so I might miss a few details however,
most of what I did should be here.</p>

<h2 id="first-year-both-semesters">First year, both semesters:</h2>

<p>During the first year, I was first dual-booting Windows 10 and Linux so I used
less workarounds. I started with Linux Mint as most beginners to desktop Linux
do. I had some trouble with Cisco Packet Tracer since finding and installing
the .deb took some effort. My lack of experience probably contributed to that.
I did start dabbling in (my now favourite text editor) Neovim, I still Visual
Studio Code for school and my own personal projects. A decision I honestly
regret, considering how terrible my laptop was. Visual Studio Code would often
crash or freeze, making it hard to focus.</p>

<h2 id="second-year">Second year:</h2>

<h3 id="first-semester">First semester:</h3>

<p>Now this is where gets interesting as I was now using Linux(Arch Linux) only on
my new laptop. The first hurdle was C# development, I first started with
virtual machine through Qemu running Visual Studio. I grew some confidence and actually
learned Neovim, I had started with Omnisharp unfortunately that language server
is quite weak and slow.</p>

<p>I eventually used a plug-in by the name of ‘rosyln.nvim’ together with the
language server Roslyn. This got into tooling such as formatters,linters and
language servers, I grew to appreciate them especially formatters as in one of
my previous projects a game made with LOVE2D the formatting drove me crazy.
Learning Roslyn’s code actions too were quite nice too. At the time I did not
know about Visual Studio Code’s C# extension though, I find Neovim more fun so
I do not regret it.</p>

<p>I too had to learn how to use Dotnet from the cli but, that was quite pleasant
and easy. Here are some commands for any student reading who is like me or just
wants to use Dotnet from the cli too.</p>

<p>How to create a console project with a name.</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>dotnet new console <span class="nt">--name</span> &lt;name of project&gt;
</code></pre></div></div>
<p>How to run a project. Path and project argument is optional, you can also have your working directory as the project.</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>dotnet run <span class="nt">--project</span> &lt;project path&gt;
</code></pre></div></div>
<p>How to create a new solution with a name.</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>dotnet new sln <span class="nt">--name</span> &lt;name of sln&gt;
</code></pre></div></div>
<p>How to add a project to a solution.</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>dotnet sln &lt;path to solution&gt; add &lt;path to project&gt;
</code></pre></div></div>

<p>For Java development, Apache Netbeans is fortunately on Linux. I did start with
Neovim and Jdtls(using the Jdtls plug-in) with newfound knowledge of how to use
Neovim, I went back to Netbeans for GUI development and well because we had to
use it for TCAs and CBAs. I went into Netbeans with some extra confidence than
I had before, probably from my success in Neovim and I began exploring key
binds and configuration for Netbeans(and also Visual Studio later on!). I even
learned some key binds that the lecturers didn’t know about such as formatting
in Visual Studio(ctrl+e ctrl+f) and auto-complete(ctrl+space) in Netbeans.</p>

<p>During client side scripting, I could have just used Visual Studio Code like
with C# but, I liked Neovim more and knew how to use the same language servers
that Visual Studio Code uses, I also used Biome for formatting and linting for
Javascript,HTML and CSS.</p>

<p>Unity development had probably the most bumps as the AUR package for Unity was
non-functional for about a month after I started MCAST. I first tried using
Distrobox which where I started to learn about containers, I had plenty of
issues being a newbie to containers so I opted for a buggy Flatpak package
instead and using Neovim as my text editor for Unity. The AUR package was
updated after some time which was much smoother, so many thanks to the
maintainer nobbele.</p>

<h3 id="second-semester">Second semester</h3>

<p>For the second semester, since XAMPP is an AUR package I opted to set up
Apache,Php and MySql(in my case Mariadb). Since the documentation for doing
this on a MAC(That’s what I read as MAC and Linux are both Unix-like) is quite
poor on MCAST’s end, I’ll try to make this section more of a guide of sorts.</p>

<p>First for Php and Mariadb, I had followed the Arch Wiki. Activating some Php modules.</p>

<p>Uncomment these lines in your “/etc/php/php.ini”</p>
<pre><code class="language-txt">extension=pdo_mysql
extension=mysqli
</code></pre>
<p>You should also install the Apache Php module as we will need it later.</p>

<p>For Mariadb, I had to create a new user and install the database. I was a bit
confused due to just how poor the MCAST documentation was but, I figured it.
For anyone like me please just read the Arch Wiki it’s a godsend for any Linux
user.</p>

<p>Run this command to install the database. Do this before enabling the Systemd service.</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mariadb-install-db <span class="nt">--user</span><span class="o">=</span>mysql <span class="nt">--basedir</span><span class="o">=</span>/usr <span class="nt">--datadir</span><span class="o">=</span>/var/lib/mysql
</code></pre></div></div>

<p>Run these series of commands to create an user for the database with all privileges.</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>Mariadb

<span class="c">#(While in Mariadb)</span>
MariaDB&gt; CREATE DATABASE &lt;database name&gt;<span class="p">;</span>
MariaDB&gt; CREATE USER <span class="s1">'&lt;username&gt;'</span>@<span class="s1">'localhost'</span> IDENTIFIED BY <span class="s1">'&lt;password_here&gt;'</span><span class="p">;</span>
MariaDB&gt; GRANT ALL PRIVILEGES ON mydb.<span class="k">*</span> TO <span class="s1">'&lt;username&gt;'</span>@<span class="s1">'localhost'</span><span class="p">;</span>
MariaDB&gt; quit
</code></pre></div></div>

<p>Then make this Php script and run it with “php script_name.php”</p>

<div class="language-php highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp">&lt;?php</span>
    <span class="nv">$servername</span> <span class="o">=</span> <span class="s2">"localhost"</span><span class="p">;</span>
    <span class="nv">$username</span> <span class="o">=</span> <span class="s2">"&lt;username&gt;"</span><span class="p">;</span>
    <span class="nv">$password</span> <span class="o">=</span> <span class="s2">"&lt;password of the user you created before&gt;"</span><span class="p">;</span>
    <span class="nv">$dbname</span> <span class="o">=</span> <span class="s2">"&lt;name of the database you made&gt;"</span><span class="p">;</span>

    <span class="nv">$conn</span> <span class="o">=</span> <span class="nb">mysqli_connect</span><span class="p">(</span><span class="nv">$servername</span><span class="p">,</span><span class="nv">$username</span><span class="p">,</span><span class="nv">$password</span><span class="p">,</span><span class="nv">$dbname</span><span class="p">);</span>

    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nv">$conn</span><span class="p">)</span> <span class="p">{</span>
        <span class="k">die</span><span class="p">(</span><span class="s2">"connection failed"</span> <span class="mf">.</span> <span class="nf">mysqli_connect_error</span><span class="p">());</span>
    <span class="p">}</span>
    <span class="k">echo</span> <span class="s2">"Connected successfully"</span><span class="p">;</span>
<span class="cp">?&gt;</span>
</code></pre></div></div>
<p>Now let’s set up tooling for Php. For Visual Studio Code you can install the Phptools plug-in, for Neovim we will need to set up a language server ourselves I will be using Phpactor in this example.</p>

<p>Install Phpactor using Mason.</p>
<div class="language-vim highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">:</span>MasonInstall phpactor
</code></pre></div></div>
<p>Then set it up using the native LSP client. Here is my configuration, you will also need to enable it.</p>
<div class="language-lua highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">vim</span><span class="p">.</span><span class="n">lsp</span><span class="p">.</span><span class="n">enable</span><span class="p">(</span><span class="s2">"phpactor"</span><span class="p">)</span>

<span class="n">vim</span><span class="p">.</span><span class="n">lsp</span><span class="p">.</span><span class="n">config</span><span class="p">(</span><span class="s2">"phpactor"</span><span class="p">,</span> <span class="p">{</span>
	<span class="n">cmd</span> <span class="o">=</span> <span class="p">{</span> <span class="s2">"phpactor"</span><span class="p">,</span> <span class="s2">"language-server"</span> <span class="p">},</span>
	<span class="n">filetypes</span> <span class="o">=</span> <span class="p">{</span> <span class="s2">"php"</span> <span class="p">},</span>
	<span class="n">root_markers</span> <span class="o">=</span> <span class="p">{</span> <span class="s2">".git"</span><span class="p">,</span> <span class="s2">"composer.json"</span><span class="p">,</span> <span class="s2">".phpactor.json"</span><span class="p">,</span> <span class="s2">".phpactor.yml"</span> <span class="p">},</span>
	<span class="n">workspace_required</span> <span class="o">=</span> <span class="kc">true</span><span class="p">,</span>
	<span class="n">init_options</span> <span class="o">=</span> <span class="p">{</span>
		<span class="p">[</span><span class="s2">"language_server_phpstan.enabled"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">false</span><span class="p">,</span>
		<span class="p">[</span><span class="s2">"language_server_psalm.enabled"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">false</span><span class="p">,</span>
	<span class="p">},</span>
<span class="p">})</span>
</code></pre></div></div>
<p>Then for Phpactor, since it needs a workspace just place a .phpactor.json to
allow the server to connect. For a formatter, I use Laravel Pint so just put
that into your Conform configuration like so.</p>
<div class="language-lua highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">php</span> <span class="o">=</span> <span class="p">{</span> <span class="s2">"pint"</span> <span class="p">},</span>
</code></pre></div></div>

<p>Now it is time for Apache. There is no guide whatsoever from MCAST’s end, not that it would likely be any good.</p>

<p>First you want to enable Php support.</p>

<p>Comment out this line.</p>
<pre><code class="language-txt">#LoadModule mpm_event_module modules/mod_mpm_event.so
</code></pre>
<p>Uncomment this line.</p>
<pre><code class="language-txt">LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
</code></pre>

<p>Add this at the end of the “modules” list.</p>
<pre><code class="language-txt">LoadModule php_module modules/libphp.so
AddHandler php-script .php
</code></pre>
<p>Add this at the end of the “include” list.</p>
<pre><code class="language-txt">Include conf/extra/php_module.conf
</code></pre>

<p>Now we want to set up an user directory as by default Apache looks inside a directory that requires root to access(highly inconvenient).</p>

<p>Change the document root and the directory below it to a directory inside your home.</p>
<pre><code class="language-txt">DocumentRoot "&lt;directory path&gt;"
&lt;Directory "&lt;same directory path&gt;"&gt;
</code></pre>
<p>And change “require all denied” to “require all granted”.</p>

<p>Now go to the directory where you have set your document root to and use UCL to allow the “http” user to access it.</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Grant execute permissions to http for your home</span>
<span class="nv">$ </span>setfacl <span class="nt">-m</span> u:http:x ~
<span class="c"># Grant execute and read permissions to http to your DocumentRoot</span>
<span class="nv">$ </span>setfacl <span class="nt">-R</span> <span class="nt">-m</span> u:http:rx ~/&lt;DocumentRootPath&gt;
</code></pre></div></div>

<p>I would recommend creating a file named index.html and just make it a simple HTML page to check if Apache works. If you are using the Systemd service you will also need to add this option to the service’s hardening configuration(/etc/systemd/system/httpd.service.d/hardening.conf)</p>

<pre><code class="language-txt">ProtectHome=no
</code></pre>

<p>Now start Apache either through “apachectl -k start” or the Systemd service and
see if it works. If it does not please read the <a href="https://httpd.apache.org/docs/trunk/mod/directives.html">official Apache
documentation</a> and the
Arch Wiki.</p>

<p>Now we need to set up Phpmyadmin, the MCAST documentation is once again poor
for this(mentions wrong file). Just install Phpmyadmin and find its root
directory using your package manager and create a soft link to it inside your DocumentRoot like so.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">ln</span> <span class="nt">-s</span> /usr/share/webapps/phpMyAdmin &lt;root document&gt;
</code></pre></div></div>

<p>Then navigate to “phpmyadmin/index.php” to access the login page, then login as the user you created before for Mariadb.</p>

<p>Well that was quite long was it not? Thankfully the set up for relation databases is far simpler.</p>

<p>All I had to do was create a Docker container for Microsoft SQL Server, run it and then connect to it through DBeaver.</p>

<p>Here is my compose file.</p>
<div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="na">services</span><span class="pi">:</span>
  <span class="na">sqlserver</span><span class="pi">:</span>
    <span class="na">image</span><span class="pi">:</span> <span class="s">mcr.microsoft.com/mssql/server:2022-latest</span>
    <span class="na">container_name</span><span class="pi">:</span> <span class="s">sqlserver</span>
    <span class="na">ports</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s2">"</span><span class="s">1433:1433"</span>
    <span class="na">environment</span><span class="pi">:</span>
      <span class="na">SA_PASSWORD</span><span class="pi">:</span> <span class="s2">"</span><span class="s">&lt;Your</span><span class="nv"> </span><span class="s">password</span><span class="nv"> </span><span class="s">here&gt;"</span>
      <span class="na">ACCEPT_EULA</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Y"</span>
      <span class="na">MSSQL_PID</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Express"</span>
    <span class="na">volumes</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s">sql_db_1:/var/opt/mssql</span>
<span class="na">volumes</span><span class="pi">:</span>
  <span class="na">sql_db_1</span><span class="pi">:</span>
</code></pre></div></div>

<p>I tried doing this with rootless Docker but, had some issues and just went for rootful Docker instead.</p>

<p>This is by far my longest blog post to date, far longer than my previous ones. So I hope it was a good read.</p>

<p>Software mentioned in no particular order:</p>
<ul>
  <li><a href="https://docs.docker.com/get-started/docker-overview/">Docker</a></li>
  <li><a href="https://visualstudio.microsoft.com/">Visual Studio</a></li>
  <li><a href="https://www.qemu.org/">Qemu</a></li>
  <li><a href="https://httpd.apache.org/">Apache HTTP server</a></li>
  <li><a href="https://www.php.net/">Php</a></li>
  <li><a href="https://archlinux.org/">Arch Linux</a></li>
  <li><a href="https://www.linuxmint.com/">Linux Mint</a></li>
  <li><a href="https://code.visualstudio.com/">Visual Studio Code</a></li>
  <li><a href="https://neovim.io/">Neovim</a></li>
  <li><a href="https://biomejs.dev/">Biome</a></li>
  <li><a href="https://www.phpmyadmin.net/">Phpmyadmin</a></li>
  <li><a href="https://mariadb.org/">Mariadb</a></li>
  <li><a href="https://www.netacad.com/cisco-packet-tracer">Cisco Packet Tracer</a></li>
  <li><a href="https://dbeaver.io/">DBeaver</a></li>
  <li><a href="https://www.omnisharp.net/">Omnisharp</a></li>
  <li><a href="https://en.wikipedia.org/wiki/Roslyn_(compiler)">Roslyn</a></li>
  <li><a href="https://github.com/seblyng/roslyn.nvim">Roslyn.nvim</a></li>
  <li><a href="https://github.com/eclipse-jdtls/eclipse.jdt.ls">Jdtls</a></li>
  <li><a href="https://codeberg.org/mfussenegger/nvim-jdtls">Jdtls.nvim</a></li>
  <li><a href="https://love2d.org/">LOVE2D</a></li>
  <li><a href="https://dotnet.microsoft.com/en-us/download">Dotnet</a></li>
  <li><a href="https://netbeans.apache.org/front/main/index.html">Apache Netbeans</a></li>
  <li><a href="https://laravel.com/docs/12.x/pint">Laravel Pint</a></li>
  <li><a href="https://github.com/stevearc/conform.nvim">Conform.nvim</a></li>
  <li><a href="https://distrobox.it/">Distrobox</a></li>
  <li><a href="https://flatpak.org/">Flatpak</a></li>
  <li><a href="https://www.apachefriends.org/">XAMPP</a></li>
  <li><a href="https://github.com/phpactor/phpactor">Phpactor</a></li>
  <li><a href="https://www.devsense.com/en">Phptools</a></li>
  <li><a href="https://www.java.com/en/">Java</a></li>
  <li><a href="https://en.wikipedia.org/wiki/C_Sharp_(programming_language)">C#</a></li>
  <li><a href="https://www.mysql.com/">MySQL</a></li>
  <li><a href="https://aur.archlinux.org/packages/unityhub">Unity AUR package</a> Thank you so much!</li>
  <li><a href="https://unity.com/">Unity</a></li>
</ul>]]></content><author><name></name></author><category term="MCAST" /><category term="Linux" /><summary type="html"><![CDATA[At MCAST, I opted to use Linux for my studies. This meant I had to come with some workarounds, this post can also serve as a pseudo-guide on what software to use for those like me. At the time of writing, I’m in my second year and final semester for my advanced diploma so I might miss a few details however, most of what I did should be here.]]></summary></entry><entry><title type="html">Messing around with FFmpeg</title><link href="/cli%20tools/2026/02/05/Messing-around-with-FFmpeg.html" rel="alternate" type="text/html" title="Messing around with FFmpeg" /><published>2026-02-05T15:08:00+00:00</published><updated>2026-02-05T15:08:00+00:00</updated><id>/cli%20tools/2026/02/05/Messing-around-with-FFmpeg</id><content type="html" xml:base="/cli%20tools/2026/02/05/Messing-around-with-FFmpeg.html"><![CDATA[<p>I decided to learn some FFmpeg. I was interested in how to encode videos to
different formats since that’s the most common task I would normally do in a
video editor such as Kdenlive. As it turns out this is pretty easy due to
FFmpeg automatically detecting video formats by their file extension.</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ffmpeg <span class="nt">-i</span> input.mp4 <span class="nt">-c</span> copy output.mkv
</code></pre></div></div>

<p>You can also do</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ffmpeg <span class="nt">-i</span> input.mp4 output.mkv
</code></pre></div></div>
<p>though this will re-encode the video which is slower,more expensive and results
in quality loss according to the FFmpeg
docs<a href="https://ffmpeg.org/ffmpeg.html#Streamcopy">[1]</a>.</p>

<p>I decided to have some fun and tried to mix together audio and video streams. I
even created a broken file that would play a different video stream in Mpv than
the one in FFplay, unfortunately I do not remember the command for that. I have
found out how to create a file with the video of one file and the audio of
another file.</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ffmpeg <span class="nt">-i</span> <span class="s2">"input1.mp4"</span> <span class="nt">-i</span> <span class="s2">"input2.mp4"</span> <span class="nt">-map</span> 0:0 <span class="nt">-map</span> 1:1 <span class="nt">-c</span> copy Output.mp4
</code></pre></div></div>

<p>It seems that the first number indicates which file to get streams
from(starting from 0). So this gets the video stream(:0) from file 0 and gets
the audio stream(:1) from file 1 then uses the copy encoder to encode it into
the output file.</p>

<p>I’ve of course yet to understand everything, the documentation is quite long. I
has been quite fun using what abominations come out from it and actual use
cases. FFplay is also an alright multimedia player when I need one quickly, Mpv
is still my favourite.</p>

<p>Sources:</p>

<p>[1](<a href="https://ffmpeg.org/ffmpeg.html#Streamcopy">https://ffmpeg.org/ffmpeg.html#Streamcopy<a></a>)</a></p>

<p>Software mentioned:</p>

<p><a href="https://ffmpeg.org/">FFmpeg</a></p>

<p><a href="https://mpv.io/">Mpv</a></p>]]></content><author><name></name></author><category term="Cli tools" /><summary type="html"><![CDATA[I decided to learn some FFmpeg. I was interested in how to encode videos to different formats since that’s the most common task I would normally do in a video editor such as Kdenlive. As it turns out this is pretty easy due to FFmpeg automatically detecting video formats by their file extension.]]></summary></entry><entry><title type="html">My new project in Lua</title><link href="/programming/2026/01/26/New-personal-project-in-Lua.html" rel="alternate" type="text/html" title="My new project in Lua" /><published>2026-01-26T15:08:00+00:00</published><updated>2026-01-26T15:08:00+00:00</updated><id>/programming/2026/01/26/New-personal-project-in-Lua</id><content type="html" xml:base="/programming/2026/01/26/New-personal-project-in-Lua.html"><![CDATA[<p>It’s been some time since I worked on a personal project. I’ve been mainly
focusing my efforts on college however, now that the first semester is nearly
over I’ve realised I had a lot more time to my myself than I had expected.</p>

<p>Because of this, I’ve decided to start a new project I’m calling “Astronaut
Reader”. It’s a TUI RSS reader using Ncurses similar to
<a href="https://codezen.org/canto-ng/">Canto</a> and
<a href="https://github.com/CrociDB/bulletty">Bulletty</a>. I’m currently just
experimenting with the curses library for
Lua <a href="https://github.com/lcurses/lcurses">lcurses</a>. The Codeberg repository is
located <a href="https://codeberg.org/ParadiseOfMagic/Astronaut-reader">here</a>.</p>

<p>This isn’t my first project, I had made a very insecure password manager in
Python last year called
<a href="https://bitbucket.org/paradiseofmemory/kainpasswordmanager/src/main/">Kain</a>.
While it’s not very practical due to it storing things in plain text, it did
teach me some Git and Python.</p>]]></content><author><name></name></author><category term="programming" /><summary type="html"><![CDATA[It’s been some time since I worked on a personal project. I’ve been mainly focusing my efforts on college however, now that the first semester is nearly over I’ve realised I had a lot more time to my myself than I had expected.]]></summary></entry></feed>