<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Home on Salar Rahmanian</title><link>https://www.softinio.com/</link><description>Recent content in Home on Salar Rahmanian</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sun, 08 Feb 2026 09:20:00 -0800</lastBuildDate><atom:link href="https://www.softinio.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Streamline Your Development Workflow: Harnessing the Power of NixOS and Nix Package</title><link>https://www.softinio.com/talks/streamline-your-development-workflow/</link><pubDate>Sat, 14 Oct 2023 00:00:00 +0000</pubDate><guid>https://www.softinio.com/talks/streamline-your-development-workflow/</guid><description>&lt;p&gt;

 &lt;picture&gt;
 &lt;source srcset="https://www.softinio.com/talks/streamline-your-development-workflow/sbtb2023_hu_2d0cb9cfcffb7542.webp 780w, https://www.softinio.com/talks/streamline-your-development-workflow/sbtb2023_hu_7f1b49b8aac45c3.webp 1560w"
 sizes="(max-width: 830px) calc(100vw - 3rem), 780px"
 type="image/webp" /&gt;
 &lt;img src="https://www.softinio.com/talks/streamline-your-development-workflow/sbtb2023_hu_fd339702e2c47853.png"
 alt=""
 width="780" height="390"
 loading="eager" fetchpriority="high" /&gt;
 &lt;/picture&gt;
&lt;/p&gt;
&lt;p&gt;In November 2023 I had the great privilege to do a talk at &lt;a href="https://www.scale.bythebay.io/post/salar-rahmanian-streamline-your-development-workflow-harnessing-the-power-of-nixos-and-nix-package"&gt;Scale By The Bay 2023&lt;/a&gt; in San Francisco, California.&lt;/p&gt;
&lt;h3 id="recording-of-my-talk"&gt;Recording of my talk&lt;/h3&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; margin-bottom: 0.25rem; height: 0; overflow: hidden;"&gt;
 &lt;iframe src="https://www.youtube-nocookie.com/embed/Qv3Y23RjJa0"
 title="YouTube Video"
 style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
 allowfullscreen&gt;
 &lt;/iframe&gt;
&lt;/div&gt;
&lt;p class="video-fallback"&gt;&lt;a href="https://www.youtube.com/watch?v=Qv3Y23RjJa0" target="_blank" rel="noopener"&gt;▶ Watch on YouTube&lt;/a&gt;&lt;/p&gt;

&lt;h3 id="pre-conference-introduction-to-talk"&gt;Pre-Conference Introduction to talk&lt;/h3&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; margin-bottom: 0.25rem; height: 0; overflow: hidden;"&gt;
 &lt;iframe src="https://www.youtube-nocookie.com/embed/LVadoYGDvI8"
 title="YouTube Video"
 style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
 allowfullscreen&gt;
 &lt;/iframe&gt;
&lt;/div&gt;
&lt;p class="video-fallback"&gt;&lt;a href="https://www.youtube.com/watch?v=LVadoYGDvI8" target="_blank" rel="noopener"&gt;▶ Watch on YouTube&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Scala News</title><link>https://www.softinio.com/projects/scalanews/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.softinio.com/projects/scalanews/</guid><description>&lt;p&gt;

 &lt;picture&gt;
 &lt;source srcset="https://www.softinio.com/projects/scalanews/scalanews_hu_b92b722bc7a5d562.webp" type="image/webp" /&gt;
 &lt;img src="https://www.softinio.com/projects/scalanews/scalanews_hu_be48cead0ff03b20.png"
 alt="Scala News"
 width="780" height="780"
 loading="eager" fetchpriority="high" /&gt;
 &lt;/picture&gt;
&lt;/p&gt;
&lt;h1 id="overview"&gt;Overview&lt;/h1&gt;
&lt;p&gt;I wanted to create a directory of all bloggers who write about Scala Programming language with links to their RSS Feeds.&lt;/p&gt;
&lt;p&gt;Using this directory I have created a CLI tool using Scala, Typelevel stack (cats-effect, fs2, http4s, decline, Laika) to use the rss feed links to generate the latest news in the scala community that I publish periodically on &lt;a href="https://www.scalanews.net/"&gt;www.scalanews.net&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="links"&gt;Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Website: &lt;a href="https://www.scalanews.net/"&gt;https://www.scalanews.net/&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;About Page: &lt;a href="https://www.scalanews.net/Resources/About.html"&gt;https://www.scalanews.net/Resources/About.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Repository: &lt;a href="https://github.com/softinio/scalanews"&gt;https://github.com/softinio/scalanews&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;README: &lt;a href="https://github.com/softinio/scalanews/blob/main/README.md"&gt;https://github.com/softinio/scalanews/blob/main/README.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Elevating Python Development with Nix Package Manager</title><link>https://www.softinio.com/talks/elevating-python-development-with-nix/</link><pubDate>Sat, 14 Oct 2023 00:00:00 +0000</pubDate><guid>https://www.softinio.com/talks/elevating-python-development-with-nix/</guid><description>&lt;p&gt;

 &lt;picture&gt;
 &lt;source srcset="https://www.softinio.com/talks/elevating-python-development-with-nix/Elevating_Python_Development_with_Nix_Package_Manager_hu_76ac1cf2ae54af28.webp" type="image/webp" /&gt;
 &lt;img src="https://www.softinio.com/talks/elevating-python-development-with-nix/Elevating_Python_Development_with_Nix_Package_Manager_hu_bc06c4a81beb8b85.png"
 alt=""
 width="780" height="439"
 loading="eager" fetchpriority="high" /&gt;
 &lt;/picture&gt;
&lt;/p&gt;
&lt;p&gt;In October 2023 I had the great privilege to do a talk at PyBay 2023 in San Francisco, California.&lt;/p&gt;
&lt;h3 id="recording-of-my-talk"&gt;Recording of my talk&lt;/h3&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; margin-bottom: 0.25rem; height: 0; overflow: hidden;"&gt;
 &lt;iframe src="https://www.youtube-nocookie.com/embed/AJs_izrEBOA"
 title="YouTube Video"
 style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
 allowfullscreen&gt;
 &lt;/iframe&gt;
