<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Blog | www.joshfinnie.com</title><description>The personal/professional website of Josh Finnie.</description><link>https://www.joshfinnie.com/</link><language>en-us</language><item><title>Creating Your First Django Project</title><link>https://www.joshfinnie.com/blog/creating-your-first-django-project/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/creating-your-first-django-project/</guid><description>In this beginner-friendly guide, we create our first Django project, explore its file structure, and build our first view to display a page in the browser.</description><pubDate>Mon, 09 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Writing Python Docstrings Effectively</title><link>https://www.joshfinnie.com/blog/2026-03-06-writing-python-docstrings-effectively/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/2026-03-06-writing-python-docstrings-effectively/</guid><description>A practical guide to writing Python docstrings effectively, covering the __doc__ attribute, help(), Google, NumPy, and Sphinx styles, choosing the right structure, avoiding common mistakes, and generating docs with Sphinx, pydoc, and MkDocs.</description><pubDate>Fri, 06 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Setting Up AWS SES with a Custom Domain</title><link>https://www.joshfinnie.com/blog/setting-up-aws-ses-with-custom-domain/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/setting-up-aws-ses-with-custom-domain/</guid><description>AWS SES is one of the most cost-effective ways to send transactional email, but getting it configured properly takes a few non-obvious steps. Here&apos;s the complete walkthrough.</description><pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Adding a Copy Code Button to My Astro Blog</title><link>https://www.joshfinnie.com/blog/2026-02-23-adding-copy-code-to-astro/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/2026-02-23-adding-copy-code-to-astro/</guid><description>A step-by-step walkthrough of how I added a copy-to-clipboard button with a language label to every code block on my Astro blog using a single component and no external libraries.</description><pubDate>Mon, 23 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Building a Full-Stack Rust Application</title><link>https://www.joshfinnie.com/blog/full-stack-rust-part-1/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/full-stack-rust-part-1/</guid><description>Part 1 of building a full-stack URL shortener in Rust. We set up an Axum backend with in-memory storage, CRUD routes, and a nanoid-based slug generator.</description><pubDate>Thu, 19 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Getting Started with Python for Web Development</title><link>https://www.joshfinnie.com/blog/getting-started-with-python-for-web-development/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/getting-started-with-python-for-web-development/</guid><description>This beginner-friendly guide covers the basics of Python, setting up virtual environments, installing pip, and why Django is the best choice for building powerful web applications.</description><pubDate>Fri, 09 Jan 2026 00:00:00 GMT</pubDate></item><item><title>My Top 20 Albums of 2025</title><link>https://www.joshfinnie.com/blog/top-20-albums-2025/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/top-20-albums-2025/</guid><description>A look back at the albums that defined my year, from experimental hip-hop to art rock to electronic pop.</description><pubDate>Thu, 04 Dec 2025 00:00:00 GMT</pubDate></item><item><title>MIT&apos;s $1.2 Trillion Iceberg</title><link>https://www.joshfinnie.com/blog/mit-iceberg-index-11-percent-workforce/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/mit-iceberg-index-11-percent-workforce/</guid><description>Examining the MIT Iceberg Index&apos;s claim that AI could replace 11.7% of U.S. wages, and why the real-world execution of mass replacement is unlikely to succeed.</description><pubDate>Thu, 27 Nov 2025 00:00:00 GMT</pubDate></item><item><title>Why I Switched From Tex Live to Tectonic</title><link>https://www.joshfinnie.com/blog/why-i-switched-to-tectonic/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/why-i-switched-to-tectonic/</guid><description>Slash your LaTeX Docker build times by 85% and reduce image sizes by 95%! Learn how switching from TeX Live to Tectonic transformed my containerized LaTeX workflow with faster builds and leaner images.</description><pubDate>Mon, 17 Nov 2025 00:00:00 GMT</pubDate></item><item><title>The Fatal Flaw in Silicon Valley&apos;s AI Gold Rush</title><link>https://www.joshfinnie.com/blog/the-fatal-flaw-in-silicon-valleys-ai-gold-rush/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/the-fatal-flaw-in-silicon-valleys-ai-gold-rush/</guid><description>Tech giants are investing $400 billion in AI infrastructure while cutting thousands of jobs. This analysis explores the economic contradiction at the heart of automation: why replacing workers with machines may undermine the very source of profit, threatening both value creation and consumer demand in capitalism&apos;s latest transformation.</description><pubDate>Sat, 15 Nov 2025 00:00:00 GMT</pubDate></item><item><title>Amazon&apos;s AI Layoffs: A Marxist Analysis of Automation and Class Power</title><link>https://www.joshfinnie.com/blog/amazons-ai-layoff/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/amazons-ai-layoff/</guid><description>Amazon blamed AI for cutting 30,000 jobs while posting record profits and raising CEO pay 37%. We break down the Marxist economics behind tech layoffs: how automation intensifies worker exploitation, why the &quot;AI made us do it&quot; narrative hides class warfare, and what the Luddites can teach us about who really benefits from technology. This is surplus value extraction with algorithmic cover.</description><pubDate>Sat, 01 Nov 2025 00:00:00 GMT</pubDate></item><item><title>ASTs Explained: How Abstract Syntax Trees Fix the Chaos of Resume Parsing</title><link>https://www.joshfinnie.com/blog/asts-for-resume-parsing-and-generation/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/asts-for-resume-parsing-and-generation/</guid><description>Discover how Abstract Syntax Trees (ASTs) solve the format chaos of traditional resumes, turning unstructured documents into reliable, structured data for programmatic generation and analysis.</description><pubDate>Tue, 14 Oct 2025 00:00:00 GMT</pubDate></item><item><title>Rubber Duck Debugging: The Simplest Developer Tool You Are Not Using Enough</title><link>https://www.joshfinnie.com/blog/rubber-duck-debugging/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/rubber-duck-debugging/</guid><description>Discover how rubber duck debugging can transform your coding experience. Learn why explaining your code to a simple rubber duck is one of the most effective troubleshooting techniques that experienced developers swear by. This practical guide shows how verbalizing your code helps identify bugs faster than traditional debugging methods.</description><pubDate>Fri, 05 Sep 2025 00:00:00 GMT</pubDate></item><item><title>Building a Word Count Tool in Rust: Step-By-Step</title><link>https://www.joshfinnie.com/blog/building-wc-in-rust/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/building-wc-in-rust/</guid><description>Learn how to build a word count command line utility in Rust from scratch. This step-by-step guide shows you how to create a functional wc tool that counts lines, words, and bytes in files. Perfect for Rust beginners and those interested in command line tools, this tutorial covers argument parsing with clap, file handling, and test-driven development to create reliable utilities for text processing.</description><pubDate>Fri, 27 Jun 2025 00:00:00 GMT</pubDate></item><item><title>FastAPI and React in 2025</title><link>https://www.joshfinnie.com/blog/fastapi-and-react-in-2025/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/fastapi-and-react-in-2025/</guid><description>A step-by-step guide to building modern web applications with FastAPI and React in 2025, featuring Vite for faster development and UV for improved Python package management.</description><pubDate>Wed, 18 Jun 2025 00:00:00 GMT</pubDate></item><item><title>Revealing Gender Bias in AI Models</title><link>https://www.joshfinnie.com/blog/revealing-gender-bias-in-ai-models/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/revealing-gender-bias-in-ai-models/</guid><description>Reposting a paper I did for my UMGC AI Ethics class. It was an interesting exploration into inherent biases in AI models. I reviewed both ChatGPT and Gemini and wrote about the results.</description><pubDate>Wed, 29 Jan 2025 00:00:00 GMT</pubDate></item><item><title>15 Years of Blogging</title><link>https://www.joshfinnie.com/blog/15-years-of-blogging/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/15-years-of-blogging/</guid><description>I noticed while checking my copyright date that I have been blogging for 15 years now. I thought it would be an interesting time to write a bit of a retrospective.</description><pubDate>Sun, 12 Jan 2025 00:00:00 GMT</pubDate></item><item><title>Music of 2024</title><link>https://www.joshfinnie.com/blog/music-of-2024/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/music-of-2024/</guid><description>A brief review of the music I found and fell in love with across all of 2024.</description><pubDate>Tue, 31 Dec 2024 00:00:00 GMT</pubDate></item><item><title>Adding ESLint &amp; Prettier to My Blog</title><link>https://www.joshfinnie.com/blog/adding-eslint-and-prettier-to-my-blog/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/adding-eslint-and-prettier-to-my-blog/</guid><description>I recently took some time to add ESLint and Prettier to my Astro blog. Here an easy todo to follow and some of my lessons learned.</description><pubDate>Mon, 02 Dec 2024 00:00:00 GMT</pubDate></item><item><title>Review of Buildspace Nights &amp; Weekends</title><link>https://www.joshfinnie.com/blog/review-of-buildspace-nights-weekends/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/review-of-buildspace-nights-weekends/</guid><description>I recently finished Buildspace Nights &amp; Weekends. This is my review.</description><pubDate>Thu, 29 Aug 2024 00:00:00 GMT</pubDate></item><item><title>Adding json-ld To My Blog</title><link>https://www.joshfinnie.com/blog/adding-json-ld-to-my-blog/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/adding-json-ld-to-my-blog/</guid><description>In this blog post, we talk about what JSON-LD is and how I implemented it on my Astro.build blog. It was quick and easy; definitely worth a look!</description><pubDate>Mon, 15 Apr 2024 00:00:00 GMT</pubDate></item><item><title>Trying out HTMX with Rust</title><link>https://www.joshfinnie.com/blog/trying-out-htmx-with-rust/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/trying-out-htmx-with-rust/</guid><description>In this blog post, we walk through building an example app with Rust, Axum and HTMX. This is really cool and a simple way to build web apps. No Javascript framework needed.</description><pubDate>Mon, 15 Jan 2024 00:00:00 GMT</pubDate></item><item><title>Switching to PNPM for Everything Node.js?</title><link>https://www.joshfinnie.com/blog/switching-to-pnpm-for-everything-nodejs/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/switching-to-pnpm-for-everything-nodejs/</guid><description>In this blog post I talk about my exploration in switching to using PNPM everywhere instead of NPM and NVM.</description><pubDate>Tue, 19 Dec 2023 00:00:00 GMT</pubDate></item><item><title>Unleashing the Power of Python Collections</title><link>https://www.joshfinnie.com/blog/unleashing-the-power-of-python-collections/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/unleashing-the-power-of-python-collections/</guid><description>A deep dive into Python&apos;s Collections module. There&apos;s a lot of helpful tools there that everyone should know about!</description><pubDate>Fri, 17 Nov 2023 00:00:00 GMT</pubDate></item><item><title>Creating a vCard QR Code in Python</title><link>https://www.joshfinnie.com/blog/creating-a-vcard-qr-code-in-python/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/creating-a-vcard-qr-code-in-python/</guid><description>&lt;DESCRIPTION&gt;</description><pubDate>Wed, 08 Nov 2023 00:00:00 GMT</pubDate></item><item><title>24 Hours with Threads by Instagram</title><link>https://www.joshfinnie.com/blog/24-hours-with-threads/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/24-hours-with-threads/</guid><description>I have been playing around with Threads by Instagram for about 24 hours, it&apos;s surprisingly good.</description><pubDate>Thu, 06 Jul 2023 00:00:00 GMT</pubDate></item><item><title>Follow Up: Building a Command-Line Application in Rust</title><link>https://www.joshfinnie.com/blog/follow-up-a-command-line-application-in-rust/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/follow-up-a-command-line-application-in-rust/</guid><pubDate>Mon, 03 Jul 2023 00:00:00 GMT</pubDate></item><item><title>A Quick Review of Spotify&apos;s AI DJ</title><link>https://www.joshfinnie.com/blog/a-quick-review-of-spotify-ai-dj/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/a-quick-review-of-spotify-ai-dj/</guid><description>I took a week to listen to Spotify&apos;s AI DJ. This is my quick review of it. How&apos;d it work? Did I like it?</description><pubDate>Thu, 29 Jun 2023 00:00:00 GMT</pubDate></item><item><title>Astro Experimental Image and MDX Update</title><link>https://www.joshfinnie.com/blog/astro-experimental-image-and-mdx-update/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/astro-experimental-image-and-mdx-update/</guid><description>This blog post we discuss the process of adding both MDX support and Astro.js Experimental Asset support. We describe step-by-step the process I took to adding each to this exact blog.</description><pubDate>Wed, 21 Jun 2023 00:00:00 GMT</pubDate></item><item><title>My 2023 Job Search Journey</title><link>https://www.joshfinnie.com/blog/my-2023-job-search-journey/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/my-2023-job-search-journey/</guid><description>A brief review of my job search journey in the 2023 market. I applied to over 150 jobs and it was exhausting!</description><pubDate>Wed, 07 Jun 2023 00:00:00 GMT</pubDate></item><item><title>Creating a &quot;Similar Posts&quot; Component in Astro.js</title><link>https://www.joshfinnie.com/blog/creating-a-similar-posts-component-in-astrojs/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/creating-a-similar-posts-component-in-astrojs/</guid><description>This blog post shares my Astro.js component to share similar posts to readers. It&apos;s nice, simple and gives an extra layer of discoverability to my readers!</description><pubDate>Mon, 27 Feb 2023 00:00:00 GMT</pubDate></item><item><title>Taking a Look at Astro 2.0</title><link>https://www.joshfinnie.com/blog/taking-a-look-at-astro-2/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/taking-a-look-at-astro-2/</guid><description>&lt;DESCRIPTION&gt;</description><pubDate>Tue, 31 Jan 2023 00:00:00 GMT</pubDate></item><item><title>Building a Command-Line Application in Rust</title><link>https://www.joshfinnie.com/blog/a-command-line-application-in-rust/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/a-command-line-application-in-rust/</guid><description>In this blog post we start from scratch and write a full command-line application written in Rust. We use Clap for argument parsing, and Reqwest for hitting the API.</description><pubDate>Mon, 19 Dec 2022 00:00:00 GMT</pubDate></item><item><title>Why participate in Advent of Code (2022)?</title><link>https://www.joshfinnie.com/blog/why-participate-in-advent-of-code-2022/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/why-participate-in-advent-of-code-2022/</guid><description>Advent of Code is an annual challenge to push your coding skills. This blog post talks about some of the reasons to join! Let&apos;s do it!</description><pubDate>Wed, 30 Nov 2022 00:00:00 GMT</pubDate></item><item><title>Leaving Twitter for Mastodon</title><link>https://www.joshfinnie.com/blog/leaving-twitter-for-mastodon/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/leaving-twitter-for-mastodon/</guid><description>Twitter has had a rough couple of weeks since Elon Musk took over. I feel like it is time this tweeter flew the coop and found a new place to build a community. This post talks briefly about what Mastodon is and how I set myself up for success.</description><pubDate>Tue, 15 Nov 2022 00:00:00 GMT</pubDate></item><item><title>An Obit for Heroku</title><link>https://www.joshfinnie.com/blog/obit-for-heroku/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/obit-for-heroku/</guid><description>The death of Heroku&apos;s free option is a huge loss. In this post we discuss why...</description><pubDate>Thu, 01 Sep 2022 00:00:00 GMT</pubDate></item><item><title>Chrome Extensions I Use in 2022</title><link>https://www.joshfinnie.com/blog/chrome-extensions-i-use-in-2022/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/chrome-extensions-i-use-in-2022/</guid><description>Showing off my top Chrome extensions for 2022.</description><pubDate>Thu, 21 Jul 2022 00:00:00 GMT</pubDate></item><item><title>Set Up Flask and Restx with Docker</title><link>https://www.joshfinnie.com/blog/setup_flask_and_restx_with_docker/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/setup_flask_and_restx_with_docker/</guid><description>This blog post summarizes my experiments with Flask, Restx and Docker. I go over the steps I took to get a simple Todo application from start to finish.</description><pubDate>Wed, 01 Jun 2022 00:00:00 GMT</pubDate></item><item><title>Moving from Oh-My-Zsh to Starship &amp; Fish Shell</title><link>https://www.joshfinnie.com/blog/moving-from-oh-my-zsh-to-starship-and-fish-shell/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/moving-from-oh-my-zsh-to-starship-and-fish-shell/</guid><description>I changed my prompt configurator from Oh-My-Zsh to Starship.rs and with that changed my shell to Fish. This blog post tells the story of my upgrade and the pitfalls and benefits of moving to Fish Shell.</description><pubDate>Tue, 05 Apr 2022 00:00:00 GMT</pubDate></item><item><title>Getting Truffle and Ganache Working with Docker</title><link>https://www.joshfinnie.com/blog/getting-truffle-and-ganache-working-with-docker/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/getting-truffle-and-ganache-working-with-docker/</guid><description>I recently had an issue installing Truffle locally on my computer. There was an issue with my version of Node.js or NPM... Instead of messing up or polluting my global NPM installs further, I took to Docker to get Truffle and Ganache working for me. This post details that journey.</description><pubDate>Wed, 09 Mar 2022 00:00:00 GMT</pubDate></item><item><title>My 2021 Books in Review</title><link>https://www.joshfinnie.com/blog/my-2021-books-in-review/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/my-2021-books-in-review/</guid><description>This is a review of the books I read in 2021 and which ones I&apos;d recommend giving a try.</description><pubDate>Mon, 03 Jan 2022 00:00:00 GMT</pubDate></item><item><title>Current Thoughts on Mobile Website Support</title><link>https://www.joshfinnie.com/blog/current-thoughts-on-mobile-website-support/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/current-thoughts-on-mobile-website-support/</guid><description>I recently had a viral blog post and I wanted to share a surprising discovery of the current state of mobile website support! Over the course of the month, nearly 50% of my visitors were using a mobile browswer of some sort. What does this mean for me going forward?</description><pubDate>Tue, 28 Dec 2021 00:00:00 GMT</pubDate></item><item><title>ASDF: How To Set Up Runtimes on Windows Subsystem for Linux</title><link>https://www.joshfinnie.com/blog/setting-up-wsl-with-asdf/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/setting-up-wsl-with-asdf/</guid><description>In this blog post we discuss how to use ASDF to install and manage different language runtimes in a newly created Ubuntu VM on Windows Subsystem for Linux.</description><pubDate>Fri, 17 Dec 2021 00:00:00 GMT</pubDate></item><item><title>Using WebAssembly (created in Rust) for Fast React Components</title><link>https://www.joshfinnie.com/blog/using-webassembly-created-in-rust-for-fast-react-components/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/using-webassembly-created-in-rust-for-fast-react-components/</guid><description>In this blog post we will learn how to leverage the Rust programming language to compile WebAssembly which we will then use in our React application. This gives us access to low-level components to speed up our code!</description><pubDate>Tue, 23 Nov 2021 00:00:00 GMT</pubDate></item><item><title>My Switch from Gatsby to Astro</title><link>https://www.joshfinnie.com/blog/my-switch-from-gatsby-to-astro/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/my-switch-from-gatsby-to-astro/</guid><description>Why I migrated my blog from Gatsby to Astro for zero-JS static sites with faster load times.</description><pubDate>Thu, 28 Oct 2021 00:00:00 GMT</pubDate></item><item><title>Book Review: The 12 Week Year</title><link>https://www.joshfinnie.com/blog/book-review-the-12-week-year/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/book-review-the-12-week-year/</guid><description>How quarterly goal-setting cycles replace annual resolutions with urgency-driven, achievable milestones.</description><pubDate>Thu, 30 Sep 2021 00:00:00 GMT</pubDate></item><item><title>One Year Later</title><link>https://www.joshfinnie.com/blog/one-year-later/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/one-year-later/</guid><description>Reflecting on one year of pandemic isolation, remote work, and hoping for a future with more opportunities.</description><pubDate>Thu, 11 Mar 2021 00:00:00 GMT</pubDate></item><item><title>My 2020 React.js Start-up Process</title><link>https://www.joshfinnie.com/blog/my-2020-react-startup-process/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/my-2020-react-startup-process/</guid><description>Set up React with TypeScript, ESLint, Prettier, and organized component structure for modern development.</description><pubDate>Wed, 08 Jul 2020 00:00:00 GMT</pubDate></item><item><title>Upgrading Gatsby to Use Mdx</title><link>https://www.joshfinnie.com/blog/upgrading-gatsby-to-use-mdx/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/upgrading-gatsby-to-use-mdx/</guid><description>Switch from Markdown to MDX in Gatsby to embed React components like Link and custom Unsplash credits.</description><pubDate>Fri, 12 Jun 2020 00:00:00 GMT</pubDate></item><item><title>Upgrading Gatsby to Use Mdx</title><link>https://www.joshfinnie.com/blog/upgrading-gatsby-to-mdx/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/upgrading-gatsby-to-mdx/</guid><description>Migrate Gatsby from Markdown to MDX to use React components in blog posts with cleaner rendering.</description><pubDate>Fri, 12 Jun 2020 00:00:00 GMT</pubDate></item><item><title>Hacktoberfest is AWESOME!</title><link>https://www.joshfinnie.com/blog/hacktoberfest-is-awesome-2/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/hacktoberfest-is-awesome-2/</guid><description>Participating in Hacktoberfest 2019: complete four pull requests in October and earn a free t-shirt.</description><pubDate>Tue, 01 Oct 2019 00:00:00 GMT</pubDate></item><item><title>Using Latex Through Docker</title><link>https://www.joshfinnie.com/blog/latex-through-docker/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/latex-through-docker/</guid><description>Skip complex LaTeX installations on macOS by creating a portable Docker container for generating PDFs.</description><pubDate>Tue, 17 Sep 2019 00:00:00 GMT</pubDate></item><item><title>My Basic isort Configuration</title><link>https://www.joshfinnie.com/blog/my-basic-isort-configuration/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/my-basic-isort-configuration/</guid><description>Automate Python import sorting with isort to reduce code review bikeshedding and maintain consistent style.</description><pubDate>Tue, 20 Aug 2019 00:00:00 GMT</pubDate></item><item><title>My Basic Python Dockerfile</title><link>https://www.joshfinnie.com/blog/my-basic-python-dockerfile/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/my-basic-python-dockerfile/</guid><description>A reusable Python Dockerfile template featuring dumb-init, non-root user setup, and best practices.</description><pubDate>Thu, 06 Jun 2019 00:00:00 GMT</pubDate></item><item><title>Setting up SSL for www.joshfinnie.com</title><link>https://www.joshfinnie.com/blog/setting-up-ssl-for-wwwjoshfinniecom/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/setting-up-ssl-for-wwwjoshfinniecom/</guid><description>Generate free Let&apos;s Encrypt SSL certificates for S3/Cloudfront static sites using certbot and AWS CLI.</description><pubDate>Mon, 21 May 2018 00:00:00 GMT</pubDate></item><item><title>My Coffee Setup (2018)</title><link>https://www.joshfinnie.com/blog/my-coffee-setup/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/my-coffee-setup/</guid><description>Equipment recommendations for making great coffee at home: grinders, brewing vessels, kettles, and espresso.</description><pubDate>Thu, 08 Mar 2018 00:00:00 GMT</pubDate></item><item><title>New Years Resolutions for 2018 and 2017 Review</title><link>https://www.joshfinnie.com/blog/new-years-resolutions-for-2018-and-2017-review/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/new-years-resolutions-for-2018-and-2017-review/</guid><description>Switching from annual to quarterly goals for 2018 after completing only 1 of 5 resolutions in 2017.</description><pubDate>Mon, 01 Jan 2018 00:00:00 GMT</pubDate></item><item><title>New Years Resolutions for 2017 and 2016 Review</title><link>https://www.joshfinnie.com/blog/new-years-resolutions-for-2017-and-2016-review/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/new-years-resolutions-for-2017-and-2016-review/</guid><description>Narrowing focus for 2017: restart blogging, learn Go, and speak at conferences after 4 of 15 goals in 2016.</description><pubDate>Sun, 01 Jan 2017 00:00:00 GMT</pubDate></item><item><title>I Am Still Here</title><link>https://www.joshfinnie.com/blog/still-here/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/still-here/</guid><description>A quick update on upcoming React.js ES2015 tutorials and NPM package development content.</description><pubDate>Thu, 31 Mar 2016 00:00:00 GMT</pubDate></item><item><title>New Years Resolutions for 2016 and 2015 Review</title><link>https://www.joshfinnie.com/blog/new-years-resolutions-for-2016-and-2015-review/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/new-years-resolutions-for-2016-and-2015-review/</guid><description>Setting 2016 goals for blogging, photography, and conferences while reviewing 2015 results (7 of 13 achieved).</description><pubDate>Fri, 01 Jan 2016 00:00:00 GMT</pubDate></item><item><title>React.js Tutorial Part 4</title><link>https://www.joshfinnie.com/blog/reactjs-tutorial-part-4/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/reactjs-tutorial-part-4/</guid><description>Build Express API routes to serve JSON data and connect React components using the request library.</description><pubDate>Wed, 16 Sep 2015 00:00:00 GMT</pubDate></item><item><title>React.js Tutorial Part (Interlude 2)</title><link>https://www.joshfinnie.com/blog/reactjs-tutorial-part-interlude-2/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/reactjs-tutorial-part-interlude-2/</guid><description>Use npm-check-updates to safely upgrade React and other packages by reviewing changelogs for breaking changes.</description><pubDate>Mon, 10 Aug 2015 00:00:00 GMT</pubDate></item><item><title>React.js Tutorial Part 3</title><link>https://www.joshfinnie.com/blog/reactjs-tutorial-part-3/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/reactjs-tutorial-part-3/</guid><description>Create reusable Job components in React: build nested components that iterate over data with props and state.</description><pubDate>Sun, 05 Apr 2015 00:00:00 GMT</pubDate></item><item><title>React.js Tutorial Part (Interlude)</title><link>https://www.joshfinnie.com/blog/reactjs-tutorial-part-interlude/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/reactjs-tutorial-part-interlude/</guid><description>Add Bower, Bootstrap SASS, and Gulp automation to a React/Express app for better asset management.</description><pubDate>Sun, 08 Mar 2015 00:00:00 GMT</pubDate></item><item><title>React.js Tutorial Part 2</title><link>https://www.joshfinnie.com/blog/reactjs-tutorial-part-2/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/reactjs-tutorial-part-2/</guid><description>Automate JSX compilation with Gulp, Browserify, and Reactify for efficient React development workflow.</description><pubDate>Wed, 04 Feb 2015 00:00:00 GMT</pubDate></item><item><title>2014 In Review</title><link>https://www.joshfinnie.com/blog/2014-in-review/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/2014-in-review/</guid><description>A year of big changes: new job at TrackMaven, got married, and doubled down on open source contributions.</description><pubDate>Sun, 01 Feb 2015 00:00:00 GMT</pubDate></item><item><title>React.js Tutorial Part 1</title><link>https://www.joshfinnie.com/blog/reactjs-tutorial-part-1/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/reactjs-tutorial-part-1/</guid><description>Build a job board with React and Express: set up JSX compilation and create your first component.</description><pubDate>Sat, 10 Jan 2015 00:00:00 GMT</pubDate></item><item><title>New Years Resolutions for 2015 and 2014 Review</title><link>https://www.joshfinnie.com/blog/new-years-resolutions-for-2015-and-2014-review/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/new-years-resolutions-for-2015-and-2014-review/</guid><description>Reviewing 2014 goals (7 of 12 completed) and setting new 2015 resolutions for open source and blogging.</description><pubDate>Sun, 04 Jan 2015 00:00:00 GMT</pubDate></item><item><title>WTF Recruiters - Take 2</title><link>https://www.joshfinnie.com/blog/wtf-recruiters-take-2/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/wtf-recruiters-take-2/</guid><description>Another amusing recruiter email shows persistence doesn&apos;t always mean effective outreach tactics.</description><pubDate>Fri, 19 Dec 2014 00:00:00 GMT</pubDate></item><item><title>NodeSchool @ NationJS Postmortem</title><link>https://www.joshfinnie.com/blog/nodeschool-at-nationjs-postmortem/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/nodeschool-at-nationjs-postmortem/</guid><description>Running a successful NodeSchool event for 120 students: prep tips, mentor meetings, and lessons learned.</description><pubDate>Fri, 21 Nov 2014 00:00:00 GMT</pubDate></item><item><title>Using Bower</title><link>https://www.joshfinnie.com/blog/using-bower/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/using-bower/</guid><description>Manage JavaScript dependencies with Bower: track versions, customize install locations, and integrate with Gulp.</description><pubDate>Mon, 03 Nov 2014 00:00:00 GMT</pubDate></item><item><title>WTF Recruiters?</title><link>https://www.joshfinnie.com/blog/wtf-recruiters/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/wtf-recruiters/</guid><description>When recruiter outreach goes too far: an email about blood sacrifices and stuffed animals crosses the line.</description><pubDate>Tue, 30 Sep 2014 00:00:00 GMT</pubDate></item><item><title>Adding Markdown to Jade Using Node.js</title><link>https://www.joshfinnie.com/blog/adding-markdown-to-jade-using-node-js/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/adding-markdown-to-jade-using-node-js/</guid><description>Use the marked library to write cleaner Jade templates by converting Markdown to HTML for inline code formatting.</description><pubDate>Mon, 22 Sep 2014 00:00:00 GMT</pubDate></item><item><title>Setting Up HTTPS Security</title><link>https://www.joshfinnie.com/blog/setting-up-https-security/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/setting-up-https-security/</guid><description>Secure your server with SSL certificates: obtain CSR, configure Apache/Nginx, and harden cipher settings.</description><pubDate>Sat, 20 Sep 2014 00:00:00 GMT</pubDate></item><item><title>Using Pygments with Static Blogs</title><link>https://www.joshfinnie.com/blog/using-pygments-with-static-blogs/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/using-pygments-with-static-blogs/</guid><description>Add syntax highlighting to Markdown blogs with Pygments: generate CSS and specify language in code blocks.</description><pubDate>Tue, 20 May 2014 00:00:00 GMT</pubDate></item><item><title>Auto-Starting Tmux in iTerm2</title><link>https://www.joshfinnie.com/blog/auto-starting-tmux-in-iterm2/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/auto-starting-tmux-in-iterm2/</guid><description>Configure iTerm2 to automatically attach to or create a tmux session on startup with a simple command.</description><pubDate>Fri, 16 May 2014 00:00:00 GMT</pubDate></item><item><title>Changing the Default Screenshot Location</title><link>https://www.joshfinnie.com/blog/changing-the-default-screenshot-location/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/changing-the-default-screenshot-location/</guid><description>Stop cluttering your desktop by changing the OS X screenshot save location using the defaults command.</description><pubDate>Tue, 04 Feb 2014 00:00:00 GMT</pubDate></item><item><title>Updating Mavericks and Postgres.app</title><link>https://www.joshfinnie.com/blog/updating-mavericks-and-postgresapp/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/updating-mavericks-and-postgresapp/</guid><description>Fix broken virtualenvs after upgrading to Mavericks and Postgres.app 9.3 by updating libssl symlinks.</description><pubDate>Mon, 27 Jan 2014 00:00:00 GMT</pubDate></item><item><title>New Years Resolutions for 2014</title><link>https://www.joshfinnie.com/blog/new-years-resolutions-for-2014/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/new-years-resolutions-for-2014/</guid><description>Goals for 2014: blog weekly, contribute to open source, complete NaNoWriMo, and get married.</description><pubDate>Wed, 01 Jan 2014 00:00:00 GMT</pubDate></item><item><title>Font Awesome is Awesome</title><link>https://www.joshfinnie.com/blog/font-awesome-is-awesome/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/font-awesome-is-awesome/</guid><description>Replace image-based social icons with Font Awesome&apos;s iconic font to reduce network load and improve styling.</description><pubDate>Thu, 24 Oct 2013 00:00:00 GMT</pubDate></item><item><title>Flat Flog, an Introduction</title><link>https://www.joshfinnie.com/blog/flat-flog-an-introduction/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/flat-flog-an-introduction/</guid><description>Build static blogs with Flask using flat-flog, a Python-based static site generator with Markdown support.</description><pubDate>Tue, 24 Sep 2013 00:00:00 GMT</pubDate></item><item><title>Postmortem on How Old Is This Metro Car</title><link>https://www.joshfinnie.com/blog/postmortem-on-howoldisthismetrocarcom/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/postmortem-on-howoldisthismetrocarcom/</guid><description>Serving 12,000 visits with Angular.js and AWS S3 for just $0.03: why static hosting wins for simple apps.</description><pubDate>Fri, 23 Aug 2013 00:00:00 GMT</pubDate></item><item><title>JoshFinnie.com Part 5?</title><link>https://www.joshfinnie.com/blog/joshfinniecom-part-5/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/joshfinniecom-part-5/</guid><description>Rebuilding my personal site with Python&apos;s Mynt static generator and hosting on AWS S3 for speed.</description><pubDate>Tue, 07 May 2013 00:00:00 GMT</pubDate></item><item><title>Installing Mezzanine on Heroku</title><link>https://www.joshfinnie.com/blog/installing-mezzanine-on-heroku/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/installing-mezzanine-on-heroku/</guid><description>Deploy the Mezzanine Python CMS on Heroku with PostgreSQL, static files, and Gunicorn configuration.</description><pubDate>Mon, 10 Dec 2012 00:00:00 GMT</pubDate></item><item><title>Updated to Twitter Bootstrap 2.0</title><link>https://www.joshfinnie.com/blog/updated-to-twitter-bootstrap-20/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/updated-to-twitter-bootstrap-20/</guid><description>Upgrading to Bootstrap 2.0: the main change is navbar class names, but migration is straightforward.</description><pubDate>Fri, 10 Feb 2012 00:00:00 GMT</pubDate></item><item><title>Quick UX No-No</title><link>https://www.joshfinnie.com/blog/quick-ux-no-no/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/quick-ux-no-no/</guid><description>Why red notifications confuse users: Geico&apos;s mistake and Bootstrap&apos;s better color-coding for success messages.</description><pubDate>Thu, 13 Oct 2011 00:00:00 GMT</pubDate></item><item><title>A Coder&apos;s Lifestyle</title><link>https://www.joshfinnie.com/blog/a-coders-lifestyle/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/a-coders-lifestyle/</guid><description>Tips for balancing programming as a passion while working a non-technical full-time job.</description><pubDate>Tue, 04 Oct 2011 00:00:00 GMT</pubDate></item><item><title>Life Changes and Another Start with Jekyll</title><link>https://www.joshfinnie.com/blog/life-changes-and-another-start-with-jekyll/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/life-changes-and-another-start-with-jekyll/</guid><description>Moving to DC and relaunching my blog with Jekyll and Bootstrap to focus on content and side projects.</description><pubDate>Thu, 29 Sep 2011 00:00:00 GMT</pubDate></item><item><title>Banning IE6</title><link>https://www.joshfinnie.com/blog/banning-ie6/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/banning-ie6/</guid><description>Why blocking IE6 users from accessing content hurts people who can&apos;t upgrade their corporate browsers.</description><pubDate>Wed, 15 Sep 2010 00:00:00 GMT</pubDate></item><item><title>Public Transportation in Connecticut</title><link>https://www.joshfinnie.com/blog/public-transportation-in-connecticut/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/public-transportation-in-connecticut/</guid><description>Frustrations with Connecticut&apos;s bus routes that fail to connect Hartford neighborhoods with suburban jobs.</description><pubDate>Wed, 24 Feb 2010 00:00:00 GMT</pubDate></item><item><title>Transfering Domains</title><link>https://www.joshfinnie.com/blog/transfering-domains/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/transfering-domains/</guid><description>Lessons learned from moving domains to GoDaddy: always keep domain registration separate from web hosting.</description><pubDate>Thu, 11 Feb 2010 00:00:00 GMT</pubDate></item><item><title>Converting GeoHackr from WordPress to Jekyll</title><link>https://www.joshfinnie.com/blog/converting-geohackr-from-wordpress-to-jekyll/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/converting-geohackr-from-wordpress-to-jekyll/</guid><description>Weighing the pros and cons of migrating a WordPress blog to Jekyll&apos;s static site generation.</description><pubDate>Tue, 02 Feb 2010 00:00:00 GMT</pubDate></item><item><title>First Post</title><link>https://www.joshfinnie.com/blog/first-post/</link><guid isPermaLink="true">https://www.joshfinnie.com/blog/first-post/</guid><description>The inaugural post launching Josh Finnie&apos;s personal blog powered by Jekyll on Webfaction.</description><pubDate>Mon, 25 Jan 2010 00:00:00 GMT</pubDate></item></channel></rss>