<?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>Christiano Anderson</title>
    <link>https://christiano.dev/</link>
    <description>Recent content on Christiano Anderson</description>
    <generator>Hugo -- 0.152.2</generator>
    <language>en_GB</language>
    <lastBuildDate>Sat, 14 Feb 2026 15:11:25 +0100</lastBuildDate>
    <atom:link href="https://christiano.dev/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>My Experience with Self-Hosted RSS solution</title>
      <link>https://christiano.dev/post/self_hosted_rss/</link>
      <pubDate>Sat, 14 Feb 2026 15:11:25 +0100</pubDate>
      <guid>https://christiano.dev/post/self_hosted_rss/</guid>
      <description>&lt;p&gt;As a privacy advocate and someone who believes in data sovereignty, I&amp;rsquo;ve been on a constant challenge to maintain control over my digital life. I I love reading news and staying well-informed, making me an avid news consumer. I actively support quality content producers by subscribing or donating money regularly, ensuring that I contribute to the sustainability of my favourite sources. After setting up &lt;a href=&#34;https://miniflux.app/&#34;&gt;Miniflux&lt;/a&gt; on my own server, I&amp;rsquo;ve completely transformed how I stay informed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The IndieWeb and Small web</title>
      <link>https://christiano.dev/post/indieweb_smallweb/</link>
      <pubDate>Sun, 25 Jan 2026 09:08:31 +0100</pubDate>
      <guid>https://christiano.dev/post/indieweb_smallweb/</guid>
      <description>&lt;p&gt;As someone who values privacy and the open web, I&amp;rsquo;ve been fascinated by the growing movement away from centralised platforms toward more personal, user-controlled online experiences.
What surprised me recently was discovering just how many people are embracing these concepts without even knowing their names.&lt;/p&gt;
&lt;h2 id=&#34;indieweb&#34;&gt;IndieWeb&lt;/h2&gt;
&lt;p&gt;The IndieWeb is a community of people who own their websites and content rather than posting to third-party platforms (like Medium, Substack, etc). It&amp;rsquo;s built on principles like:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Gradia: The Ultimate Screenshot Tool for GNOME</title>
      <link>https://christiano.dev/til/gradia/</link>
      <pubDate>Sat, 17 Jan 2026 09:15:06 +0100</pubDate>
      <guid>https://christiano.dev/til/gradia/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been hunting for a screenshot tool that&amp;rsquo;s actually good for GNOME, and I&amp;rsquo;m pretty sure I found my new go-to: &lt;a href=&#34;https://github.com/AlexanderVanhee/Gradia&#34;&gt;Gradia&lt;/a&gt;.  I&amp;rsquo;ve been using it for a while now, and it&amp;rsquo;s fantastic.&lt;/p&gt;
&lt;p&gt;You can add notes, highlight sections, add arrows, very helpful when you&amp;rsquo;re working on documentation or teaching a tech class.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Postgres null character in psql</title>
      <link>https://christiano.dev/til/postgres_null_char/</link>
      <pubDate>Thu, 09 Oct 2025 21:09:59 +0200</pubDate>
      <guid>https://christiano.dev/til/postgres_null_char/</guid>
      <description>&lt;p&gt;In &lt;code&gt;psql&lt;/code&gt;, &lt;code&gt;null&lt;/code&gt; values are displayed as blank strings by default, which can be confusing to read.&lt;/p&gt;
&lt;p&gt;However, you can customize this behavior by setting a specific character to represent null values, making your output more readable and easier to interpret:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;\pset null &amp;#39;-x-&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;All &lt;code&gt;null&lt;/code&gt; values will become &lt;code&gt;-x-&lt;/code&gt;, which is much more convenient.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;anderson=# select * from test1;
 name | surname 
------+---------
 A    | -x-
(1 row)
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;bonus&#34;&gt;Bonus&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s possible to choose an emoji as a replacement:&lt;/p&gt;</description>
    </item>
    <item>
      <title>LSD - ls replacement</title>
      <link>https://christiano.dev/til/lsd-ls-replacement/</link>
      <pubDate>Sun, 29 Jun 2025 11:30:05 +0200</pubDate>
      <guid>https://christiano.dev/til/lsd-ls-replacement/</guid>
      <description>&lt;p&gt;I have a new &lt;code&gt;ls&lt;/code&gt; replacement!&lt;/p&gt;