&lt;/div&gt;
&lt;p class="video-fallback"&gt;&lt;a href="https://www.youtube.com/watch?v=AJs_izrEBOA" target="_blank" rel="noopener"&gt;▶ Watch on YouTube&lt;/a&gt;&lt;/p&gt;

&lt;h3 id="slides"&gt;Slides&lt;/h3&gt;
&lt;p&gt;Slides for my talk can be found &lt;a href="https://github.com/softinio/talks/blob/master/PyBay2023/pybay2023_slides.pdf"&gt;here&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>scaladex.nvim</title><link>https://www.softinio.com/projects/scaladex-nvim/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.softinio.com/projects/scaladex-nvim/</guid><description>&lt;p&gt;

 &lt;picture&gt;
 &lt;source srcset="https://www.softinio.com/projects/scaladex-nvim/scala-logo_hu_d5d0b851de8c0152.webp" type="image/webp" /&gt;
 &lt;img src="https://www.softinio.com/projects/scaladex-nvim/scala-logo_hu_2d0e115cb461a626.png"
 alt="scaladex.nvim"
 width="590" height="270"
 loading="eager" fetchpriority="high" /&gt;
 &lt;/picture&gt;
&lt;/p&gt;
&lt;h1 id="overview"&gt;Overview&lt;/h1&gt;
&lt;p&gt;I created a lua library that is able to search for scala pages on &lt;a href="https://index.scala-lang.org"&gt;Scaladex&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I then used it to create a &lt;a href="https://neovim.io"&gt;Neovim&lt;/a&gt; plugin and &lt;a href="https://github.com/nvim-telescope/telescope.nvim"&gt;telescope.nvim&lt;/a&gt; plugin so that when I am coding using Neovim I can search for and add packages as dependencies.&lt;/p&gt;
&lt;h2 id="demo-and-video-tutorial-on-using-scaladexnvim"&gt;Demo and Video Tutorial on using scaladex.nvim&lt;/h2&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; margin-bottom: 0.25rem; height: 0; overflow: hidden;"&gt;
&lt;iframe sandbox="allow-same-origin allow-scripts allow-popups" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;"
 src="https://watch.softinio.com/videos/embed/44bD8ASpSkzmKifDBNMBkr?title=0&amp;warningTitle=0&amp;peertubeLink=0" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;p class="video-fallback"&gt;&lt;a href="https://watch.softinio.com/w/44bD8ASpSkzmKifDBNMBkr" target="_blank" rel="noopener"&gt;▶ Watch on PeerTube&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Acting Lessons for Scala Engineers With Akka and Zio</title><link>https://www.softinio.com/talks/acting-lessons-for-scala-engineers-with-akka-and-zio/</link><pubDate>Sat, 10 Apr 2021 10:20:09 -0700</pubDate><guid>https://www.softinio.com/talks/acting-lessons-for-scala-engineers-with-akka-and-zio/</guid><description>&lt;p&gt;

 &lt;picture&gt;
 &lt;source srcset="https://www.softinio.com/talks/acting-lessons-for-scala-engineers-with-akka-and-zio/sbtb2020_hu_f31bb6706cfec297.webp 780w, https://www.softinio.com/talks/acting-lessons-for-scala-engineers-with-akka-and-zio/sbtb2020_hu_99091a8249a26c03.webp 1560w"
 sizes="(max-width: 830px) calc(100vw - 3rem), 780px"
 type="image/webp" /&gt;
 &lt;img src="https://www.softinio.com/talks/acting-lessons-for-scala-engineers-with-akka-and-zio/sbtb2020_hu_62b869b7882bf502.jpg"
 alt=""
 width="780" height="390"
 loading="eager" fetchpriority="high" /&gt;
 &lt;/picture&gt;
&lt;/p&gt;
&lt;p&gt;In November 2020 I had the great privilege to do a &lt;a href="https://scalebythebay2020.sched.com/event/e54O/acting-lessons-for-scala-engineers-with-akka-and-zio"&gt;Talk at Scale By The Bay Conference&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="recording-of-my-talk"&gt;Recording of my talk&lt;/h3&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; margin-bottom: 0.25rem; height: 0; overflow: hidden;"&gt;
 &lt;iframe src="https://www.youtube-nocookie.com/embed/AQXBlbkf9wc"
 title="YouTube Video"
 style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
 allowfullscreen&gt;
 &lt;/iframe&gt;
&lt;/div&gt;
&lt;p class="video-fallback"&gt;&lt;a href="https://www.youtube.com/watch?v=AQXBlbkf9wc" target="_blank" rel="noopener"&gt;▶ Watch on YouTube&lt;/a&gt;&lt;/p&gt;

&lt;h3 id="slides"&gt;Slides&lt;/h3&gt;
&lt;p&gt;Slides for my talk can be found &lt;a href="https://github.com/softinio/talks/blob/master/SBTB2020/acting-lessons-for-scala-engineers-with-akka-and-zio.pdf"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="i-also-wrote-three-blogs-posts-as-a-companion-to-my-talk"&gt;I also wrote three blogs posts as a companion to my talk&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.softinio.com/post/introduction-to-the-actor-model/"&gt;Introduction to the Actor Model&lt;/a&gt;&lt;/p&gt;</description></item><item><title>duck4s</title><link>https://www.softinio.com/projects/duck4s/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.softinio.com/projects/duck4s/</guid><description>&lt;p&gt;

 &lt;picture&gt;
 &lt;source srcset="https://www.softinio.com/projects/duck4s/duck4s_logo_hu_c77015b12151f2d5.webp" type="image/webp" /&gt;
 &lt;img src="https://www.softinio.com/projects/duck4s/duck4s_logo_hu_c54d364e9a79cf42.jpeg"
 alt="duck4s"
 width="200" height="200"
 loading="eager" fetchpriority="high" /&gt;
 &lt;/picture&gt;
