<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>blog.soards.me</title><description>A blog by David Soards about software development and whatever else he feels like writing about.</description><link>https://blog.soards.me/</link><item><title>Bringing Claude Code&apos;s Output Styles to Pi</title><link>https://blog.soards.me/posts/bringing-claude-codes-output-styles-to-pi/</link><guid isPermaLink="true">https://blog.soards.me/posts/bringing-claude-codes-output-styles-to-pi/</guid><description>Building pi-voice, a lightweight Pi extension for switching between concise, proactive, explanatory, and learning output styles.</description><pubDate>Wed, 07 Oct 2026 12:00:00 GMT</pubDate></item><item><title>Building an Ecommerce Website for a Farm to Table Business</title><link>https://blog.soards.me/posts/building-an-ecommerce-website-for-a-farm-to-table-business/</link><guid isPermaLink="true">https://blog.soards.me/posts/building-an-ecommerce-website-for-a-farm-to-table-business/</guid><description>Duck Duck Beet needed a way for their customers to order online and a homepage that would clearly explain their unique business to new customers. Woocommerce and Vector Art to the rescue.</description><pubDate>Wed, 01 Nov 2017 18:21:39 GMT</pubDate></item><item><title>Building “Decide for Me” Permissions for Pi with Jev</title><link>https://blog.soards.me/posts/building-decide-for-me-permissions-for-pi-with-jev/</link><guid isPermaLink="true">https://blog.soards.me/posts/building-decide-for-me-permissions-for-pi-with-jev/</guid><description>Building pi-jev-gate, a small Pi extension that combines local permission rules with Jev judgments.</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Designing a UI for Designers but also Non-Designers</title><link>https://blog.soards.me/posts/designing-a-ui-for-designers-but-also-non-designers/</link><guid isPermaLink="true">https://blog.soards.me/posts/designing-a-ui-for-designers-but-also-non-designers/</guid><description>My UX process behind the design of a digital signage content editor.</description><pubDate>Mon, 18 Feb 2019 01:34:43 GMT</pubDate></item><item><title>Designing the Comic Creator Mobile App</title><link>https://blog.soards.me/posts/designing-the-comic-creator-mobile-app/</link><guid isPermaLink="true">https://blog.soards.me/posts/designing-the-comic-creator-mobile-app/</guid><description>The first step in creating a page of sequential art is to draw what is called a thumbnail. A thumbnail is a small image that shows the basic panel layout of a page and the general placements of the…</description><pubDate>Mon, 14 Aug 2017 19:01:00 GMT</pubDate></item><item><title>Easy Forms for VueJS with Formspree</title><link>https://blog.soards.me/posts/easy-forms-for-vuejs-with-formspree/</link><guid isPermaLink="true">https://blog.soards.me/posts/easy-forms-for-vuejs-with-formspree/</guid><description>Add a form to a VueJS website using Formspree.</description><pubDate>Fri, 19 Apr 2024 05:10:00 GMT</pubDate></item><item><title>Easy Headless Wordpress with Nuxt &amp; Netlify</title><link>https://blog.soards.me/posts/easy-headless-wordpress-with-nuxt-netlify/</link><guid isPermaLink="true">https://blog.soards.me/posts/easy-headless-wordpress-with-nuxt-netlify/</guid><description>Setting up Wordpress as a Headless CMS for use with Nuxt and Netlify</description><pubDate>Sat, 12 Sep 2020 18:06:53 GMT</pubDate></item><item><title>Easy Headless Wordpress with Nuxt &amp; Netlify II</title><link>https://blog.soards.me/posts/easy-headless-wordpress-with-nuxt-netlify-part-ii/</link><guid isPermaLink="true">https://blog.soards.me/posts/easy-headless-wordpress-with-nuxt-netlify-part-ii/</guid><description>Vue, Nuxt and Tailwind</description><pubDate>Tue, 15 Sep 2020 13:56:31 GMT</pubDate></item><item><title>Easy Headless Wordpress with Nuxt &amp; Netlify III</title><link>https://blog.soards.me/posts/easy-headless-wordpress-with-nuxt-netlify-part-iii/</link><guid isPermaLink="true">https://blog.soards.me/posts/easy-headless-wordpress-with-nuxt-netlify-part-iii/</guid><description>Deploying with Netlify and adding a build hook to our CMS</description><pubDate>Wed, 16 Sep 2020 21:50:30 GMT</pubDate></item><item><title>Figma Config 2026 Recap</title><link>https://blog.soards.me/posts/figma-config-2026-recap/</link><guid isPermaLink="true">https://blog.soards.me/posts/figma-config-2026-recap/</guid><description>A personal recap of Figma Config 2026, from Figma&apos;s product launch to AI workflows, PM onboarding, and designing trust at Waymo.</description><pubDate>Tue, 30 Jun 2026 16:00:00 GMT</pubDate></item><item><title>Make a custom night mode toggle w/React &amp; CSS Variables</title><link>https://blog.soards.me/posts/make-a-custom-night-mode-toggle-w-react-css-variables/</link><guid isPermaLink="true">https://blog.soards.me/posts/make-a-custom-night-mode-toggle-w-react-css-variables/</guid><description>This post is the first in a short series where I will detail the things I learned while designing and...</description><pubDate>Sun, 25 Aug 2019 19:48:09 GMT</pubDate></item><item><title>Make a flickering Neon SVG animation from scratch w/ Illustrator, React &amp; Emotion</title><link>https://blog.soards.me/posts/make-a-flickering-neon-svg-animation-from-scratch-w-illustrator-react-emotion/</link><guid isPermaLink="true">https://blog.soards.me/posts/make-a-flickering-neon-svg-animation-from-scratch-w-illustrator-react-emotion/</guid><description>This is Part 2 in a short series where I am detailing the things I learned while designing and develo...</description><pubDate>Tue, 03 Sep 2019 12:06:05 GMT</pubDate></item><item><title>My MacBook is a client now</title><link>https://blog.soards.me/posts/my-macbook-is-a-client-now/</link><guid isPermaLink="true">https://blog.soards.me/posts/my-macbook-is-a-client-now/</guid><description>Why I moved development to a dedicated Mac mini, and how Tailscale, SSH, Herdr, Zed, and Codex Desktop make the remote workflow practical.</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Quick Tip: Breaking Vue&apos;s Reactivity</title><link>https://blog.soards.me/posts/quicktip-break-vue-reactivity/</link><guid isPermaLink="true">https://blog.soards.me/posts/quicktip-break-vue-reactivity/</guid><description>Sometimes it is useful to copy a value and purposely break reactivity in VueJS.</description><pubDate>Thu, 07 Mar 2024 05:10:00 GMT</pubDate></item><item><title>Simplify Dark Mode w/ Radix Colors &amp; Tailwind</title><link>https://blog.soards.me/posts/radix-colors-with-tailwind/</link><guid isPermaLink="true">https://blog.soards.me/posts/radix-colors-with-tailwind/</guid><description>Using Radix Colors along with Tailwind makes handling dark mode much easier.</description><pubDate>Thu, 22 Feb 2024 05:10:00 GMT</pubDate></item><item><title>Resize Image on Save in Django Before Sending to Amazon S3 - No Lambda Function Required</title><link>https://blog.soards.me/posts/resize-image-on-save-in-django-before-sending-to-amazon-s3/</link><guid isPermaLink="true">https://blog.soards.me/posts/resize-image-on-save-in-django-before-sending-to-amazon-s3/</guid><description>How to dynamically resize an image on save before uploading it to your AWS S3 bucket. No Lambda function required.</description><pubDate>Fri, 25 Dec 2020 05:00:00 GMT</pubDate></item><item><title>Quick Tip: Setup a local MySQL in a docker container</title><link>https://blog.soards.me/posts/setup-local-mysql-in-docker/</link><guid isPermaLink="true">https://blog.soards.me/posts/setup-local-mysql-in-docker/</guid><description>Quickly get an instance of MySQL running to use for local development without having to install MySQL on your system.</description><pubDate>Sun, 14 Jul 2024 05:10:00 GMT</pubDate></item><item><title>Quick Tip: Setup PostgreSQL w/ pgvector in a docker container</title><link>https://blog.soards.me/posts/setup-postgres-pgvector-in-docker/</link><guid isPermaLink="true">https://blog.soards.me/posts/setup-postgres-pgvector-in-docker/</guid><description>Quickly get an instance of PostgreSQL with pgvector running to use for local development of a RAG pipeline.</description><pubDate>Thu, 28 Nov 2024 05:10:00 GMT</pubDate></item><item><title>Setup a VPS on Hetzner Cloud</title><link>https://blog.soards.me/posts/setup-vps-on-hetzner-cloud/</link><guid isPermaLink="true">https://blog.soards.me/posts/setup-vps-on-hetzner-cloud/</guid><description>How to setup a secure VPS on Hetzner with SSH, firewall, reverse-proxy, git, Docker, and more.</description><pubDate>Tue, 09 Apr 2024 05:10:00 GMT</pubDate></item><item><title>Switch from NGINX to Caddy</title><link>https://blog.soards.me/posts/switch-from-nginx-to-caddy/</link><guid isPermaLink="true">https://blog.soards.me/posts/switch-from-nginx-to-caddy/</guid><description>How to switch from NGINX to Caddy and simplify your server setup.</description><pubDate>Wed, 11 Sep 2024 07:10:00 GMT</pubDate></item><item><title>Use More System Fonts</title><link>https://blog.soards.me/posts/use-more-system-fonts/</link><guid isPermaLink="true">https://blog.soards.me/posts/use-more-system-fonts/</guid><description>Why I used regular system fonts instead of web fonts for my new blog. They&apos;re easy. They&apos;re fast. And they can look really nice.</description><pubDate>Thu, 15 Feb 2024 05:10:00 GMT</pubDate></item></channel></rss>