<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Clarence Siew</title><description>Clarence Siew&apos;s personal projects</description><link>https://www.clarencesiew.com</link><language>en</language><atom:link href="https://www.clarencesiew.com/projects.xml" rel="self" type="application/rss+xml"/><item><title>Tab Shelf</title><link>https://www.clarencesiew.com/projects/tab-shelf</link><guid isPermaLink="true">https://www.clarencesiew.com/projects/tab-shelf</guid><description>Manage your Chrome tabs from the side panel</description><content:encoded>&lt;p&gt;An extension for Google Chrome to let you view and manage your tabs from the side panel. It provides easy access to various controls to sleep tabs, regroup/ungroup tabs, and close them. It was designed to look as close as possible as to what a native implementation of vertical tabs in Chrome would look like (with some creative liberties for the sake of usability).&lt;/p&gt;</content:encoded><author>Clarence Siew</author><slug>tab-shelf</slug></item><item><title>BiscuitWM</title><link>https://www.clarencesiew.com/projects/biscuitwm</link><guid isPermaLink="true">https://www.clarencesiew.com/projects/biscuitwm</guid><description>Experimental window manager based on the Python version of TinyWM</description><content:encoded>&lt;p&gt;A minimalist X11 window manager for Linux/Unix systems written in Python. It&apos;s largely an experimental project. It&apos;s based on &lt;a href=&quot;https://github.com/mackstann/tinywm&quot;&gt;TinyWM&lt;/a&gt; and &lt;a href=&quot;https://github.com/h-ohsaki/xpywm&quot;&gt;xpywm&lt;/a&gt;.&lt;/p&gt;</content:encoded><author>Clarence Siew</author><slug>biscuitwm</slug></item><item><title>Brioche</title><link>https://www.clarencesiew.com/projects/brioche</link><guid isPermaLink="true">https://www.clarencesiew.com/projects/brioche</guid><description>UI library for React projects</description><content:encoded>&lt;p&gt;Brioche is a React UI component library based off the reusable components and stylesheets that were developed via my personal website over the years. It is currently under heavy development and may not have all commonly-used UI components.&lt;/p&gt;
&lt;p&gt;It is the successor to &lt;a href=&quot;/projects/cardo&quot;&gt;Cardo&lt;/a&gt;, my previous attempt at building a UI component library.&lt;/p&gt;</content:encoded><author>Clarence Siew</author><slug>brioche</slug></item><item><title>Cardo</title><link>https://www.clarencesiew.com/projects/cardo</link><guid isPermaLink="true">https://www.clarencesiew.com/projects/cardo</guid><description>Experimental client-side frontend library</description><content:encoded>&lt;p&gt;A client-side web frontend library (more so a collection of functions to enable single-page web apps). The previous version of my site and my &apos;Hoddle&apos; Javascript window manager contain the foundational work for this library. The initial version of my upcoming podcast app used this library extensively.&lt;/p&gt;
&lt;p&gt;It does not add additional syntactic sugar to the existing HTML syntax of a site (unlike &lt;em&gt;Vue.js&lt;/em&gt; or &lt;em&gt;Svelte&lt;/em&gt;). It is largely made up of utility functions written in vanilla JavaScript with some JQuery thrown-in (for stuff like changing out contents of an element, performing data calls, etc). My own custom utility CSS stylesheets also work hand-in-hand with this library to provide pre-designed UI elements.&lt;/p&gt;
&lt;p&gt;Cardo&apos;s CSS utility library survived beyond &lt;em&gt;Cast&apos;s&lt;/em&gt; transition to Vue.js. The latest iteration of it powers this site. This CSS utility library along with the custom React components in use on this site are in the process of being converted into a reusable library.&lt;/p&gt;</content:encoded><author>Clarence Siew</author><slug>cardo</slug></item><item><title>Cast</title><link>https://www.clarencesiew.com/projects/cast</link><guid isPermaLink="true">https://www.clarencesiew.com/projects/cast</guid><description>Podcast web app</description><content:encoded>&lt;p&gt;A podcast web app that allows you to manage your podcast subscriptions and bookmarks with an intuitive, well-organised interface.&lt;/p&gt;
&lt;p&gt;It used the Node.js runtime with the Express framework for its backend API service.&lt;/p&gt;
&lt;p&gt;The initial version of Cast used my own custom frontend library, Cardo. However I later switched to the Vue.js framework.&lt;/p&gt;
&lt;p&gt;This project came very close to a public release just before I got my first full-time job. I am considering the possibility of rebuilding this (with drastically better architectural decisions).&lt;/p&gt;</content:encoded><author>Clarence Siew</author><slug>cast</slug></item><item><title>Hoddle</title><link>https://www.clarencesiew.com/projects/hoddle</link><guid isPermaLink="true">https://www.clarencesiew.com/projects/hoddle</guid><description>Toy window manager within a web page</description><content:encoded>&lt;p&gt;An experimental client-side JavaScript frontend library to turn a web page into a desktop-like environment. It allows for moveable and resizeable windows.&lt;/p&gt;
&lt;p&gt;It was supposed to become a framework, but it was abandoned in favour of &lt;a href=&quot;/projects/cardo&quot;&gt;Cardo&lt;/a&gt;, and later &lt;a href=&quot;/projects/brioche&quot;&gt;Brioche&lt;/a&gt;.&lt;/p&gt;</content:encoded><author>Clarence Siew</author><slug>hoddle</slug></item><item><title>Podzol</title><link>https://www.clarencesiew.com/projects/podzol</link><guid isPermaLink="true">https://www.clarencesiew.com/projects/podzol</guid><description>Podcasts in your terminal</description><content:encoded>&lt;p&gt;A podcast app that lives in your terminal. It stores indexes of your podcast subscriptions and episode data in JSON files. It&apos;s written in Python and uses the pygame library for audio streaming functionality. Limitations with pygame and cross-platform compatibiltiy (Linux and macOS) led me to start working on a web-based podcast client (which was initially codenamed Podzol).&lt;/p&gt;</content:encoded><author>Clarence Siew</author><slug>podzol</slug></item><item><title>md2magic</title><link>https://www.clarencesiew.com/projects/md2magic</link><guid isPermaLink="true">https://www.clarencesiew.com/projects/md2magic</guid><description>Experimental toy static site generator</description><content:encoded>&lt;p&gt;A static site generator written in Python. Ideal for blogs. Work on a rewrite had been on-and-off until 2020.&lt;/p&gt;</content:encoded><author>Clarence Siew</author><slug>md2magic</slug></item><item><title>Antorca Linux</title><link>https://www.clarencesiew.com/projects/antorca-linux</link><guid isPermaLink="true">https://www.clarencesiew.com/projects/antorca-linux</guid><description>More polished rebranding and continuation of illume OS</description><content:encoded>&lt;p&gt;A Debian-based Linux distribution designed for a simple out of the box experience. Ideal for Windows users transitioning to Linux. It used the Xfce desktop environment.&lt;/p&gt;
&lt;p&gt;A variant based on Ubuntu with Flatpak integration was in the works shortly before its abandonment. I also considered reviving Antorca Linux with my custom window manager, &lt;a href=&quot;/projects/biscuitwm&quot;&gt;BiscuitWM&lt;/a&gt;, at one point.&lt;/p&gt;</content:encoded><author>Clarence Siew</author><slug>antorca-linux</slug></item><item><title>TransitSafe</title><link>https://www.clarencesiew.com/projects/transitsafe</link><guid isPermaLink="true">https://www.clarencesiew.com/projects/transitsafe</guid><description>Public transport alerts for the little things</description><content:encoded>&lt;p&gt;An app and service that lets commuters report incidents (crime, hygiene, medical emergencies, etc) on public transport. It used the Public Transport Victoria APIs to get data on public transport services and station metadata.&lt;/p&gt;</content:encoded><author>Clarence Siew</author><slug>transitsafe</slug></item><item><title>Website</title><link>https://www.clarencesiew.com/projects/website</link><guid isPermaLink="true">https://www.clarencesiew.com/projects/website</guid><description>This very website</description><content:encoded>&lt;h3 id=&quot;preframeworkera&quot;&gt;Pre-framework era&lt;/h3&gt;
&lt;h4 id=&quot;prehistoric2018&quot;&gt;Pre-historic (????-2018)&lt;/h4&gt;
&lt;p&gt;I only recently recalled that I hosted very early versions of my website on Google Firebase before migrating to GitHub Pages. I also used to build websites using Google Sites (they were effectively wikis), but they have since been lost to time.&lt;/p&gt;
&lt;h4 id=&quot;version1020182022&quot;&gt;Version 1.0 (2018-2022)&lt;/h4&gt;
&lt;p&gt;Initial implementation using plain HTML, CSS, and JavaScript. Early revisions were not single-page apps, and often swung wildly between brutalist web design and skeumorphic design. The final revision of version 1.0 used JavaScript to inject templated components like the navigation bar and site footer (which is the &lt;em&gt;opposite&lt;/em&gt; of what most modern JavaScript SPA frameworks do). This project used my now-abandoned frontend library, &lt;em&gt;Cardo&lt;/em&gt;, to perform these injections. &lt;a href=&quot;https://csiew.github.io/archive/index.html&quot;&gt;Click here to visit this version of the site.&lt;/a&gt;&lt;/p&gt;
&lt;h4 id=&quot;version11202024092020&quot;&gt;Version 1.1 (2020-24/09/2020)&lt;/h4&gt;
&lt;p&gt;Stripped back to just a single landing page. It had nothing more than links to my social media accounts and side projects. &lt;a href=&quot;https://csiew.github.io/index.html&quot;&gt;Click here to visit this version of the site.&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;vueera&quot;&gt;Vue era&lt;/h3&gt;
&lt;h4 id=&quot;version2x2409202019062021&quot;&gt;Version 2.x (24/09/2020-19/06/2021)&lt;/h4&gt;
&lt;p&gt;A complete overhaul of the website as a playground to learn Vue. Like version 1.0, this iteration of the site went through drastical design changes throughout its lifetime. The CSS stylesheets I developed for this site largely came from my abandoned podcast app project. &lt;a href=&quot;https://v2.clarencesiew.com&quot;&gt;Click here to visit this version of the site.&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;reactera&quot;&gt;React era&lt;/h3&gt;
&lt;h4 id=&quot;version3x1906202128072021&quot;&gt;Version 3.x (19/06/2021-28/07/2021)&lt;/h4&gt;
&lt;p&gt;Another overhaul of the website, but using React this time. I wanted to practice using functional components rather than class components, and to take advantage of React Hooks. The CSS from the previous site was getting huge and unwieldy too, so it&apos;s high-time to simplify it.&lt;/p&gt;
&lt;p&gt;This was the most short-lived major version of the site. Its custom components and CSS stylesheets formed the basis of the &lt;a href=&quot;https://github.com/csiew/brioche&quot;&gt;Brioche&lt;/a&gt; UI library for React. The following version of this site was the first to use the library rather than internal custom components.&lt;/p&gt;
&lt;h4 id=&quot;version4x280720212102021&quot;&gt;Version 4.x (28/07/2021-2/10/2021)&lt;/h4&gt;
&lt;p&gt;It was identical in appearance, layout, and content to version 3.0, however it was the first version to use the &lt;a href=&quot;https://github.com/csiew/brioche&quot;&gt;Brioche&lt;/a&gt; UI library. &lt;a href=&quot;https://v4.clarencesiew.com&quot;&gt;Click here to visit this version of the site.&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;svelteera&quot;&gt;Svelte era&lt;/h3&gt;
&lt;h4 id=&quot;version5x210202113092022&quot;&gt;Version 5.x (2/10/2021-13/09/2022)&lt;/h4&gt;
&lt;p&gt;The website was migrated to yet another frontend framework, Svelte. The original plan was to use this version as a chance to learn Tailwind CSS as well, but I just couldn&apos;t help playing around with some custom CSS to achieve some mid-2010s skeuomorphic aesthetic.&lt;/p&gt;
&lt;p&gt;This version also had a couple of neobrutalist phases too, but as of version 5.10.0, skeuomorphism is back. Unlike the previous version of the website, version 5.0 did not use the Brioche UI library.&lt;/p&gt;
&lt;h3 id=&quot;nextjsera&quot;&gt;NextJS era&lt;/h3&gt;
&lt;h4 id=&quot;version6x13092022present&quot;&gt;Version 6.x (13/09/2022-Present)&lt;/h4&gt;
&lt;p&gt;I went from one statically-generated/server-side generation framework to another. As I was working on new side projects that relied heavily on React, I thought it would be nice to once again use my website as a React playground. I still wanted to use static generation for blog posts, so at first I looked at using a plugin for Vite, but I wasn&apos;t able to figure out the configuration.&lt;/p&gt;
&lt;p&gt;I gradually began moving out a lot of content stored as Markdown and JSON files (which required making a new Git commit and re-running a deploy of the site every time I want to modify some content) into Firebase. I also built a whole admin CMS app into the site for my own use to write and publish new blog posts, and manage listed projects and their information. In fact this description update for Version 6.x of this site&apos;s era was written using this very CMS!&lt;/p&gt;
&lt;p&gt;Well, eventually the CMS was removed. It didn&apos;t quite make sense to have static content pages that dynamically fetched data from a database while also statically generating some pages. I eventually added a &lt;a href=&quot;/now&quot;&gt;Now&lt;/a&gt; page to describe what I&apos;ve been up to more recently. It&apos;s also meant for short notes that don&apos;t quite have the same finesse as what a blog post would have.&lt;/p&gt;</content:encoded><author>Clarence Siew</author><slug>website</slug></item><item><title>illume OS</title><link>https://www.clarencesiew.com/projects/illume-os</link><guid isPermaLink="true">https://www.clarencesiew.com/projects/illume-os</guid><description>Linux distribution targeted at older hardware</description><content:encoded>&lt;p&gt;A lightweight Debian-based Linux distribution designed for old hardware (e.g. 32-bit x86 PCs). It used IceWM as its window manager in version 1.x, before transitioning to the LXDE desktop environment from version 2.x onwards.&lt;/p&gt;</content:encoded><author>Clarence Siew</author><slug>illume-os</slug></item></channel></rss>