&lt;/p&gt;
&lt;h1 id="overview"&gt;Overview&lt;/h1&gt;
&lt;p&gt;A modern, type-safe Scala 3 wrapper library for DuckDB that provides idiomatic, functional programming-friendly access to DuckDB&amp;rsquo;s analytical database capabilities through its Java JDBC client.&lt;/p&gt;
&lt;h2 id="links"&gt;Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Repository: &lt;a href="https://github.com/softinio/duck4s"&gt;https://github.com/softinio/duck4s&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;README: &lt;a href="https://github.com/softinio/duck4s/blob/main/README.md"&gt;https://github.com/softinio/duck4s/blob/main/README.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Next-Level Diagnostics for Async &amp; Concurrent Errors with ZIO</title><link>https://www.softinio.com/talks/next-level-diagnostics-for-async-and-concurrent-errors-with-zio/</link><pubDate>Wed, 13 Nov 2019 00:00:00 +0000</pubDate><guid>https://www.softinio.com/talks/next-level-diagnostics-for-async-and-concurrent-errors-with-zio/</guid><description>&lt;p&gt;

 &lt;picture&gt;
 &lt;source srcset="https://www.softinio.com/talks/next-level-diagnostics-for-async-and-concurrent-errors-with-zio/sbtb2019_hu_76635d2b9f1d957b.webp" type="image/webp" /&gt;
 &lt;img src="https://www.softinio.com/talks/next-level-diagnostics-for-async-and-concurrent-errors-with-zio/sbtb2019_hu_c17d1bc6df955ac.png"
 alt=""
 width="780" height="439"
 loading="eager" fetchpriority="high" /&gt;
 &lt;/picture&gt;
&lt;/p&gt;
&lt;p&gt;In November 2019 I had the great privilege to do a &lt;a href="https://scalebythebay2019.sched.com/event/RoSt/next-level-diagnostics-for-async-concurrent-errors-with-zio"&gt;Talk at Scale By The Bay Conference&lt;/a&gt; with John A De Goes.&lt;/p&gt;
&lt;h3 id="recording-of-my-talk"&gt;Recording of my talk&lt;/h3&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; margin-bottom: 0.25rem; height: 0; overflow: hidden;"&gt;
 &lt;iframe src="https://www.youtube-nocookie.com/embed/MdYKEwuWR4U"
 title="YouTube Video"
 style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
 allowfullscreen&gt;
 &lt;/iframe&gt;
&lt;/div&gt;
&lt;p class="video-fallback"&gt;&lt;a href="https://www.youtube.com/watch?v=MdYKEwuWR4U" target="_blank" rel="noopener"&gt;▶ Watch on YouTube&lt;/a&gt;&lt;/p&gt;

&lt;h3 id="slides"&gt;Slides&lt;/h3&gt;
&lt;p&gt;Slides for my talk can be found &lt;a href="slides.pdf"&gt;here&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Fishee</title><link>https://www.softinio.com/projects/fishee/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.softinio.com/projects/fishee/</guid><description>&lt;p&gt;

 &lt;picture&gt;
 &lt;source srcset="https://www.softinio.com/projects/fishee/FisheeLogo_hu_3782b2065559e43a.webp" type="image/webp" /&gt;
 &lt;img src="https://www.softinio.com/projects/fishee/FisheeLogo_hu_797932ec339f40a3.jpeg"
 alt="Fishee"
 width="640" height="452"
 loading="eager" fetchpriority="high" /&gt;
 &lt;/picture&gt;
&lt;/p&gt;
&lt;h1 id="overview"&gt;Overview&lt;/h1&gt;
&lt;p&gt;Fishee is a command-line interface (CLI) tool designed specifically for users of the Fish Shell. It provides a convenient way to manage and manipulate your Fish Shell history files, making it easier to maintain and transfer command history across different environments.&lt;/p&gt;
&lt;h2 id="links"&gt;Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Repository: &lt;a href="https://github.com/softinio/Fishee"&gt;https://github.com/softinio/Fishee&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;README: &lt;a href="https://github.com/softinio/Fishee/blob/main/README.md"&gt;https://github.com/softinio/Fishee/blob/main/README.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>ZIO Actors</title><link>https://www.softinio.com/projects/zio-actors/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.softinio.com/projects/zio-actors/</guid><description>&lt;p&gt;

 &lt;picture&gt;
 &lt;source srcset="https://www.softinio.com/projects/zio-actors/ZIO_hu_5e7abc2694463537.webp 780w, https://www.softinio.com/projects/zio-actors/ZIO_hu_1e40d5b6867f0de5.webp 1560w"
 sizes="(max-width: 830px) calc(100vw - 3rem), 780px"
 type="image/webp" /&gt;
 &lt;img src="https://www.softinio.com/projects/zio-actors/ZIO_hu_7fb8c61bcaacc43c.png"
 alt="Scala News"
 width="780" height="318"
 loading="eager" fetchpriority="high" /&gt;
 &lt;/picture&gt;
