<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
      <title>Florin Salasan</title>
      <link>https://florinsalasan.dev</link>
      <description>Software developer based in the GTA. Writing about building software in the open, systems, and books.</description>
      <generator>Zola</generator>
      <language>en</language>
      <atom:link href="https://florinsalasan.dev/rss.xml" rel="self" type="application/rss+xml"/>
      <lastBuildDate>Tue, 20 Aug 2024 00:00:00 +0000</lastBuildDate>
      <item>
          <title>Personal Portfolio &amp; Chronicle</title>
          <pubDate>Tue, 20 Aug 2024 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://florinsalasan.dev/projects/portfolio/</link>
          <guid>https://florinsalasan.dev/projects/portfolio/</guid>
          <description xml:base="https://florinsalasan.dev/projects/portfolio/">&lt;h2 id=&quot;my-personal-portfolio-site&quot;&gt;My Personal Portfolio Site&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;moving-from-typescript-next-js-to-zola&quot;&gt;Moving from TypeScript&#x2F;Next.js to Zola&lt;&#x2F;h3&gt;
&lt;p&gt;Originally, this portfolio was built with Next.js, Tailwind CSS, and TypeScript. While that stack worked as a starting point, I realized I did not enjoy writing or reading TypeScript and verbose JSX for what is fundamentally a personal publication, project showcase, and reading log.&lt;&#x2F;p&gt;
&lt;p&gt;Rebuilding the site with &lt;strong&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.getzola.org&#x2F;&quot;&gt;Zola&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; (a fast, single-binary Rust static site generator) brought the joy back to maintaining my personal corner of the web:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Zero TypeScript or Node runtime:&lt;&#x2F;strong&gt; Pure Markdown content, clean Tera templates, and modern semantic CSS variables.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Editorial aesthetic:&lt;&#x2F;strong&gt; Designed around warm paper tones in light mode and deep espresso in dark mode, with automatic system preference detection.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Interactive CN Tower:&lt;&#x2F;strong&gt; Preserved the clickable Toronto CN Tower illustration on the right margin to smoothly scroll back to the top of any page.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Built-in Search &amp;amp; Filtering:&lt;&#x2F;strong&gt; Instant filtering across projects, blog tags, and my personal &lt;a href=&quot;&#x2F;bookshelf&#x2F;&quot;&gt;Bookshelf&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;background-on-the-original-version&quot;&gt;Background on the Original Version&lt;&#x2F;h3&gt;
&lt;p&gt;When I first built the site, I looked through sites showcased on &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;create.t3.gg&#x2F;en&#x2F;t3-collection&quot;&gt;t3.gg&lt;&#x2F;a&gt; and found &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;imjosh.dev&quot;&gt;Josh’s personal site&lt;&#x2F;a&gt; to use as inspiration. From there, I added a Projects showcase, tag filtering, a Bookshelf section, and project detail pages with screenshot galleries.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>CHIP-8 Interpreter &amp; Emulators</title>
          <pubDate>Mon, 19 Aug 2024 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://florinsalasan.dev/projects/chip-8/</link>
          <guid>https://florinsalasan.dev/projects/chip-8/</guid>
          <description xml:base="https://florinsalasan.dev/projects/chip-8/">&lt;h2 id=&quot;chip-8-interpreter&quot;&gt;CHIP-8 Interpreter&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;the-tech-stack&quot;&gt;The Tech Stack&lt;&#x2F;h3&gt;
&lt;p&gt;This emulator was written fully in &lt;strong&gt;C&lt;&#x2F;strong&gt; and used the &lt;strong&gt;SDL2&lt;&#x2F;strong&gt; framework for the graphics library; it was then compiled with &lt;strong&gt;CMake&lt;&#x2F;strong&gt; using a guide I found online.&lt;&#x2F;p&gt;
&lt;p&gt;I wanted to use C again since I hadn’t used it in a long time, instead opting to use higher-level languages like Python and JavaScript. So I wanted to see if I still knew how to write C effectively. After finishing up this CHIP-8 interpreter, I still don’t know how good my C is since I avoided using pointers—not intentionally, but because I never ran into a scenario where I believed that it would have been necessary to use them. Looking back, this may have created issues since tests from various test ROMs all pass, but the interpreter is still buggy and not working properly on certain games.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;moving-to-rust-for-next-emulators&quot;&gt;Moving to Rust for Next Emulators&lt;&#x2F;h3&gt;
&lt;p&gt;For the second emulator, I wanted to use &lt;strong&gt;Rust&lt;&#x2F;strong&gt;. This is for two main reasons:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;I enjoy working with new toolsets and seeing what they can offer in comparison to other ones.&lt;&#x2F;li&gt;
&lt;li&gt;For Rust specifically, I liked the idea that the language is a lot stricter when it comes to mutability and memory allocation, especially in comparison with C where you can just shoot yourself in the foot and the compiler doesn’t even blink.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;I’m still getting the hang of writing Rust code, but so far I am enjoying it—even the detours to understand why certain things are the way they are and encountering Rust features such as lifetimes along the way. I also found the way Rust sets up unit testing to be really intuitive and easy to work with, which has so far made it far easier to incorporate tests compared to the CHIP-8 emulator.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Workout Tracking App</title>
          <pubDate>Sat, 17 Aug 2024 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://florinsalasan.dev/projects/workout-tracker/</link>
          <guid>https://florinsalasan.dev/projects/workout-tracker/</guid>
          <description xml:base="https://florinsalasan.dev/projects/workout-tracker/">&lt;h2 id=&quot;a-workout-tracking-app&quot;&gt;A Workout Tracking App&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;overview&quot;&gt;Overview&lt;&#x2F;h3&gt;
