<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Make All The Things Web on Andrew Smith</title>
<link>https://www.donielsmith.com/</link>
<description>Recent content on Andrew Smith</description>
<language>en-US</language>
<lastBuildDate>Tue, 27 Jan 2026 00:00:00 GMT</lastBuildDate>
<atom:link href="https://www.donielsmith.com/index.xml" rel="self" type="application/rss+xml"/>
<item>
<title>Supabase JavaScript library is not a ORM or a query builder, it&apos;s a RESTful API URL constructor</title>
<link>https://www.donielsmith.com/blog/supabase-js-not-orm-or-query-builder/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/supabase-js-not-orm-or-query-builder/</guid>
<pubDate>Tue, 27 Jan 2026 00:00:00 GMT</pubDate>
<description>supabase-js constructs a restful API url for the server to make request to resources you are requesting.</description>
</item>
<item>
<title>First things I do when setting up a Supabase project</title>
<link>https://www.donielsmith.com/blog/first-things-i-do-when-setting-up-a-supabase-project/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/first-things-i-do-when-setting-up-a-supabase-project/</guid>
<pubDate>Wed, 07 Jan 2026 00:00:00 GMT</pubDate>
<description>First things I do when setting up a Supabase project</description>
</item>
<item>
<title>Integrating Supabase Storage with Payload CMS Using S3 Compatibility</title>
<link>https://www.donielsmith.com/blog/integrating-supabase-storage-with-payload-cms-using-s3-compatibility/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/integrating-supabase-storage-with-payload-cms-using-s3-compatibility/</guid>
<pubDate>Mon, 14 Jul 2025 00:00:00 GMT</pubDate>
<description>Integrating Supabase Storage with Payload CMS Using S3 Compatibility</description>
</item>
<item>
<title>Performing full text search with the Supabase Python library</title>
<link>https://www.donielsmith.com/blog/supabase-full-text-search-in-python/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/supabase-full-text-search-in-python/</guid>
<pubDate>Tue, 23 Apr 2024 00:00:00 GMT</pubDate>
<description>Doing full text search with Supabase inside of your Python project</description>
</item>
<item>
<title>Your database is the source of truth</title>
<link>https://www.donielsmith.com/blog/your-database-is-the-source-of-truth/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/your-database-is-the-source-of-truth/</guid>
<pubDate>Sat, 17 Jun 2023 00:00:00 GMT</pubDate>
<description>Your database is the source of truth and not your schema migrations</description>
</item>
<item>
<title>Writing more, procrastinate less</title>
<link>https://www.donielsmith.com/blog/writing-more/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/writing-more/</guid>
<pubDate>Sun, 12 Jun 2022 00:00:00 GMT</pubDate>
<description>Write more, spend less time procrastinating</description>
</item>
<item>
<title>Using PowerShell to remove a directory and its content</title>
<link>https://www.donielsmith.com/blog/2021-05-25-using-powershell-to-remove-a-directory-and-its-content/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/2021-05-25-using-powershell-to-remove-a-directory-and-its-content/</guid>
<pubDate>Fri, 21 May 2021 00:00:00 GMT</pubDate>
<description>PowerShell is a wonderful piece of software once you start to learn the correct commands.</description>
</item>
<item>
<title>How to use dotenv with Svelte 3</title>
<link>https://www.donielsmith.com/blog/2020-05-11-how-to-use-dotenv-with-svelte-3/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/2020-05-11-how-to-use-dotenv-with-svelte-3/</guid>
<pubDate>Mon, 11 May 2020 00:00:00 GMT</pubDate>
<description>Separate your environment configuration by using dotenv, these can save you the hassle of having a configration object store inside of your project repository.</description>
</item>
<item>
<title>Creating a reusable component with Svelte 3</title>
<link>https://www.donielsmith.com/blog/2020-04-22-creating-a-reusable-component-with-svelte-3/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/2020-04-22-creating-a-reusable-component-with-svelte-3/</guid>
<pubDate>Wed, 22 Apr 2020 00:00:00 GMT</pubDate>
<description>Svelte 3 has a small API surface and allows you to create components as simple as you want. You can also create complex components with a bit more effort. Reusable components is one of the goal&apos;s of all major frontend framework and Svelte is no stranger to this. When I talk about reusable components I mean components that you can define what action it should take and how it looks.</description>
</item>
<item>
<title>Props vs event dispatcher with Svelte 3</title>
<link>https://www.donielsmith.com/blog/2020-04-21-props-vs-event-dispatcher-svelte-3/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/2020-04-21-props-vs-event-dispatcher-svelte-3/</guid>
<pubDate>Tue, 21 Apr 2020 00:00:00 GMT</pubDate>
<description>Depending on what other component libraries you&apos;ve used, you may be used to handling events by passing callback functions to component properties, or using a special event syntax – Svelte supports both, though one is usually more appropriate than the other depending on your situation.  This post explains both ways.</description>
</item>
<item>
<title>Multiple zsh configs in iTerm</title>
<link>https://www.donielsmith.com/blog/2020-04-12-multiple-zsh-config-in-iterm/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/2020-04-12-multiple-zsh-config-in-iterm/</guid>
<pubDate>Sun, 12 Apr 2020 00:00:00 GMT</pubDate>
<description>Having multiple zsh configs are useful when you need a different profile for work and home or in my case, for screen recording.</description>
</item>
<item>
<title>Switching from Dropbox to OneDrive</title>
<link>https://www.donielsmith.com/blog/2020-03-11-switching-from-dropbox-to-onedrive/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/2020-03-11-switching-from-dropbox-to-onedrive/</guid>
<pubDate>Wed, 11 Mar 2020 00:00:00 GMT</pubDate>
<description>The process of switching from one cloud storage provider to another.</description>
</item>
<item>
<title>Writing Process</title>
<link>https://www.donielsmith.com/blog/writing-process/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/writing-process/</guid>
<pubDate>Sun, 08 Mar 2020 00:00:00 GMT</pubDate>
<description>The steps I take when writing a post for my blog.</description>
</item>
<item>
<title>How to bulk delete Firebase authentication users</title>
<link>https://www.donielsmith.com/blog/2019-12-11-how-to-bulk-delete-firebase-authentication-users/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/2019-12-11-how-to-bulk-delete-firebase-authentication-users/</guid>
<pubDate>Wed, 11 Dec 2019 00:00:00 GMT</pubDate>
<description>Deleting multiple users from the Firebase authentication system.</description>
</item>
<item>
<title>Protecting routes using Regex in Amber Framework</title>
<link>https://www.donielsmith.com/blog/2019-01-12-protecting-routes-using-regex-in-amber-framework/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/2019-01-12-protecting-routes-using-regex-in-amber-framework/</guid>
<pubDate>Sat, 12 Jan 2019 00:00:00 GMT</pubDate>
<description>How to protect your complex routes using regex in the Amber Framework.</description>
</item>
<item>
<title>Rendering a different template with a Controller in Amber</title>
<link>https://www.donielsmith.com/blog/2019-01-10-rendering-a-different-template-with-a-controller-in-amber/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/2019-01-10-rendering-a-different-template-with-a-controller-in-amber/</guid>
<pubDate>Thu, 10 Jan 2019 00:00:00 GMT</pubDate>
<description>An explaination of how template rendering works in the Amber Framework.</description>
</item>
<item>
<title>How to use Google Analytics with Sapper</title>
<link>https://www.donielsmith.com/blog/2018/05/20/how-to-use-google-analytics-with-sapper/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/2018/05/20/how-to-use-google-analytics-with-sapper/</guid>
<pubDate>Sun, 20 May 2018 00:00:00 GMT</pubDate>
<description>Adding Google Analytics to any website should be pretty straight forward once you have the code snippet that Google provides you with. But when you want to dynamically populate the actual tracking id it gets a bit harder, especially when using a Universal Javascript framework.</description>
</item>
<item>
<title>Dynamic import in Sapper</title>
<link>https://www.donielsmith.com/blog/2018/05/19/dynamic-imports-in-sapper/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/2018/05/19/dynamic-imports-in-sapper/</guid>
<pubDate>Sat, 19 May 2018 00:00:00 GMT</pubDate>
<description>There are times that you will need to use a library that is purely client side in Sapper and some of these libraries make use of client side properties that are not available on the server. i.e. document</description>
</item>
<item>
<title>Creating a Twitter tweet box with Svelte</title>
<link>https://www.donielsmith.com/blog/2017/09/20/creating-a-twitter-tweet-box-with-svelte/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/2017/09/20/creating-a-twitter-tweet-box-with-svelte/</guid>
<pubDate>Wed, 20 Sep 2017 00:00:00 GMT</pubDate>
<description>Today I want to go about creating a Twitter tweet box with Svelte. But before I start on this, I want to just point out some of the features that the official Twitter tweet box provides.</description>
</item>
<item>
<title>How to do web scraping with Cheerio</title>
<link>https://www.donielsmith.com/blog/2017/08/29/how-to-do-web-scraping-with-cheerio/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/2017/08/29/how-to-do-web-scraping-with-cheerio/</guid>
<pubDate>Tue, 29 Aug 2017 00:00:00 GMT</pubDate>
<description>This past weekend (13 August 2017) I started on a quest to get some data from a cinema website here in Accra, Ghana. I thought this would have been easy, since the data is available publicly. I immediately opened the Chrome web inspector to see some markup like I have not seen in years.</description>
</item>
<item>
<title>Getting started with Svelte</title>
<link>https://www.donielsmith.com/blog/2017/08/02/getting-started-with-svelte/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/2017/08/02/getting-started-with-svelte/</guid>
<pubDate>Wed, 02 Aug 2017 00:00:00 GMT</pubDate>
<description>Svelte is not a framework like the other conventional Javascript frameworks. Svelte is an Ahead Of Time (AOT) compiler, so in the end the code that get shipped is just plain old Javascript with minimal runtime overhead.</description>
</item>
<item>
<title>Refactoring to a service in Trails</title>
<link>https://www.donielsmith.com/blog/2017/03/19/refactoring-to-a-service-in-trails/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/2017/03/19/refactoring-to-a-service-in-trails/</guid>
<pubDate>Sun, 19 Mar 2017 00:00:00 GMT</pubDate>
<description>Since I started working with Trails, I have come to like its approach to a lot of things. I feel its what I have always been looking for in a Node web framework.</description>
</item>
<item>
<title>Social Auth with Trails using hapi and bell</title>
<link>https://www.donielsmith.com/blog/2017/03/10/social-auth-with-trails-using-hapijs-and-bell/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/2017/03/10/social-auth-with-trails-using-hapijs-and-bell/</guid>
<pubDate>Fri, 10 Mar 2017 00:00:00 GMT</pubDate>
<description>This is my first time using Trails and I decided to follow to the guides. However as I continued I wanted to test it out on my own ideas.</description>
</item>
<item>
<title>Passing Static Attributes Down With RactiveJS</title>
<link>https://www.donielsmith.com/blog/2016/06/05/passing-attributes-down-with-ractivejs/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/2016/06/05/passing-attributes-down-with-ractivejs/</guid>
<pubDate>Sun, 05 Jun 2016 00:00:00 GMT</pubDate>
<description>I really like RactiveJS and how the inner workings work most of the time. I recently ran into an situation where I needed a component to behave a particular way and this was a challenge at first but with the help of Rich Harris (creator of RactiveJS) I was able to find a solution.</description>
</item>
<item>
<title>List of Slim 3 middlewares</title>
<link>https://www.donielsmith.com/blog/2015/10/27/list-of-slim3-middlewares/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/2015/10/27/list-of-slim3-middlewares/</guid>
<pubDate>Tue, 27 Oct 2015 00:00:00 GMT</pubDate>
<description>Recently folks have been asking about what middlewares are available for Slim 3. Although Slim 3 is still in RC stage, there have been a number of developers who have decided to create middlewares already.</description>
</item>
<item>
<title>Lazy loading your controller action</title>
<link>https://www.donielsmith.com/blog/2015/08/27/lazy-loading-controller-action/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/2015/08/27/lazy-loading-controller-action/</guid>
<pubDate>Thu, 27 Aug 2015 00:00:00 GMT</pubDate>
<description>In many popular frameworks these days you can lazy load your actions in order to not invoke every action unless it is the one matched that should be dispatched.</description>
</item>
<item>
<title>Why is Slim 3 not so slim anymore</title>
<link>https://www.donielsmith.com/blog/2015/08/01/why-is-slim3-not-so-slim-anymore/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/2015/08/01/why-is-slim3-not-so-slim-anymore/</guid>
<pubDate>Sat, 01 Aug 2015 00:00:00 GMT</pubDate>
<description>There is a common misconception that Slim 3 has plenty of files and is no longer slim. Slim 3 does indeed contain more files than Slim 2 and this has been the result of being more flexible and moving away from the Not Invented Here (NIH) philosophy.</description>
</item>
<item>
<title>Aura Di service aliasing</title>
<link>https://www.donielsmith.com/blog/2015/07/30/aura-di-service-aliasing/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/2015/07/30/aura-di-service-aliasing/</guid>
<pubDate>Thu, 30 Jul 2015 00:00:00 GMT</pubDate>
<description>I have been working on a legacy application and wanted to remove the old process of how it lookup its services from file name and database entry to using a service locator container instead.</description>
</item>
<item>
<title>Slim PHP 101 - Using Laravel config package</title>
<link>https://www.donielsmith.com/blog/2014/04/11/slim-php-101-using-laravel-config-package/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/2014/04/11/slim-php-101-using-laravel-config-package/</guid>
<pubDate>Fri, 11 Apr 2014 00:00:00 GMT</pubDate>
<description>Over the past few years Laravel have become a popular full stack PHP framework and with its latest version (L4) the framework have been componentized.</description>
</item>
<item>
<title>Slim PHP 101 - How to use multiple view parsers</title>
<link>https://www.donielsmith.com/blog/2014/04/10/slim-php-101-how-to-use-multiple-view-parsers/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/2014/04/10/slim-php-101-how-to-use-multiple-view-parsers/</guid>
<pubDate>Thu, 10 Apr 2014 00:00:00 GMT</pubDate>
<description>In this post we will go through setting up Slim to work with multiple view parsers, for this example we will look at using Slim&apos;s PHP view library and the Twig view library.</description>
</item>
<item>
<title>Why no promise AngularJS 1.2.0+</title>
<link>https://www.donielsmith.com/blog/2013/11/20/why-no-promise-angularjs-1-2/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/2013/11/20/why-no-promise-angularjs-1-2/</guid>
<pubDate>Wed, 20 Nov 2013 00:00:00 GMT</pubDate>
<description>In the latest version of AngularJS (1.2.0+) there seem to have been a change which will probably break most app which have in the past relied on the view unwrapping the promise object and showing the results directly in the view.</description>
</item>
<item>
<title>Using Schema Builder with CLI Migrations</title>
<link>https://www.donielsmith.com/blog/2013/07/23/using-schema-builder-with-cli-migrations/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/2013/07/23/using-schema-builder-with-cli-migrations/</guid>
<pubDate>Tue, 23 Jul 2013 00:00:00 GMT</pubDate>
<description>The PHP Framework market landscape has changed recently with the anticipation of Laravel 4, the most expressive PHP Framework to have come out of the techworks.</description>
</item>
<item>
<title>More is coming for MODX</title>
<link>https://www.donielsmith.com/blog/2013/06/14/more-is-coming-for-modx/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/2013/06/14/more-is-coming-for-modx/</guid>
<pubDate>Fri, 14 Jun 2013 00:00:00 GMT</pubDate>
<description>Over the past few months some interesting development have been happening in the MODX community.</description>
</item>
<item>
<title>Yet Another CMS/F Thingy called MODX</title>
<link>https://www.donielsmith.com/blog/2013/04/01/yet-another-cms-f-thingy-called-modx/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/2013/04/01/yet-another-cms-f-thingy-called-modx/</guid>
<pubDate>Mon, 01 Apr 2013 00:00:00 GMT</pubDate>
<description>Some of you might have seen my many rants on Twitter about the state of MODX, I have grown weary and have now decided to fork it.</description>
</item>
<item>
<title>Build Awesome</title>
<link>https://www.donielsmith.com/blog/2013/03/16/build-awesome/</link>
<guid isPermaLink="true">https://www.donielsmith.com/blog/2013/03/16/build-awesome/</guid>
<pubDate>Sat, 16 Mar 2013 00:00:00 GMT</pubDate>
<description>This article is not about building the next rad web app, if you are after that then you might want to go check out some of Drew Wilson&apos;s work, otherwise continue reading.</description>
</item>
</channel>
</rss>