&lt;/p&gt;
&lt;h1 id="overview"&gt;Overview&lt;/h1&gt;
&lt;p&gt;ZIO Actors is a high-performance, purely functional library for building, composing, and supervising typed actors based on ZIO using Scala.&lt;/p&gt;
&lt;p&gt;Original creator of this project, though I do not maintain it anymore.&lt;/p&gt;
&lt;h2 id="my-blog-post-and-talk-about-zio-actors"&gt;My blog post and Talk about ZIO Actors&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.softinio.com/talks/acting-lessons-for-scala-engineers-with-akka-and-zio/"&gt;see here&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="links"&gt;Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Repository: &lt;a href="https://github.com/zio/zio-actors"&gt;https://github.com/zio/zio-actors&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;README: &lt;a href="https://github.com/zio/zio-actors/blob/master/README.md"&gt;https://github.com/zio/zio-actors/blob/master/README.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Documentation: &lt;a href="https://zio.dev/zio-actors/"&gt;https://zio.dev/zio-actors/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Resume</title><link>https://www.softinio.com/resume/</link><pubDate>Sun, 08 Feb 2026 09:20:00 -0800</pubDate><guid>https://www.softinio.com/resume/</guid><description>&lt;h1 id="salar-rahmanian"&gt;Salar Rahmanian&lt;/h1&gt;
&lt;h2 id="my-location"&gt;My Location&lt;/h2&gt;
&lt;p&gt;San Francisco Bay Area, California&lt;/p&gt;
&lt;h2 id="profile"&gt;Profile&lt;/h2&gt;
&lt;p&gt;I have been developing software since the age of eleven.&lt;/p&gt;
&lt;p&gt;I have extensive experience:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Programming in:&lt;/em&gt; Java, Scala, Python and Swift&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Databases:&lt;/em&gt; Oracle, Postgresql, MySQL, IBM DB2&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Frameworks:&lt;/em&gt; Spring and Hibernate (Java), Akka / Akka-http (Scala), Typelevel (Scala), FastAPI (Python), Langchain(Python), Django (Python), Flask (Python)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;OS:&lt;/em&gt; NixOS, Linux, Unix (Solaris, Aix)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Other:&lt;/em&gt; Apache Spark (Databricks), Redis, Kafka, RabbitMQ, Apache Nifi, Terraform, Google Cloud (Vertex AI, Document AI, Dialogflow, BigQuery)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="domain-experience"&gt;Domain Experience&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Healthcare&lt;/li&gt;
&lt;li&gt;Building data pipelines&lt;/li&gt;
&lt;li&gt;Building High Volume Billing platforms (In particular interconnect billing for cell phone providers)&lt;/li&gt;
&lt;li&gt;Extensive domain knowledge of the job posting and matching and shift scheduling&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="experience"&gt;Experience&lt;/h2&gt;
&lt;h3 id="founding-software-engineer-annex-risk-2026-present"&gt;Founding Software Engineer, Annex Risk: 2026-present&lt;/h3&gt;
&lt;p&gt;Heads down building great things with great people using my favorite programming language, Scala 😎&lt;/p&gt;</description></item><item><title>Using Stable And Unstable Nix/NixOS Channels Together</title><link>https://www.softinio.com/til/using-stable-and-unstable-nix-channels-together/</link><pubDate>Sat, 03 May 2025 00:00:00 +0000</pubDate><guid>https://www.softinio.com/til/using-stable-and-unstable-nix-channels-together/</guid><description>&lt;p&gt;For one of my servers that is running NixOS I have been using the stable channel for all packages. However I wanted for one package to use the version of the package that the unstable channel had and had to learn how to do it.&lt;/p&gt;
&lt;p&gt;I am using flakes and this is what I originally had as my input:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-nix" data-lang="nix"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;inputs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;nixpkgs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;github:NixOS/nixpkgs/nixos-24.11&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I added the unstable channel as an input:&lt;/p&gt;</description></item><item><title>The Data Surrender Trap: How Enterprises Are Losing Control in the AI Gold Rush—and the Simple Fix</title><link>https://www.softinio.com/post/the-data-surrender-trap/</link><pubDate>Sat, 26 Apr 2025 18:07:52 -0800</pubDate><guid>https://www.softinio.com/post/the-data-surrender-trap/</guid><description>&lt;p&gt;
 &lt;img src="https://www.softinio.com/post/the-data-surrender-trap/TheDataSurrenderTrap.svg"
 alt="The Data Surrender Trap"
 loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Generative AI has lit a fire under every product road-map. Faced with “ship it yesterday” pressure, many teams reach for a turnkey vendor: upload data, call an API, launch the feature. It works—until the bill comes due.&lt;/p&gt;