&lt;p&gt;A Flutter app meant to allow users to track their weightlifting workouts and see how they progress over time. Basic tracking of weight and reps is included, with historical charts and routine templates in active development.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;the-tech-stack&quot;&gt;The Tech Stack&lt;&#x2F;h3&gt;
&lt;p&gt;After looking at the pros and cons of different cross-platform options, I settled on &lt;strong&gt;Flutter&lt;&#x2F;strong&gt; and &lt;strong&gt;Dart&lt;&#x2F;strong&gt; for the ease of multi-platform mobile development and consistent UI rendering.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Snip to Clipboard (OCR Utility)</title>
          <pubDate>Fri, 16 Aug 2024 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://florinsalasan.dev/projects/snip-to-clipboard/</link>
          <guid>https://florinsalasan.dev/projects/snip-to-clipboard/</guid>
          <description xml:base="https://florinsalasan.dev/projects/snip-to-clipboard/">&lt;h2 id=&quot;snip-to-clipboard&quot;&gt;Snip to Clipboard&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;overview&quot;&gt;Overview&lt;&#x2F;h3&gt;
&lt;p&gt;A set of three Python scripts that act as:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;A screen region snipping tool (&lt;code&gt;tk&lt;&#x2F;code&gt;),&lt;&#x2F;li&gt;
&lt;li&gt;A text extractor from an image using &lt;strong&gt;Tesseract OCR&lt;&#x2F;strong&gt;, and&lt;&#x2F;li&gt;
&lt;li&gt;An all-in-one shortcut command that pipes the snipped screen region directly into your system clipboard as plain text.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;It works seamlessly on a single display and includes coordinate adjustments for notched MacBook displays.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Discord Reminder Bot</title>
          <pubDate>Thu, 15 Aug 2024 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://florinsalasan.dev/projects/discord-reminder-bot/</link>
          <guid>https://florinsalasan.dev/projects/discord-reminder-bot/</guid>
          <description xml:base="https://florinsalasan.dev/projects/discord-reminder-bot/">&lt;h2 id=&quot;discord-reminder-bot&quot;&gt;Discord Reminder Bot&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;overview&quot;&gt;Overview&lt;&#x2F;h3&gt;
&lt;p&gt;A bot built in &lt;strong&gt;Go&lt;&#x2F;strong&gt; (&lt;code&gt;discordgo&lt;&#x2F;code&gt;) that sends reminders about daily tasks in a user’s personal Discord server. Built as a practical way to explore Go concurrency, scheduling, and the Discord API.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>First Blog Post: Learning by Doing &amp; Reading Goals</title>
          <pubDate>Sat, 09 Mar 2024 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://florinsalasan.dev/blog/thoughts/</link>
          <guid>https://florinsalasan.dev/blog/thoughts/</guid>
          <description xml:base="https://florinsalasan.dev/blog/thoughts/">&lt;h2 id=&quot;some-ramblings&quot;&gt;Some Ramblings&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;books-read&quot;&gt;Books Read&lt;&#x2F;h3&gt;
&lt;p&gt;As I mentioned on the homepage, I have set a goal of reading 52 books this year, averaging out to a book a week. I am currently behind the pace I should be at to reach the goal, but I have still made some decent progress. Here are some of the titles I’ve read so far:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Animal Farm&lt;&#x2F;em&gt; by George Orwell&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Million Dollar Weekend&lt;&#x2F;em&gt; by Noah Kagan&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Effortless&lt;&#x2F;em&gt; by Greg McKeown&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Ultralearning&lt;&#x2F;em&gt; by Scott Young&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;reflections&quot;&gt;Reflections&lt;&#x2F;h3&gt;
&lt;p&gt;There are some other books that I have not listed, but a common thread of advice I have noticed from the various “self-help” and “personal improvement” books is: &lt;strong&gt;just start&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;This advice goes in the face of the majority of the way I have learned up to this point. In high school and university, it was always theory first followed by attempting to apply it, rather than running into a wall repeatedly when trying to accomplish a task and then being introduced to the theory that helps you solve it. Admittedly, I think this method of learning is applied far more easily to software development rather than topics like math, but &lt;em&gt;Ultralearning&lt;&#x2F;em&gt; attempts to make the case for all subjects.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;applications-to-my-personal-life&quot;&gt;Applications to My Personal Life&lt;&#x2F;h3&gt;
&lt;p&gt;In any case, I am trying to apply this to some of the topics I want to learn more about. The first area I’m trying to learn by doing rather than by theory is improving my programming ability. The first step I’ve taken into this approach is by having at least one daily GitHub contribution. I have not missed a day from November 16, 2023, to the date of writing. This hasn’t always been actual code being pushed, but in most cases it has been.&lt;&#x2F;p&gt;
&lt;p&gt;My main thinking behind this is doing my best to escape the so-called “tutorial hell,” where the only projects one starts and ends are those that have step-by-step tutorials, rather than through the ability to mix and match the knowledge I have to make new things that I want to build.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Second Blog Post</title>
          <pubDate>Sun, 18 Feb 2024 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://florinsalasan.dev/blog/second/</link>
          <guid>https://florinsalasan.dev/blog/second/</guid>
          <description xml:base="https://florinsalasan.dev/blog/second/">&lt;h2 id=&quot;another-post&quot;&gt;Another Post&lt;&#x2F;h2&gt;
&lt;p&gt;This is the second blog post. Testing continues.
Originally written to verify that unique tags render cleanly in the filter bar and tag previews.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;subsection&quot;&gt;Subsection&lt;&#x2F;h3&gt;
&lt;p&gt;More dispatches coming soon as I build out projects in the open.&lt;&#x2F;p&gt;
</description>
      </item>
    </channel>
</rss>
