<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/rss.xsl" type="text/xsl"?><rss version="2.0"><channel><title>Josh Karamuth&apos;s Blog</title><description>My professional home online where I showcase my work as a freelance developer and write about the intersection of technology, product development, and the philosophies that guide my work.</description><link>https://joshkaramuth.com/</link><language>en-us</language><item><title>I Used AWS Cognito for a Startup. I Wouldn&apos;t Do It Again.</title><link>https://joshkaramuth.com/blog/aws-cognito-authentication-startup-nightmare/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/aws-cognito-authentication-startup-nightmare/</guid><description>I let AWS Cognito gaslight me for three weeks so you don&apos;t have to. Here&apos;s the unfiltered autopsy.</description><pubDate>Fri, 10 Jul 2026 00:00:00 GMT</pubDate><category>cognito</category><category>aws</category><category>engineering</category><category>cloud</category></item><item><title>How I Deploy Web Apps With a Single Command</title><link>https://joshkaramuth.com/blog/web-app-deployment/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/web-app-deployment/</guid><description>Discover how Uncloud simplifies Django deployments by letting you manage containers, logs, and services on any server with a single command, no container registry or manual SSH required.</description><pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate><category>app deployment</category><category>configuration management</category><category>ansible</category><category>uncloud</category><category>docker</category><category>devops</category></item><item><title>How I Fixed Frontend-Backend Desync with Hey API and FastAPI</title><link>https://joshkaramuth.com/blog/hey-fast-api-react/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/hey-fast-api-react/</guid><description>Learn how I fixed the problem of keeping a backend API in sync with a front-end application</description><pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate><category>hey api</category><category>fastapi</category><category>python</category><category>typescript</category><category>fullstack</category><category>web development</category></item><item><title>Boto3 Is Gaslighting Me About My Athena Query Parameters</title><link>https://joshkaramuth.com/blog/boto3-athena/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/boto3-athena/</guid><description>If you&apos;re fighting a TYPE_MISMATCH error in Athena even when your types are correct, you&apos;re not crazy. Read this.</description><pubDate>Thu, 13 Nov 2025 00:00:00 GMT</pubDate><category>boto3</category><category>aws</category><category>python</category><category>programming</category><category>backend</category></item><item><title>Wireguard Locked Me Out of My Own Server, and I&apos;m Not Even Mad</title><link>https://joshkaramuth.com/blog/wireguard-scripts/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/wireguard-scripts/</guid><description>So you spun up a shiny new server, slapped Wireguard on it for ALL the privacy, and then... silence. Yeah. Let&apos;s talk about that.</description><pubDate>Tue, 11 Nov 2025 00:00:00 GMT</pubDate><category>linux</category><category>sysadmin</category><category>vpn</category><category>wireguard</category></item><item><title>Python and Typescript for Life</title><link>https://joshkaramuth.com/blog/fullstack-python-typescript/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/fullstack-python-typescript/</guid><description>After years of language-hopping, I found my flow state with Python and TypeScript—here’s why I&apos;m never leaving.</description><pubDate>Mon, 20 Oct 2025 00:00:00 GMT</pubDate><category>python</category><category>typescript</category><category>web development</category><category>fullstack</category></item><item><title>Stop Putting JWTs in LocalStorage. Seriously. Here&apos;s How to Do It Right.</title><link>https://joshkaramuth.com/blog/secure-jwt/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/secure-jwt/</guid><description>If you&apos;re building a web app and dropping JWTs into localStorage, you might be creating a massive security hole without even realizing it.</description><pubDate>Wed, 15 Oct 2025 00:00:00 GMT</pubDate><category>security</category><category>web development</category></item><item><title>Why I Stick With HTMX Even If It Sucks</title><link>https://joshkaramuth.com/blog/htmx-sucks/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/htmx-sucks/</guid><description>While HTMX sucks, it&apos;s still the best option when it comes to building reactive web UIs in 2025</description><pubDate>Fri, 12 Sep 2025 00:00:00 GMT</pubDate><category>htmx</category><category>web development</category><category>alpinejs</category><category>react</category><category>reactjs</category><category>frontend</category></item><item><title>Level Up Your Django Views with the ViewModel Pattern</title><link>https://joshkaramuth.com/blog/django-view-model/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/django-view-model/</guid><description>Here&apos;s how to supercharge your Django templates and make your views squeaky clean with a pattern you&apos;ll wish you&apos;d known about sooner.</description><pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate><category>django</category><category>python</category><category>web development</category></item><item><title>The Ghost in the Migration: Why Your Model&apos;s Methods Disappear</title><link>https://joshkaramuth.com/blog/django-historical-models/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/django-historical-models/</guid><description>Ever had your Django data migration mysteriously fail on a model property that you know exists? Here’s why.</description><pubDate>Mon, 01 Sep 2025 00:00:00 GMT</pubDate><category>django</category><category>web development</category><category>python</category><category>backend</category></item><item><title>How I deploy Python/Django Apps as a Solo Dev</title><link>https://joshkaramuth.com/blog/django-deployment/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/django-deployment/</guid><description>Stop wrestling with complex deployments and learn how I use Ansible, Docker, and Litestream to run Django apps on a secure, self-updating, and ridiculously resilient setup.</description><pubDate>Sun, 24 Aug 2025 00:00:00 GMT</pubDate><category>django</category><category>web development</category><category>sys admin</category><category>ansible</category><category>litestream</category><category>deployment</category></item><item><title>Stop Trusting Your API: How to Build a Bulletproof Frontend with Zod and React Query</title><link>https://joshkaramuth.com/blog/tanstack-zod-dto/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/tanstack-zod-dto/</guid><description>If you&apos;re only using TypeScript interfaces to model API responses, you&apos;re one backend change away from a runtime crash—here&apos;s how to build a truly resilient app with Zod.</description><pubDate>Thu, 21 Aug 2025 00:00:00 GMT</pubDate><category>zod</category><category>zodjs</category><category>tanstack</category><category>react</category><category>react query</category><category>front-end</category><category>web development</category><category>frontend development</category><category>javascript</category><category>typescript</category></item><item><title>On the Fence: My Affair with HTMX and the Enduring Allure of React</title><link>https://joshkaramuth.com/blog/react-vs-htmx/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/react-vs-htmx/</guid><description>After building with React for years, my recent dive into HTMX and AlpineJS has been a masterclass in the trade-offs between radical simplicity and creative freedom.</description><pubDate>Tue, 19 Aug 2025 00:00:00 GMT</pubDate><category>react</category><category>reactjs</category><category>htmx</category><category>frontend</category><category>web development</category><category>programming</category></item><item><title>I Used DynamoDB for 2 Years. Here’s Why I recommend SQL.</title><link>https://joshkaramuth.com/blog/dynamodb-vs-sql/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/dynamodb-vs-sql/</guid><description>After two years using DynamoDB, I’ve concluded that the best database for a million users is often the wrong choice for your first ten.</description><pubDate>Fri, 15 Aug 2025 00:00:00 GMT</pubDate><category>dynamodb</category><category>databases</category><category>sql</category></item><item><title>Nvidia, Kubuntu, and My Reluctant Return to Windows 11</title><link>https://joshkaramuth.com/blog/linux-nvidia-still-sucks/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/linux-nvidia-still-sucks/</guid><description>My latest attempt to make Linux work on a modern Nvidia laptop ended, predictably, with a return to Windows 11.</description><pubDate>Wed, 14 May 2025 00:00:00 GMT</pubDate><category>nvidia</category><category>linux</category><category>rants</category></item><item><title>Web Components: Powerful, Yes. A Joy to Write? Not Quite (Coming from React)</title><link>https://joshkaramuth.com/blog/web-components-vs-react/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/web-components-vs-react/</guid><description>Coming from years of React development, I find Web Components incredibly powerful and standards-based, but writing them can feel surprisingly tedious.</description><pubDate>Mon, 12 May 2025 00:00:00 GMT</pubDate><category>web components</category><category>web standards</category><category>react</category><category>frontend development</category></item><item><title>Break django-admin commands into subcommands</title><link>https://joshkaramuth.com/blog/django-admin-atomic-commands/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/django-admin-atomic-commands/</guid><description>Learn how to organize Django management commands into intuitive subcommand namespaces, making your CLI cleaner and more developer-friendly!</description><pubDate>Sat, 08 Mar 2025 00:00:00 GMT</pubDate><category>python</category><category>django</category></item><item><title>Redundant Linux backups with a single command</title><link>https://joshkaramuth.com/blog/linux-backup/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/linux-backup/</guid><description>Set up military-grade, cost-effective backups with Borgmatic—combining local USB and Hetzner cloud storage—in just 15 minutes, ensuring your data is safe even if your laptop takes a coffee bath.</description><pubDate>Sat, 08 Mar 2025 00:00:00 GMT</pubDate><category>borg</category><category>borgbackup</category><category>borgmatic</category><category>hetzner</category><category>encryption</category><category>backup</category><category>linux</category><category>sysadmin</category></item><item><title>A Battle-Tested Way to Structure React Projects</title><link>https://joshkaramuth.com/blog/reactjs-project-structure/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/reactjs-project-structure/</guid><description>Learn how to structure your React projects with a focus on scalability, maintainability, and team collaboration.</description><pubDate>Mon, 03 Mar 2025 00:00:00 GMT</pubDate><category>reactjs</category><category>frontend development</category><category>javascript</category><category>typescript</category></item><item><title>How to handle 404 errors with htmx in Django</title><link>https://joshkaramuth.com/blog/django-htmx-not-found/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/django-htmx-not-found/</guid><description>Enhance user experience by gracefully handling 404 errors with htmx in Django</description><pubDate>Wed, 12 Feb 2025 00:00:00 GMT</pubDate><category>django</category><category>htmx</category></item><item><title>Why the HTML dialog element sucks</title><link>https://joshkaramuth.com/blog/html-dialog-sucks/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/html-dialog-sucks/</guid><description>Learn why you should implement custom modals instead of relying on dialog</description><pubDate>Tue, 04 Feb 2025 00:00:00 GMT</pubDate><category>dialog</category><category>HTML dialog</category><category>DOM</category><category>html</category><category>web development</category></item><item><title>Build a Reusable Component with Django Cotton and AlpineJS</title><link>https://joshkaramuth.com/blog/django-cotton-alpine-component/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/django-cotton-alpine-component/</guid><description>Learn how to build a reusable component with simple tools</description><pubDate>Tue, 14 Jan 2025 00:00:00 GMT</pubDate><category>django</category><category>python</category><category>django cotton</category><category>alpine</category><category>alpinejs</category><category>javascript</category><category>server side rendering</category></item><item><title>Show Django forms inside a modal using HTMX</title><link>https://joshkaramuth.com/blog/django-htmx-modal-forms/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/django-htmx-modal-forms/</guid><description>Learn how to create and edit models using Django forms inside a modal using HTMX</description><pubDate>Wed, 25 Dec 2024 00:00:00 GMT</pubDate><category>django</category><category>htmx</category><category>django form modal</category><category>django modal</category><category>htmx modal</category><category>django htmx</category></item><item><title>How to show a modal in Django + HTMX</title><link>https://joshkaramuth.com/blog/django-htmx-modal/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/django-htmx-modal/</guid><description>Learn how to show a modal with minimal Javascript in Django + HTMX</description><pubDate>Mon, 16 Dec 2024 00:00:00 GMT</pubDate><category>django</category><category>htmx</category><category>bootstrap</category><category>javascript</category><category>python</category><category>htmx modal</category><category>django htmx</category><category>django htmx modal</category></item><item><title>How and why to run your Docker apps without root</title><link>https://joshkaramuth.com/blog/docker-non-root/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/docker-non-root/</guid><description>Understand the importance of running your apps without root privileges inside your Docker container</description><pubDate>Fri, 25 Oct 2024 00:00:00 GMT</pubDate><category>docker</category><category>containers</category><category>django</category></item><item><title>Automated container deployment without a registry</title><link>https://joshkaramuth.com/blog/deploy-container-no-registry/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/deploy-container-no-registry/</guid><description>Learn how to automate deployment of a containerized Django app without a registry</description><pubDate>Wed, 23 Oct 2024 00:00:00 GMT</pubDate><category>django</category><category>docker</category><category>deployment</category><category>devops</category><category>ansible</category></item><item><title>Docker is better than Podman</title><link>https://joshkaramuth.com/blog/docker-vs-podman/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/docker-vs-podman/</guid><description>I experimented with Podman and realized that Docker is still better</description><pubDate>Tue, 22 Oct 2024 00:00:00 GMT</pubDate><category>docker</category><category>podman</category><category>containers</category><category>linux</category></item><item><title>Understanding Python Decorators thanks to Django</title><link>https://joshkaramuth.com/blog/python-decorators/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/python-decorators/</guid><description>Master Python decorators by dissecting ones provided by Django</description><pubDate>Mon, 14 Oct 2024 00:00:00 GMT</pubDate><category>python</category><category>decorators</category><category>programming</category><category>django</category><category>python django</category></item><item><title>A script to &quot;Modernize&quot; your Linux CLI</title><link>https://joshkaramuth.com/blog/modernize-linux-script/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/modernize-linux-script/</guid><description>Use this script to install modern CLI tools for Linux</description><pubDate>Sun, 13 Oct 2024 00:00:00 GMT</pubDate><category>linux</category><category>fish shell</category><category>shell</category><category>cli</category><category>scripting</category></item><item><title>I moved my blog from Ghost to Astro</title><link>https://joshkaramuth.com/blog/ghost-to-astro/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/ghost-to-astro/</guid><description>Learn about the benefits of publishing with Astro instead of Ghost</description><pubDate>Sat, 12 Oct 2024 00:00:00 GMT</pubDate><category>ghost</category><category>astro</category><category>javascript</category><category>cloudflare</category><category>cloudflare pages</category></item><item><title>Show Django flash messages as toasts with Htmx</title><link>https://joshkaramuth.com/blog/django-messages-toast-htmx/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/django-messages-toast-htmx/</guid><description>Learn how to display Django messages as user friendly toasts with Htmx</description><pubDate>Fri, 11 Oct 2024 00:00:00 GMT</pubDate><category>django</category><category>htmx</category><category>bootstrap</category><category>bootstrap 5</category><category>ui</category></item><item><title>Build an intuitive CLI app with Python argparse</title><link>https://joshkaramuth.com/blog/python-argparse-intuitive-cli/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/python-argparse-intuitive-cli/</guid><description>Learn how to use Python&apos;s built-in argparse library to build an intuitive CLI app</description><pubDate>Thu, 10 Oct 2024 00:00:00 GMT</pubDate><category>python</category><category>argparse</category><category>cli</category><category>command line</category><category>terminal</category></item><item><title>Forward SSH Agent Requests From WSL to Windows</title><link>https://joshkaramuth.com/blog/forward-wsl-ssh-agent-windows/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/forward-wsl-ssh-agent-windows/</guid><description>Learn how to use the built-in Windows ssh-agent from inside your WSL instance</description><pubDate>Thu, 03 Oct 2024 00:00:00 GMT</pubDate><category>windows</category><category>wsl</category><category>ssh</category><category>ssh-agent</category><category>wsl ssh agent forwarding</category></item><item><title>How to implement RESTful routing in Django</title><link>https://joshkaramuth.com/blog/restful-routing-django/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/restful-routing-django/</guid><description>Learn to leverage the REST archicture in a Django app.</description><pubDate>Thu, 19 Sep 2024 00:00:00 GMT</pubDate><category>django</category><category>rest</category><category>http</category></item><item><title>Generate DKIM key pairs in Python</title><link>https://joshkaramuth.com/blog/generate-dkim-key-pairs-python/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/generate-dkim-key-pairs-python/</guid><description>DKIM key pairs are simply RSA key pairs and you can easily generate them in Python.</description><pubDate>Sun, 15 Sep 2024 00:00:00 GMT</pubDate><category>cryptography</category><category>python</category><category>dkim</category><category>rsa</category><category>python</category></item><item><title>Robust Full-Stack Authentication with Django Allauth, React, and React Router</title><link>https://joshkaramuth.com/blog/django-allauth-react/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/django-allauth-react/</guid><description>Learn how to integrate django-allauth with React for a powerful and easy authentication system.</description><pubDate>Wed, 04 Sep 2024 00:00:00 GMT</pubDate><category>reactjs</category><category>django</category><category>allauth</category><category>typescript</category><category>python</category><category>tanstack query</category><category>react query</category><category>react-router</category><category>authentication</category><category>react router</category></item><item><title>Using Django Allauth without Username Field</title><link>https://joshkaramuth.com/blog/django-allauth-without-username-field/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/django-allauth-without-username-field/</guid><description>Learn how to use Django Allauth without a username field in your User model.</description><pubDate>Sun, 01 Sep 2024 00:00:00 GMT</pubDate><category>django</category><category>allauth</category><category>authentication</category></item><item><title>How to Remove Username from Django&apos;s Default User model</title><link>https://joshkaramuth.com/blog/remove-username-django-user-model/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/remove-username-django-user-model/</guid><description>Learn how to allow users to authenticate with your app without a username.</description><pubDate>Fri, 23 Aug 2024 00:00:00 GMT</pubDate><category>django</category><category>django orm</category><category>authentication</category><category>django authentication</category><category>django remove username field</category></item><item><title>Why CSRF token cookies don&apos;t need to be httpOnly</title><link>https://joshkaramuth.com/blog/csrf-token-cookies-dont-need-httponly/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/csrf-token-cookies-dont-need-httponly/</guid><description>CSRF token cookies are typically sent without httpOnly set to true. But is that a secure practice?</description><pubDate>Sat, 20 Jul 2024 00:00:00 GMT</pubDate><category>security</category><category>csrf</category><category>csrf token httponly</category></item><item><title>Send Templated Emails in NodeJS</title><link>https://joshkaramuth.com/blog/send-templated-emails-nodejs/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/send-templated-emails-nodejs/</guid><description>Learn how to use NodeMailer, Handlebars, and juice to send emails effortlessly in NodeJS.</description><pubDate>Fri, 22 Mar 2024 00:00:00 GMT</pubDate><category>nodejs</category><category>javascript</category><category>handlebars</category></item><item><title>Populate Custom User Attributes  When Signing Up Using Django Allauth</title><link>https://joshkaramuth.com/blog/custom-user-attributes-django-allauth/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/custom-user-attributes-django-allauth/</guid><description>Learn how to set custom attributes to your User model when signing up users with Django Allauth.</description><pubDate>Thu, 21 Mar 2024 00:00:00 GMT</pubDate><category>django</category><category>python</category><category>allauth</category><category>authentication</category><category>django allauth custom user model</category></item><item><title>Track Hubspot Events in a React SPA</title><link>https://joshkaramuth.com/blog/track-hubspot-events-react/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/track-hubspot-events-react/</guid><description>Learn how to use Hubspot to track user activity when using client side routing in React.</description><pubDate>Wed, 20 Mar 2024 00:00:00 GMT</pubDate><category>marketing</category><category>react</category><category>javascript</category><category>hubspot react</category></item><item><title>How to upload files to S3 using a Presigned Upload URL</title><link>https://joshkaramuth.com/blog/upload-files-s3-presigned-upload-url/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/upload-files-s3-presigned-upload-url/</guid><description>Learn how to upload files directly to S3 from a front-end client to avoid API Gateway time-out issues.</description><pubDate>Sun, 03 Mar 2024 00:00:00 GMT</pubDate><category>aws</category><category>s3</category><category>javascript</category><category>api gateway file upload</category></item><item><title>Identify Individual Requests in ExpressJS</title><link>https://joshkaramuth.com/blog/identify-requests-expressjs/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/identify-requests-expressjs/</guid><description>Learn how to debug user errors more easily by tagging each request.</description><pubDate>Wed, 24 Jan 2024 00:00:00 GMT</pubDate><category>expressjs</category><category>javascript</category><category>nodejs</category><category>web development</category></item><item><title>How to Store Passwords Securely in NodeJS</title><link>https://joshkaramuth.com/blog/store-passwords-securely-nodejs/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/store-passwords-securely-nodejs/</guid><description>Learn how to use built-in tools in NodeJS to store user passwords securely.</description><pubDate>Tue, 23 Jan 2024 00:00:00 GMT</pubDate><category>javascript</category><category>security</category><category>node</category><category>password hashing</category></item><item><title>Verify Paddle Billing Webhook Signatures in Python</title><link>https://joshkaramuth.com/blog/verify-paddle-billing-webhooks-python/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/verify-paddle-billing-webhooks-python/</guid><description>Learn how to verify that webhooks hitting your back-end are from Paddle and not anyone else.</description><pubDate>Thu, 11 Jan 2024 00:00:00 GMT</pubDate><category>python</category><category>paddle</category></item><item><title>Generate good looking PDFs with WeasyPrint and Jinja2</title><link>https://joshkaramuth.com/blog/generate-good-looking-pdfs-weasyprint-jinja2/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/generate-good-looking-pdfs-weasyprint-jinja2/</guid><description>Learn how to easily generate beautiful PDFs in Python</description><pubDate>Wed, 10 Jan 2024 00:00:00 GMT</pubDate><category>python</category><category>pdf generation</category><category>weasyprint</category><category>jinja2</category><category>weasyprint flexbox</category><category>jinja2 to pdf</category><category>python generate pdf from template</category><category>python html to pdf with css</category></item><item><title>Encode base64 in JavaScript and Decode in Python: Part 2</title><link>https://joshkaramuth.com/blog/encode-base64-javascript-decode-python-part-2/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/encode-base64-javascript-decode-python-part-2/</guid><description>Learn how to decode a Base64 string you encoded from JavaScript in Python</description><pubDate>Sun, 15 Oct 2023 00:00:00 GMT</pubDate><category>python</category><category>javascript</category><category>programming</category><category>web development</category></item><item><title>Encode base64 in JavaScript and Decode in Python: Part 1</title><link>https://joshkaramuth.com/blog/encode-base64-javascript-decode-python-part-1/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/encode-base64-javascript-decode-python-part-1/</guid><description>Learn how to send URL safe base64 encoded data to your Python API.</description><pubDate>Sat, 14 Oct 2023 00:00:00 GMT</pubDate><category>javascript</category><category>python</category><category>web development</category><category>programming</category></item><item><title>Log to console with Sentry</title><link>https://joshkaramuth.com/blog/log-console-sentry/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/log-console-sentry/</guid><description>Learn how to see your Sentry logs in the dev tools console for a faster debugging experience.</description><pubDate>Sat, 14 Oct 2023 00:00:00 GMT</pubDate><category>javascript</category><category>web development</category><category>programming</category><category>sentry</category></item><item><title>Use Python partial objects to write cleaner higher order functions</title><link>https://joshkaramuth.com/blog/python-partial-objects/</link><guid isPermaLink="true">https://joshkaramuth.com/blog/python-partial-objects/</guid><description>Learn how to improve readability of your code when using callback functions thanks to partial objects.</description><pubDate>Sat, 14 Oct 2023 00:00:00 GMT</pubDate><category>python</category><category>programming</category><category>functional programming</category></item></channel></rss>