&lt;p&gt;Handing raw customer data to a third party introduces two long-term headaches:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Governance and compliance risk - once data leaves your perimeter, you lose direct control over how long it&amp;rsquo;s stored, where it resides, and who can see it. A single mis-configuration or model-training clause could violate GDPR, HIPAA, or internal policy.&lt;/li&gt;
&lt;li&gt;Technical debt - the day you need to swap providers, migrate regions, or delete a customer record, you discover tight coupling in schemas, pipelines, and security controls that were never designed for portability.&lt;/li&gt;
&lt;li&gt;Technical debt - having to synchronize data between multiple vendors and your own systems, which can lead to data inconsistencies and increased complexity.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="best-practices-bring-the-ai-to-the-data-not-the-data-to-the-ai"&gt;Best practices: bring the AI to the data, not the data to the AI&lt;/h2&gt;
&lt;p&gt;Enterprise architects have converged on four guard-rails for safe, future-proof AI:&lt;/p&gt;</description></item><item><title>PostgreSQL: collation version mismatch</title><link>https://www.softinio.com/til/postgresql-collation-version-mismatch/</link><pubDate>Sun, 28 Jul 2024 00:00:00 +0000</pubDate><guid>https://www.softinio.com/til/postgresql-collation-version-mismatch/</guid><description>&lt;p&gt;I run my own instance of PeerTube which uses PostgreSQL as its database. When I tried to record my latest video, I got an error message that said:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;[3397851] WARNING: database &amp;#34;peertube&amp;#34; has a collation version mismatch
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;I had never seen this error before, so I did some research to figure out what was going on. It turns out that this error occurs when the collation version of the database does not match the collation version of the server. In my case, the collation version of the database was 2.38, while the collation version of the server was 2.39.&lt;/p&gt;</description></item><item><title>Migrating my markdown notes from Obsidian to Apple Notes</title><link>https://www.softinio.com/til/migrating-my-markdown-notes-from-obsidian-to-apple-notes/</link><pubDate>Sun, 03 Mar 2024 00:00:00 +0000</pubDate><guid>https://www.softinio.com/til/migrating-my-markdown-notes-from-obsidian-to-apple-notes/</guid><description>&lt;p&gt;So I wanted to migrate my markdown notes from Obsidian to Apple Notes. Apple Notes did not support import from markdown. I also wanted to maintain the folder structure.&lt;/p&gt;
&lt;p&gt;For every file I also wanted to maintain the title of the note. I wanted to prepend the title to the HTML file so that when I import the HTML file to Apple Notes, the title is correctly set. I did this by adding the file name (without the extension) as an &lt;code&gt;h1&lt;/code&gt; tag to the HTML file.&lt;/p&gt;</description></item><item><title>Converting HTML to Markdown using Markdownify</title><link>https://www.softinio.com/til/converting-html-to-markdown-using-markdownify/</link><pubDate>Tue, 26 Dec 2023 00:00:00 +0000</pubDate><guid>https://www.softinio.com/til/converting-html-to-markdown-using-markdownify/</guid><description>&lt;p&gt;I had some HTML content that I wanted to convert to markdown.&lt;/p&gt;
&lt;p&gt;The simplest tool I found to do this effectively was a python utility called &lt;a href="https://pypi.org/project/markdownify/"&gt;Markdownify&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I used Nix Shell to install it:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nix-shell -p python311Packages.markdownify
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And to do the conversion I just did:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;markdownify myfile.html &amp;gt; myfile.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;where &lt;code&gt;myfile.html&lt;/code&gt; is the name of the file I wanted to convert and &lt;code&gt;myfile.md&lt;/code&gt; in the name of the markdown file it got converted to.&lt;/p&gt;</description></item><item><title>Configuring Github Pages With a Custom Domain</title><link>https://www.softinio.com/til/configuring-github-pages-with-a-custom-domain/</link><pubDate>Sat, 14 Jan 2023 16:45:33 -0800</pubDate><guid>https://www.softinio.com/til/configuring-github-pages-with-a-custom-domain/</guid><description>&lt;p&gt;To setup my custom domain I went through the following steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;em&gt;Verify Domain:&lt;/em&gt; I followed &lt;a href="https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/verifying-your-custom-domain-for-github-pages"&gt;these steps&lt;/a&gt; to verify. Note that this was done using my GitHub accounts settings and not the repositories settings.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Configuring my subdomain:&lt;/em&gt; Next I configured my subdomain to be used as my custom domain with GitHub pages by following &lt;a href="https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site#configuring-a-subdomain"&gt;these steps&lt;/a&gt; which involved adding a CNAME record to my DNS settings with my domain registrar. Note that as I was using a subdomain adding a CNAME record was all that was needed (however if I was to use an apex domain, I would have needed to add A and AAAA records too pointing to GitHub&amp;rsquo;s ip addresses).&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Add CNAME file:&lt;/em&gt; You need to add a file called &lt;code&gt;CNAME&lt;/code&gt; to the root of your generated static site that contains your host name only (i.e. for this site &lt;code&gt;til.softinio&lt;/code&gt;). As I use Hugo, I put this in the &lt;code&gt;static&lt;/code&gt; directory as when the site is created it will be put in the root. Here is an &lt;a href="https://github.com/softinio/til/blob/main/static/CNAME"&gt;example&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Configuring GitHub Pages:&lt;/em&gt; Go to your repositories settings and select pages. Enter your domain name, save it and click check. Tick the box to enforce &lt;code&gt;https&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="notes"&gt;Notes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;This TIL does not cover setting up GitHub actions to build and deploy your code. Here is a &lt;a href="https://github.com/softinio/til/tree/main/.github/workflows"&gt;sample&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;You need to have your site deployed at least once so that the &lt;code&gt;gh-pages&lt;/code&gt; branch is created so that you can set the site source branch in your repositories pages settings.&lt;/li&gt;
&lt;li&gt;To make sure your GitHub actions is able to create the &lt;code&gt;gh-pages&lt;/code&gt; branch, go to your repositories settings, then click &lt;code&gt;Actions&lt;/code&gt; then &lt;code&gt;General&lt;/code&gt; and under the &lt;code&gt;workflow permissions&lt;/code&gt; section make sure the &lt;code&gt;read and write permissions&lt;/code&gt; is selected and saved.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="references"&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gohugo.io/hosting-and-deployment/hosting-on-github/"&gt;Hugo Documentation for hosting on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Announcing My New Site for Great Technical Video Content</title><link>https://www.softinio.com/post/announcing-my-new-site-for-great-technical-video-content/</link><pubDate>Mon, 22 Nov 2021 18:07:52 -0800</pubDate><guid>https://www.softinio.com/post/announcing-my-new-site-for-great-technical-video-content/</guid><description>&lt;h2 id="announcing-watchsoftiniocom"&gt;Announcing &lt;a href="https://watch.softinio.com"&gt;watch.softinio.com&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I am thrilled to announce my new video website &lt;a href="https://watch.softinio.com"&gt;watch.softinio.com&lt;/a&gt;, a place for great technical talk content ad free and free from commercial sponsorship.&lt;/p&gt;
&lt;p&gt;As many of you know I used to organize meetup/technical talks in the bay area (and later virtually online since the start of the pandemic) in the past. To get the ball rolling with some content, you can now watch a selection of the technical talks that were done at meetups I had arranged. This collection includes some of the greatest speakers from the Scala, Nix, Elasticsearch and Functional Programming world whom I had the honor of hosting.&lt;/p&gt;</description></item><item><title>All Good Things Come to an End</title><link>https://www.softinio.com/archived/all-good-things-come-to-an-end/</link><pubDate>Wed, 14 Apr 2021 12:03:44 -0700</pubDate><guid>https://www.softinio.com/archived/all-good-things-come-to-an-end/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; margin-bottom: 0.25rem; height: 0; overflow: hidden;"&gt;
 &lt;iframe src="https://www.youtube-nocookie.com/embed/1CU5UPi7STk"
 title="YouTube Video"
 style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
 allowfullscreen&gt;
 &lt;/iframe&gt;