&lt;p&gt;I was using &lt;code&gt;eza&lt;/code&gt; (see &lt;a href=&#34;https://christiano.dev/til/eza-fedora-42/&#34;&gt;Eza on Fedora 42&lt;/a&gt; ) for a while, but I&amp;rsquo;ve found something even better: &lt;a href=&#34;https://github.com/lsd-rs/lsd&#34;&gt;lsd&lt;/a&gt;. This tool is a nice because it displays icons for file types, making it so much easier to navigate files directories.&lt;/p&gt;
&lt;p&gt;The default settings are great, but the date format &lt;code&gt;mm/dd/yyyy&lt;/code&gt; is a bit odd. Changing this is the only modification needed to make the tool perfect.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Eza on Fedora 42</title>
      <link>https://christiano.dev/til/eza-fedora-42/</link>
      <pubDate>Fri, 18 Apr 2025 19:40:45 +0200</pubDate>
      <guid>https://christiano.dev/til/eza-fedora-42/</guid>
      <description>&lt;p&gt;In my previous post, I wrote about using &lt;a href=&#34;https://eza.rocks&#34;&gt;Eza&lt;/a&gt; on Fedora 41, which works well and it can be installed via &lt;code&gt;dnf&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This week, I upgraded my main computer to Fedora 42 and noticed that the Eza package is no longer available and couldn&amp;rsquo;t be installed using &lt;code&gt;dnf&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;I looked into the &lt;a href=&#34;https://src.fedoraproject.org/rpms/rust-eza&#34;&gt;rust-eza&lt;/a&gt; and discovered that the maintainer has orphaned it due to time constrains.&lt;/p&gt;
&lt;p&gt;To keep using Eza, I downloaded the &lt;a href=&#34;https://github.com/eza-community/eza/releases/&#34;&gt;latest release&lt;/a&gt; from the project&amp;rsquo;s Github page, and installed the binary directly to the &lt;code&gt;/usr/local/bin&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Replacing ls with eza</title>
      <link>https://christiano.dev/til/replace_ls_eza/</link>
      <pubDate>Sat, 15 Mar 2025 14:06:11 +0100</pubDate>
      <guid>https://christiano.dev/til/replace_ls_eza/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://eza.rocks/&#34;&gt;Eza&lt;/a&gt; is a modern replacement for &lt;code&gt;ls&lt;/code&gt;, it&amp;rsquo;s written in Rust, small, fast and just a single binary.&lt;/p&gt;
&lt;h2 id=&#34;how-to-replace-in-fedora-with-fish-shell&#34;&gt;How to replace in Fedora with Fish Shell&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;sudo dnf install eza&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;alias --save ls eza&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Done!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Merging two tables in PostgreSQL</title>
      <link>https://christiano.dev/til/2025-02-12-postgresql_merge/</link>
      <pubDate>Wed, 12 Feb 2025 08:11:59 +0100</pubDate>
      <guid>https://christiano.dev/til/2025-02-12-postgresql_merge/</guid>
      <description>&lt;p&gt;I often have to merge data from different tables in PostgreSQL, this is a code snippet I use:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MERGE
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;INTO&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	users u
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#66d9ef&#34;&gt;USING&lt;/span&gt; new_users n &lt;span style=&#34;color:#66d9ef&#34;&gt;ON&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	u.user_uuid &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; n.user_uuid
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;WHEN&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;NOT&lt;/span&gt; MATCHED &lt;span style=&#34;color:#66d9ef&#34;&gt;THEN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;INSERT&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;VALUES&lt;/span&gt; (n.user_uuid,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;n.first_name,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;n.last_name)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;WHEN&lt;/span&gt; MATCHED &lt;span style=&#34;color:#66d9ef&#34;&gt;THEN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;UPDATE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;SET&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	first_name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; n.first_name,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	last_name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; n.last_name
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  RETURNING u.&lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>A Fish Script for Creating New Hugo Posts</title>
      <link>https://christiano.dev/til/2025-02-11-fish_script_new_post/</link>
      <pubDate>Tue, 11 Feb 2025 08:13:07 +0100</pubDate>
      <guid>https://christiano.dev/til/2025-02-11-fish_script_new_post/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve streamlined my blogging process using &lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo&lt;/a&gt; by automating tasks with the Fish Shell.&lt;/p&gt;
&lt;p&gt;I created a simple script that saves me a few minutes each time I write a new post.&lt;/p&gt;
&lt;p&gt;It automatically starts a new Hugo post and opens it in &lt;a href=&#34;https://helix-editor.com/&#34;&gt;Helix editor&lt;/a&gt;, allowing me to write, save, and publish with ease.&lt;/p&gt;
&lt;p&gt;File name: &lt;code&gt;new_til.fish&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fish&#34; data-lang=&#34;fish&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;new_til&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;-d&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Create a new Today I learned post on Hugo&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;set&lt;/span&gt; blog_path ~/sites/blog
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;set&lt;/span&gt; date_str &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;date&lt;/span&gt; +%Y-%m-%d&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;cd&lt;/span&gt; $blog_path
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;hugo&lt;/span&gt; new til/$date_str-$argv&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;.md
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;hx&lt;/span&gt; content/til/$date_str-$argv&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;.md
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Just save the script into &lt;code&gt;~./config/fish/functions&lt;/code&gt; and to start a new &lt;em&gt;Today I Learned&lt;/em&gt; post, just type &lt;code&gt;$ new_til post_title&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Running PostgreSQL with Podman and volume</title>
      <link>https://christiano.dev/til/postgresql_podman/</link>
      <pubDate>Mon, 10 Feb 2025 12:48:24 +0100</pubDate>
      <guid>https://christiano.dev/til/postgresql_podman/</guid>
      <description>&lt;p&gt;This is a short snippet to run PostgreSQL using Podman with a volume. The snippet has been tested on Fedora 41.&lt;/p&gt;
&lt;h2 id=&#34;create-the-podman-volume&#34;&gt;Create the Podman volume&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ podman volume create psqldevel
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;run-postgresql&#34;&gt;Run PostgreSQL&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ podman run -d -p 5432:5432 -v psqldevel:/var/lib/postgresql/data -e POSTGRES_PASSWORD&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;xx --name psqldevel postgres:latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Introducing Today I Learned</title>
      <link>https://christiano.dev/til/introducing_til/</link>
      <pubDate>Mon, 10 Feb 2025 12:33:35 +0100</pubDate>
      <guid>https://christiano.dev/til/introducing_til/</guid>
      <description>&lt;p&gt;As I continue to explore the world of Data Engineer, Linux, Fedora and other intersting topics, I often find small but interesting topics, that don&amp;rsquo;t deserve a full blog post, but I don&amp;rsquo;t want to let these discoveries to go away.&lt;/p&gt;
&lt;p&gt;In this section, I&amp;rsquo;ll be documenting and sharing short snippets of knowledge, tips and tricks that I&amp;rsquo;ve learned along the way.&lt;/p&gt;
&lt;p&gt;These posts will be bite-sized, easy to digest and hopefully, useful to others who may be on a similar journey.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Apache Spark and Apache Iceberg</title>
      <link>https://christiano.dev/post/spark-iceberg/</link>
      <pubDate>Sun, 15 Dec 2024 08:16:18 +0200</pubDate>
      <guid>https://christiano.dev/post/spark-iceberg/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m building a personal datalake, just for fun, using Apache Iceberg and Apache Spark. I&amp;rsquo;m writing a technical post explaining the process, and how to run a small datalake in your own computer.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fish shell</title>
      <link>https://christiano.dev/post/fish_shell/</link>
      <pubDate>Fri, 29 Mar 2024 14:56:11 +0100</pubDate>
      <guid>https://christiano.dev/post/fish_shell/</guid>
      <description>&lt;p&gt;After using &lt;code&gt;ZSH&lt;/code&gt; for a couple of years, I decided to switch back to the &lt;a href=&#34;https://fishshell.com/docs/current/index.html&#34;&gt;Fish shell&lt;/a&gt;. Fish works out of the box, batteries included, and the basic installation provides all the features I expect from a shell environment.&lt;/p&gt;
&lt;p&gt;For over 20 years, I have been using Unix-based systems, including SCO Unix, Solaris, and BSDi. I have been using Linux since 1996, and Slackware was the first Linux distribution I used, and now I&amp;rsquo;m a happy Fedora user. My journey led me to discover different shells, &lt;code&gt;csh&lt;/code&gt;, &lt;code&gt;ksh&lt;/code&gt;, and &lt;code&gt;bash&lt;/code&gt; being the most common.&lt;/p&gt;</description>
    </item>
    <item>
      <title>FOSDEM 2024</title>
      <link>https://christiano.dev/post/fosdem2024/</link>
      <pubDate>Sun, 04 Feb 2024 16:57:46 +0100</pubDate>
      <guid>https://christiano.dev/post/fosdem2024/</guid>
      <description>&lt;p&gt;It was fun to attend FOSDEM for the first time. The event is of immense magnitude, as multiple talks are occurring simultaneously, and approximately 8000 individuals from all over the globe attended the event. It&amp;rsquo;s a chance to meet new people, learn about new technology, get stickers (I&amp;rsquo;m trying to find more space on my laptop to put more stickers) and help out at the event. My first FOSDEM and my first time volunteering to heralding the lightning talks, what a great way to get immersed in the event!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Contributing to Fedora</title>
      <link>https://christiano.dev/post/contributing-to-fedora/</link>
      <pubDate>Thu, 07 Sep 2023 20:20:02 +0200</pubDate>
      <guid>https://christiano.dev/post/contributing-to-fedora/</guid>
      <description>&lt;p&gt;Fedora is the Linux distribution that I primarily utilize, as it offers a satisfactory balance between cutting-edge packages and stability. The release schedule is six-monthly, and you can expect the most recent version of the main packages, a level of innovation you can only find in one of the most up-to-date and stable operating systems. Being a data professional, I enjoy trying new software and staying abreast of the newest industry innovation.&lt;/p&gt;</description>
    </item>
    <item>
      <title>My ZSH Setup</title>
      <link>https://christiano.dev/post/my-zsh-setup/</link>
      <pubDate>Sun, 30 Jul 2023 18:20:34 +0200</pubDate>
      <guid>https://christiano.dev/post/my-zsh-setup/</guid>
      <description>&lt;p&gt;Here&amp;rsquo;s how I set up ZSH on Fedora Linux.&lt;/p&gt;
&lt;h2 id=&#34;install-the-basic-packages&#34;&gt;Install the basic packages&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dnf install zsh zsh-autosuggestions zsh-syntax-highlighting util-linux-user
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;install-oh-my-zsh&#34;&gt;Install Oh My ZSH&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Follow the instruction on the &lt;a href=&#34;https://ohmyz.sh/&#34;&gt;Oh My ZSH&lt;/a&gt; website:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sh -c &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;install-the-powerlevel10k-theme&#34;&gt;Install the Powerlevel10k theme&lt;/h2&gt;
&lt;p&gt;Install the &lt;code&gt;MesloLGS&lt;/code&gt; font family first to get the best results.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install the fonts:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Regular.ttf&#34;&gt;MesloLGS NF Regular.ttf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold.ttf&#34;&gt;MesloLGS NF Bold.ttf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Italic.ttf&#34;&gt;MesloLGS NF Italic.ttf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold%20Italic.ttf&#34;&gt;MesloLGS NF Bold Italic.ttf&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Clone the repository:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;ZSH_THEME=&amp;quot;powerlevel10k/powerlevel10k&amp;quot;&lt;/code&gt; in &lt;code&gt;~/.zshrc&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Configure the &lt;strong&gt;Terminal&lt;/strong&gt; to load the &lt;code&gt;MesloLGS&lt;/code&gt; font:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img alt=&#34;Terminal&#34; loading=&#34;lazy&#34; src=&#34;https://christiano.dev/images/zsh.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Learning Scala</title>
      <link>https://christiano.dev/post/learning-scala/</link>
      <pubDate>Mon, 19 Sep 2022 20:31:57 +0200</pubDate>
      <guid>https://christiano.dev/post/learning-scala/</guid>
      <description>&lt;p&gt;Python is my main programming language at work, it&amp;rsquo;s the &lt;em&gt;lingua franca&lt;/em&gt; for data engineer, together with &lt;em&gt;SQL&lt;/em&gt;. I have always been very curious to learn a &lt;em&gt;functional programming language&lt;/em&gt; and Scala was a natural choice.&lt;/p&gt;
&lt;p&gt;As data engineer, &lt;strong&gt;Python&lt;/strong&gt;, &lt;strong&gt;Scala&lt;/strong&gt; and &lt;strong&gt;Java&lt;/strong&gt; are the most common programming languages, these three technologies dominate the main tools, components and frameworks used by data professionals, for example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hadoop (Java)&lt;/li&gt;
&lt;li&gt;Pandas (Python)&lt;/li&gt;
&lt;li&gt;Airflow (Python)&lt;/li&gt;
&lt;li&gt;Kafka (Scala and Java)&lt;/li&gt;
&lt;li&gt;Spark (Scala)&lt;/li&gt;
&lt;li&gt;Pulsar (Java)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(&amp;hellip;) It&amp;rsquo;s a big list, if you are still not convinced, take a look into &lt;a href=&#34;https://projects.apache.org/projects.html?category#big-data&#34;&gt;Apache Projects Directory for Big Data&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>New Blog</title>
      <link>https://christiano.dev/post/new-blog/</link>
      <pubDate>Sun, 18 Sep 2022 14:50:24 +0200</pubDate>
      <guid>https://christiano.dev/post/new-blog/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m starting this new space to write articles on &lt;strong&gt;data engineering&lt;/strong&gt; and also on other different topics like &lt;strong&gt;privacy&lt;/strong&gt;, &lt;strong&gt;productivity tools&lt;/strong&gt; and &lt;strong&gt;personal growth&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&#34;why-a-new-blog&#34;&gt;Why a new blog?&lt;/h2&gt;
&lt;p&gt;Before my own blog platform, I wrote a few posts on the &lt;em&gt;Medium&lt;/em&gt; platform, like this one: &lt;a href=&#34;https://medium.com/@dump/data-engineer-and-infrastructure-as-a-code-fc83f6d577c1&#34;&gt;Data Engineer and Infrastructure as a code&lt;/a&gt;. I am very interested in sharing knowledge, freely, without paywalls. This is one of the reasons why I decided to stick with my own platform instead of using &lt;em&gt;Medium&lt;/em&gt;.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