&lt;/div&gt;
&lt;p class="video-fallback"&gt;&lt;a href="https://www.youtube.com/watch?v=1CU5UPi7STk" target="_blank" rel="noopener"&gt;▶ Watch on YouTube&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After having spent the last seven years organizing technical talks at several meetups I have decided to step down and move on. It is an end of an era for me, but I am excited about what&amp;rsquo;s next.&lt;/p&gt;
&lt;p&gt;I want to take this opportunity to thank all of my co-organizers, all of the speakers I hosted and all the attendees for supporting my efforts to help all of us learn from each other and be a community.&lt;/p&gt;</description></item><item><title>Unicomp New Model M Keyboard</title><link>https://www.softinio.com/post/unicomp-new-model-m-keyboard/</link><pubDate>Fri, 18 Dec 2020 20:08:42 -0800</pubDate><guid>https://www.softinio.com/post/unicomp-new-model-m-keyboard/</guid><description>&lt;p&gt;

 &lt;picture&gt;
 &lt;source srcset="https://www.softinio.com/post/unicomp-new-model-m-keyboard/unicomp_new_model_m_hu_177077c8c6af1952.webp" type="image/webp" /&gt;
 &lt;img src="https://www.softinio.com/post/unicomp-new-model-m-keyboard/unicomp_new_model_m_hu_4fa4414529114682.png"
 alt="Unicomp Model M"
 width="640" height="480"
 loading="eager" fetchpriority="high" /&gt;
 &lt;/picture&gt;
&lt;/p&gt;
&lt;p&gt;Unicomp new Model M keyboard is the latest version of the classic and fabulous IBM Model M keyboard that came out earlier this year. This blog post is my unboxing and review of this timeless keyboard.&lt;/p&gt;
&lt;p&gt;My favorite keyboard of all time was the &lt;a href="https://en.wikipedia.org/wiki/Model_M_keyboard"&gt;IBM Model M keyboard&lt;/a&gt;. Through out the 1980s and the 1990s I would exclusively use this keyboard. In fact as I type this blog post I can confirm I still have 3 of them in my garage back in London, England.&lt;/p&gt;</description></item><item><title>Introduction to Zio Actors</title><link>https://www.softinio.com/post/introduction-to-zio-actors/</link><pubDate>Sun, 01 Nov 2020 14:14:21 -0800</pubDate><guid>https://www.softinio.com/post/introduction-to-zio-actors/</guid><description>&lt;p&gt;

 &lt;picture&gt;
 &lt;source srcset="https://www.softinio.com/post/introduction-to-zio-actors/ZIO_hu_5e7abc2694463537.webp 780w, https://www.softinio.com/post/introduction-to-zio-actors/ZIO_hu_1e40d5b6867f0de5.webp 1560w"
 sizes="(max-width: 830px) calc(100vw - 3rem), 780px"
 type="image/webp" /&gt;
 &lt;img src="https://www.softinio.com/post/introduction-to-zio-actors/ZIO_hu_7fb8c61bcaacc43c.png"
 alt="ZIO"
 width="780" height="318"
 loading="eager" fetchpriority="high" /&gt;
 &lt;/picture&gt;
&lt;/p&gt;
&lt;p&gt;In this post I am going to do a quick introduction to using the &lt;a href="https://zio.github.io/zio-actors/"&gt;ZIO Actors&lt;/a&gt;, a library that implements the Actor model using Scala and ZIO a library for asynchroneous and concurrent programming.&lt;/p&gt;
&lt;p&gt;Before reading this post it is recommended that you read my two earlier posts &lt;a href="https://www.softinio.com/post/introduction-to-the-actor-model/"&gt;Introduction to the Actor Model&lt;/a&gt; and &lt;a href="https://www.softinio.com/post/introduction-to-akka-typed-using-scala/"&gt;Introduction to Akka Typed Using Scala&lt;/a&gt; as I have assumed the reader will be familiar with the concepts discussed in those posts. Some basic knowledge of &lt;a href="https://zio.dev"&gt;ZIO&lt;/a&gt; is assumed.&lt;/p&gt;</description></item><item><title>Introduction to Akka Typed Using Scala</title><link>https://www.softinio.com/post/introduction-to-akka-typed-using-scala/</link><pubDate>Sat, 24 Oct 2020 20:32:41 -0700</pubDate><guid>https://www.softinio.com/post/introduction-to-akka-typed-using-scala/</guid><description>&lt;p&gt;
 &lt;img src="https://www.softinio.com/post/introduction-to-akka-typed-using-scala/akka_logo.svg"
 alt="akka"
 loading="eager" fetchpriority="high" /&gt;
&lt;/p&gt;
&lt;p&gt;In this post I am going to do a quick introduction to using the Akka Typed toolkit that implements the Actor model using Scala. As part of this post I will be developing a simple application using Akka. My goal is to highlight what its like to develop applications using Akka and how to get started with it. I will be following up this post with more posts diving into Akka in more details and exploring more of its features and patterns you can use to solve concurrent and distributed applications.&lt;/p&gt;</description></item><item><title>Introduction to the Actor Model</title><link>https://www.softinio.com/post/introduction-to-the-actor-model/</link><pubDate>Sun, 04 Oct 2020 11:23:12 -0700</pubDate><guid>https://www.softinio.com/post/introduction-to-the-actor-model/</guid><description>&lt;p&gt;

 &lt;picture&gt;
 &lt;source srcset="https://www.softinio.com/post/introduction-to-the-actor-model/introduction_to_the_actor_model_hu_f64da33bd343762b.webp 780w, https://www.softinio.com/post/introduction-to-the-actor-model/introduction_to_the_actor_model_hu_f54e2708b7a58cda.webp 1560w"
 sizes="(max-width: 830px) calc(100vw - 3rem), 780px"
 type="image/webp" /&gt;
 &lt;img src="https://www.softinio.com/post/introduction-to-the-actor-model/introduction_to_the_actor_model_hu_10e8b84f8882e391.png"
 alt="Actors"
 width="780" height="378"
 loading="lazy" /&gt;
 &lt;/picture&gt;
&lt;/p&gt;
&lt;p&gt;My first proper computer was an IBM PC clone with an Intel 486 processor. It had a button on it called &lt;code&gt;turbo&lt;/code&gt; that when you pushed it would run the processor at double the speed. I say proper as before that I had started my computer journey with a Sinclair ZX Spectrum (48k Ram) and a Commodore 64 (64k Ram) hence didn&amp;rsquo;t consider them as serious contenders for this post. It has been a really exciting ride watching hardware and software evolve together. The interesting observation has been that as faster more powerful hardware has come out, software has been quick to grab all the extra speed and resources the new hardware provides.&lt;/p&gt;</description></item><item><title>Scale By The Bay 2018 San Francisco</title><link>https://www.softinio.com/post/scale-by-the-bay-2018-san-francisco/</link><pubDate>Thu, 02 May 2019 18:30:40 -0700</pubDate><guid>https://www.softinio.com/post/scale-by-the-bay-2018-san-francisco/</guid><description>&lt;p&gt;One of the highlights of 2018 was attending and being part of the Scale By the bay 2018 conference in San Francisco. This by far was the best conference I have ever attended.&lt;/p&gt;
&lt;p&gt;

 &lt;picture&gt;
 &lt;source srcset="https://www.softinio.com/post/scale-by-the-bay-2018-san-francisco/scalebythebay_2018_header_hu_e053b36e60fe72df.webp 780w, https://www.softinio.com/post/scale-by-the-bay-2018-san-francisco/scalebythebay_2018_header_hu_861eb0c463e11226.webp 1560w"
 sizes="(max-width: 830px) calc(100vw - 3rem), 780px"
 type="image/webp" /&gt;
 &lt;img src="https://www.softinio.com/post/scale-by-the-bay-2018-san-francisco/scalebythebay_2018_header_hu_2a8998d54da42144.jpg"
 alt="Scale By the Bay 2018"
 width="780" height="780"
 loading="eager" fetchpriority="high" /&gt;
 &lt;/picture&gt;
&lt;/p&gt;
&lt;p&gt;from left: &lt;a href="https://twitter.com/dickwall"&gt;Dick Wall&lt;/a&gt;, &lt;a href="https://twitter.com/SalarRahmanian"&gt;Salar Rahmanian&lt;/a&gt;, &lt;a href="https://twitter.com/odersky"&gt;Martin Odersky (Creator of Scala)&lt;/a&gt;, &lt;a href="https://twitter.com/ChiefScientist"&gt;Alexy Khrabrov&lt;/a&gt;, &lt;a href="https://twitter.com/jodersky"&gt;Jakob Odersky &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The conference had 3 tracks covering the functional programming, reactive programming and data science topics. All the talks were of high quality made even better by highly intelligent audience made up of the most talented stars of our industry.&lt;/p&gt;</description></item><item><title>Moving from Homebrew to Nix Package Manager</title><link>https://www.softinio.com/post/moving-from-homebrew-to-nix-package-manager/</link><pubDate>Sat, 16 Feb 2019 18:30:40 -0700</pubDate><guid>https://www.softinio.com/post/moving-from-homebrew-to-nix-package-manager/</guid><description>&lt;p&gt;As all my friends, colleagues and followers know I am very big on functional programming, so when I heard about nixOS and the nix package manager (A Purely Functional package manager) I really wanted to find out more about it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Quote from&lt;/strong&gt; &lt;a href="https://nixos.org/nix/"&gt;Nix&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Nix is a powerful package manager for Linux and other Unix systems that makes package management reliable and reproducible. It provides atomic upgrades and rollbacks, side-by-side installation of multiple versions of a package, multi-user package management and easy setup of build environments.&lt;/p&gt;</description></item><item><title>PyBay 2018 San Francisco</title><link>https://www.softinio.com/post/pybay-2018-san-francisco/</link><pubDate>Thu, 25 Oct 2018 18:30:40 -0700</pubDate><guid>https://www.softinio.com/post/pybay-2018-san-francisco/</guid><description>&lt;p&gt;

 &lt;picture&gt;
 &lt;source srcset="https://www.softinio.com/post/pybay-2018-san-francisco/PyBay_2018_Start_hu_1fa1a84a8b66346f.webp" type="image/webp" /&gt;
 &lt;img src="https://www.softinio.com/post/pybay-2018-san-francisco/PyBay_2018_Start_hu_1b053ba37347574c.png"
 alt="PyBay 2018"
 width="450" height="338"
 loading="eager" fetchpriority="high" /&gt;
 &lt;/picture&gt;
&lt;/p&gt;
&lt;p&gt;As you read in my &lt;a href="https://www.softinio.com/post/life-changes-and-announcing-sfbayareatech/"&gt;last blog&lt;/a&gt;
I was lucky enough to finally move to the bay area. If you know me you will
know that I am passionate about Scala and Python. To me being a master of these
two language and functional programming I can rule the world. So it goes
without saying that as soon as I arrived one of the first things I did was to
become an active member of the San Francisco Python community and attended my very
first PyBay 2018.&lt;/p&gt;</description></item><item><title>Life changes and announcing SFBayAreaTech</title><link>https://www.softinio.com/archived/announcing-sfbayareatech/</link><pubDate>Fri, 10 Aug 2018 07:29:10 -0700</pubDate><guid>https://www.softinio.com/archived/announcing-sfbayareatech/</guid><description>&lt;h4 id="update-since-writing-this-blog-i-have-changed-jobs-and-sfbayareatech-has-changed-to"&gt;Update: Since writing this blog, I have changed jobs and SFBayAreaTech has changed to &lt;a href="https://www.sfbayareatechies.com"&gt;https://www.sfbayareatechies.com&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;2018 has been a fabulous year so far. Me and &lt;a href="https://www.rahmanian.xyz/post/goodbye-virginia-and-hello-san-fransisco-bay-area/"&gt;family moved to the San Francisco bay area&lt;/a&gt; realizing my life long dream and our family goals.&lt;/p&gt;
&lt;p&gt;It is absolutely an awesome experience living in the Bay Area amongst so many super smart techies and great startups. On arrival I had two initial goals, namely, meet everyone in tech and make friends and find a new awesome job with a startup that has a great future and potential solving problems that line up well with my interests and technical interests.&lt;/p&gt;</description></item><item><title>Migrating from Pelican to Hugo</title><link>https://www.softinio.com/archived/migrating-from-pelican-to-hugo/</link><pubDate>Sun, 29 Nov 2015 07:16:53 -0500</pubDate><guid>https://www.softinio.com/archived/migrating-from-pelican-to-hugo/</guid><description>&lt;p&gt;In this post I will discuss the steps I took to migrate my blog from &lt;a href="http://blog.getpelican.com/"&gt;Pelican&lt;/a&gt; to &lt;a href="http://gohugo.io/"&gt;Hugo&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="goal"&gt;Goal&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;Original Blog&lt;/th&gt;
 &lt;th&gt;New Blog&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Static site generator&lt;/td&gt;
 &lt;td&gt;&lt;a href="http://blog.getpelican.com/"&gt;Pelican&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;a href="http://gohugo.io/"&gt;Hugo&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Hosting&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://www.linode.com/"&gt;Linode&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://aws.amazon.com/s3/"&gt;Amazon S3&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Deployment Strategy&lt;/td&gt;
 &lt;td&gt;Manual using git&lt;/td&gt;
 &lt;td&gt;Automated using &lt;a href="http://wercker.com/"&gt;Wercker&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Source Control&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://bitbucket.org/"&gt;bitbucket&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://github.com/softinio/softinio.com"&gt;GitHub&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="installing-hugo"&gt;Installing Hugo&lt;/h2&gt;
&lt;p&gt;I do all of my development on an Apple Macbook Pro so I used homebrew to install Hugo:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew install hugo
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="creating-my-project"&gt;Creating my project&lt;/h2&gt;
&lt;p&gt;Its up to you how you organize your project, but as I am a Go Language developer and Hugo is built using Go I have created a folder for this project here:&lt;/p&gt;</description></item><item><title>Using pyenv for Python projects</title><link>https://www.softinio.com/post/using-pyenv-for-python-projects/</link><pubDate>Mon, 13 Apr 2015 09:06:03 -0500</pubDate><guid>https://www.softinio.com/post/using-pyenv-for-python-projects/</guid><description>&lt;p&gt;Using &lt;a href="https://github.com/yyuu/pyenv"&gt;pyenv&lt;/a&gt; to manage your virtual environments makes working on multiple projects, each using a different version of python a breeze.&lt;/p&gt;
&lt;p&gt;I do all my development on an Apple Macbook running Yosemite and my production environment is a VPS from &lt;a href="https://www.linode.com"&gt;Linode&lt;/a&gt; running &lt;a href="https://www.centos.org"&gt;CentOS 7&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here some simple notes on how I setup and use &lt;a href="https://github.com/yyuu/pyenv"&gt;pyenv&lt;/a&gt; :&lt;/p&gt;
&lt;h2 id="installing-on-mac-os-x"&gt;Installing on Mac OS X&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Install using &lt;a href="http://brew.sh"&gt;homebrew&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew install pyenv pyenv-virtualenv
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Update your shell profile (.bashrc or .zshrc) adding the following to it (and restart your terminal)&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>About</title><link>https://www.softinio.com/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.softinio.com/about/</guid><description>&lt;p&gt;I, &lt;a href="https://www.softinio.com"&gt;Salar Rahmanian&lt;/a&gt;, am a software engineer based in San Francisco Bay Area, California.&lt;/p&gt;
&lt;p&gt;I have been developing software since the age of eleven. My current passion is functional programming, big data and distributed systems.&lt;/p&gt;
&lt;p&gt;I am particularly enthusiastic about the Scala Programming language and NixOS and technologies such as Apache Nifi, Kafka, Spark and Akka / Pekko.&lt;/p&gt;
&lt;p&gt;I contribute to open source projects when time allows.&lt;/p&gt;
&lt;p&gt;At work, I am currently working as a Data Engineer using spark and Databricks alot. For full details of my experience have a look at my &lt;a href="https://www.softinio.com/resume"&gt;Resume&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Search</title><link>https://www.softinio.com/search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.softinio.com/search/</guid><description/></item><item><title>Subscribe</title><link>https://www.softinio.com/subscribe/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.softinio.com/subscribe/</guid><description>&lt;p&gt;You can subscribe to my blog via my email &lt;a href="https://notes.softinio.com"&gt;newsletter&lt;/a&gt; on Substack and receive notifications when I publish new blogs or have other announcements to make.&lt;/p&gt;
&lt;p&gt;Your email will only be used for this purpose and nothing else, so no spam or advertising or anything just content.&lt;/p&gt;
&lt;p align="center"&gt;
 &lt;iframe src="https://notes.softinio.com/embed" width="480" height="150" style="border:1px solid #EEE; background:white;" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;
&lt;/p&gt;
&lt;p&gt;You can also subscribe to my &lt;a href="https://www.softinio.com/index.xml"&gt;atom / rss feed&lt;/a&gt; or follow me on &lt;a href="https://social.softinio.com/@softinio"&gt;Mastodon&lt;/a&gt; or &lt;a href="https://x.com/SalarRahmanian"&gt;X (formerly known as Twitter)&lt;/a&gt; too.&lt;/p&gt;</description></item></channel></rss>