<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Alvin Crespo</title>
    <link>https://alvincrespo.com/</link>
    <atom:link href="https://alvincrespo.com/feed.xml" rel="self" type="application/rss+xml" />
    <description>Alvin Crespo is a principal developer experience engineer who helps engineering teams adopt AI in ways that actually stick.</description>
    <language>en-us</language>
    <lastBuildDate>Mon, 10 Nov 2025 23:06:31 +0000</lastBuildDate>
    <item>
      <title>Managing Context and Memory for OpenAI API Chat Applications</title>
      <link>https://alvincrespo.com/ai/managing-context-and-memory-for-openai-api-chat-applications/</link>
      <guid isPermaLink="true">https://alvincrespo.com/ai/managing-context-and-memory-for-openai-api-chat-applications/</guid>
      <pubDate>Mon, 10 Nov 2025 23:06:31 +0000</pubDate>
      <description>Introduction Here&apos;s something that might surprise you: The OpenAI API doesn&apos;t remember anything between API calls. Each request is completely isolated, with no built-in memory of what you just discussed. So how do applications like ChatGPT maintain t...</description>
    </item>
    <item>
      <title>Quick Tip - Customizing WSL Starting Directory</title>
      <link>https://alvincrespo.com/devops-tooling/quick-tip-customizing-wsl-starting-directory/</link>
      <guid isPermaLink="true">https://alvincrespo.com/devops-tooling/quick-tip-customizing-wsl-starting-directory/</guid>
      <pubDate>Mon, 04 Aug 2025 19:46:00 +0000</pubDate>
      <description>If you’re using WSL like I am on Windows 11 - you most likely have run into the issue where launching WSL from the applications menu was starting you at /mnt/c/windows/system32:
If you need to customize this to work in your home directory, you can c...</description>
    </item>
    <item>
      <title>MySQL Query Optimization at Scale</title>
      <link>https://alvincrespo.com/databases/mysql-query-optimization-at-scale/</link>
      <guid isPermaLink="true">https://alvincrespo.com/databases/mysql-query-optimization-at-scale/</guid>
      <pubDate>Fri, 01 Aug 2025 17:57:47 +0000</pubDate>
      <description>Working with large datasets across multiple tables is a common challenge in enterprise applications, particularly those with rich histories and substantial data accumulation over time. These systems often present unique optimization opportunities tha...</description>
    </item>
    <item>
      <title>Integrating Stripe Webhooks in Ruby on Rails</title>
      <link>https://alvincrespo.com/ruby-rails/integrating-stripe-webhooks-in-ruby-on-rails/</link>
      <guid isPermaLink="true">https://alvincrespo.com/ruby-rails/integrating-stripe-webhooks-in-ruby-on-rails/</guid>
      <pubDate>Fri, 18 Apr 2025 22:59:24 +0000</pubDate>
      <description>Handling subscription payments is a common requirement for many modern web applications. Stripe is one of the most popular payment processing services, and their webhook system allows your application to respond to events happening within the Stripe ...</description>
    </item>
    <item>
      <title>React, Vite &amp; Production-Ready Docker</title>
      <link>https://alvincrespo.com/javascript-frontend/react-vite-production-ready-docker/</link>
      <guid isPermaLink="true">https://alvincrespo.com/javascript-frontend/react-vite-production-ready-docker/</guid>
      <pubDate>Fri, 31 Jan 2025 20:19:35 +0000</pubDate>
      <description>In my previous article, we set up a development environment for a Vite + React application using Docker. While that setup was perfect for development, production environments have different requirements around security, performance, and reliability. ...</description>
    </item>
    <item>
      <title>Stakeholder Communications: A Framework</title>
      <link>https://alvincrespo.com/engineering-leadership/stakeholder-communications-a-framework/</link>
      <guid isPermaLink="true">https://alvincrespo.com/engineering-leadership/stakeholder-communications-a-framework/</guid>
      <pubDate>Tue, 21 Jan 2025 14:12:53 +0000</pubDate>
      <description>Facilitating honest, authentic engagement, while not overwhelming stakeholders and contributors with information and updates (or starving them of information), is the best way to help individuals and groups appreciate project pitfalls, understand pro...</description>
    </item>
    <item>
      <title>Tool Breakdown: browser-actions/setup-chrome</title>
      <link>https://alvincrespo.com/devops-tooling/tool-breakdown-browser-actionssetup-chrome/</link>
      <guid isPermaLink="true">https://alvincrespo.com/devops-tooling/tool-breakdown-browser-actionssetup-chrome/</guid>
      <pubDate>Mon, 20 Jan 2025 18:43:56 +0000</pubDate>
      <description>In this new series, &quot;Tool Breakdown&quot;, I&apos;m walking through the core mechanics of the tools I use in various projects. I&apos;m starting with a deep dive into a critical component of the browser-actions/setup-chrome Github action. After encountering version...</description>
    </item>
    <item>
      <title>Getting Started with React + Vite + Docker</title>
      <link>https://alvincrespo.com/javascript-frontend/getting-started-with-react-vite-docker/</link>
      <guid isPermaLink="true">https://alvincrespo.com/javascript-frontend/getting-started-with-react-vite-docker/</guid>
      <pubDate>Thu, 16 Jan 2025 02:35:09 +0000</pubDate>
      <description>I’ve recently jumped back into React / Frontend development and was curious what tools the cool kids are using these days. At work, we use create react app, which seems to have been deprecated and isn’t even mentioned in the React docs anymore. So I ...</description>
    </item>
    <item>
      <title>Resolve the &quot;error while removing network&quot; with Docker + Docker Compose</title>
      <link>https://alvincrespo.com/devops-tooling/resolve-the-error-while-removing-network-with-docker-docker-compose/</link>
      <guid isPermaLink="true">https://alvincrespo.com/devops-tooling/resolve-the-error-while-removing-network-with-docker-docker-compose/</guid>
      <pubDate>Tue, 07 Jan 2025 01:54:06 +0000</pubDate>
      <description>Prerequisites
Docker version 4.37.1 or later
Basic familiarity with Docker Compose
Multiple Docker Compose files in your environment


The Problem This week I ran into a fun issue at work having to do with setting up our local development environ...</description>
    </item>
    <item>
      <title>Rails 8&apos;s Lazy Route Loading + Devise</title>
      <link>https://alvincrespo.com/ruby-rails/rails-8s-lazy-route-loading-devise/</link>
      <guid isPermaLink="true">https://alvincrespo.com/ruby-rails/rails-8s-lazy-route-loading-devise/</guid>
      <pubDate>Sun, 05 Jan 2025 12:14:11 +0000</pubDate>
      <description>Rails 8.0 introduces a significant change to route loading behavior, lazy loading routes by default in development and test. This change has implications for gems that interact with Rails&apos; routing system, particularly Devise, which I personally use o...</description>
    </item>
    <item>
      <title>How Test Coverage impacts Annual Recurring Revenue (ARR)</title>
      <link>https://alvincrespo.com/testing/how-test-coverage-impacts-annual-recurring-revenue-arr/</link>
      <guid isPermaLink="true">https://alvincrespo.com/testing/how-test-coverage-impacts-annual-recurring-revenue-arr/</guid>
      <pubDate>Mon, 02 Dec 2024 10:25:53 +0000</pubDate>
      <description>Over a 25-year life expectancy of a large software system, almost fifty cents out of every dollar will go to finding and fixing bugs. UNDERSTANDING, FINDING AND FIXING DEFICIENCIES. Herb K. The Cost of Poor Software Quality in the US: A 2022 Report. ...</description>
    </item>
    <item>
      <title>Enhancing a Scalable Export in Ruby on Rails: Lessons Learned</title>
      <link>https://alvincrespo.com/ruby-rails/enhancing-a-scalable-export-in-ruby-on-rails-lessons-learned/</link>
      <guid isPermaLink="true">https://alvincrespo.com/ruby-rails/enhancing-a-scalable-export-in-ruby-on-rails-lessons-learned/</guid>
      <pubDate>Fri, 18 Oct 2024 10:00:13 +0000</pubDate>
      <description>In my last blog post, I walked you through the implementation of a scalable export system in a Ruby on Rails application. Since then, I’ve encountered a few challenges, particularly around concurrency, file locking, and ensuring that data exports are...</description>
    </item>
    <item>
      <title>Build a Scalable Export in Ruby on Rails</title>
      <link>https://alvincrespo.com/ruby-rails/build-a-scalable-export-in-ruby-on-rails/</link>
      <guid isPermaLink="true">https://alvincrespo.com/ruby-rails/build-a-scalable-export-in-ruby-on-rails/</guid>
      <pubDate>Wed, 16 Oct 2024 10:07:36 +0000</pubDate>
      <description>Hey there! If you&apos;re a software developer with a few years of expertise or an entrepreneur establishing a platform and realize your customers require a way to export their data, this post is for you. I&apos;ve been creating SaaS applications for 15 years ...</description>
    </item>
    <item>
      <title>Disabling .env files for Github Copilot</title>
      <link>https://alvincrespo.com/devops-tooling/disabling-env-files-for-github-copilot/</link>
      <guid isPermaLink="true">https://alvincrespo.com/devops-tooling/disabling-env-files-for-github-copilot/</guid>
      <pubDate>Sat, 28 Sep 2024 11:04:34 +0000</pubDate>
      <description>I was curious if there was a way to configure Github copilot to NOT have access to certain files in a project and found that - it’s not necessarily straightforward. It turns out that there are no dotfiles you can set up or a setting to explicitly tel...</description>
    </item>
    <item>
      <title>Testing ViewComponent w/ Capybara</title>
      <link>https://alvincrespo.com/testing/testing-viewcomponent-w-capybara/</link>
      <guid isPermaLink="true">https://alvincrespo.com/testing/testing-viewcomponent-w-capybara/</guid>
      <pubDate>Tue, 13 Aug 2024 11:00:33 +0000</pubDate>
      <description>Today I was writing some tests and dug into a little bit of ViewComponent and Capybara. Most of time you read a tutorial and just kind of get whatever done, here I&apos;m going to explain in detail what my test is doing and why it&apos;s important.
💡 If you&apos;...</description>
    </item>
    <item>
      <title>[Tips] Docker aliases with zsh using Ohmyzsh</title>
      <link>https://alvincrespo.com/devops-tooling/tips-docker-aliases-with-zsh-using-ohmyzsh/</link>
      <guid isPermaLink="true">https://alvincrespo.com/devops-tooling/tips-docker-aliases-with-zsh-using-ohmyzsh/</guid>
      <pubDate>Mon, 12 Aug 2024 11:02:48 +0000</pubDate>
      <description>I use ohmyzsh as my preferred shell setup. I also use Docker. Recently, I&apos;ve been focused on automating the setup and teardown of my applications. This is where ohmyzsh&apos;s excellent support for docker comes in, as it has many aliases that help with sh...</description>
    </item>
    <item>
      <title>Tips for Working with Complex Normalized Databases</title>
      <link>https://alvincrespo.com/databases/tips-for-working-with-complex-normalized-databases/</link>
      <guid isPermaLink="true">https://alvincrespo.com/databases/tips-for-working-with-complex-normalized-databases/</guid>
      <pubDate>Tue, 30 Jul 2024 12:18:53 +0000</pubDate>
      <description>We’ve all been taught the benefits of normalizing our data. So I won’t bore you with those details, but to sum it up:
Normalization is the process of organizing data in a database. It includes creating tables and establishing relationships between t...</description>
    </item>
    <item>
      <title>Chart.js + Turbo Stimulus in Rails 7</title>
      <link>https://alvincrespo.com/ruby-rails/chartjs-turbo-stimulus-in-rails-7/</link>
      <guid isPermaLink="true">https://alvincrespo.com/ruby-rails/chartjs-turbo-stimulus-in-rails-7/</guid>
      <pubDate>Mon, 03 Jan 2022 18:53:27 +0000</pubDate>
      <description>Background Over the winter break I updated our gardening app, Jardim.io, to Rails 7. It was a breeze! However, we were still reliant on webpack because we had a React application that utilized nivo for our charting solution. Webpack and React are ove...</description>
    </item>
    <item>
      <title>Thoughts on Technology Choices</title>
      <link>https://alvincrespo.com/engineering-leadership/thoughts-on-technology-choices/</link>
      <guid isPermaLink="true">https://alvincrespo.com/engineering-leadership/thoughts-on-technology-choices/</guid>
      <pubDate>Wed, 14 Oct 2020 10:00:00 +0000</pubDate>
      <description>The technology you choose to build your product in is a critical one. That&apos;s why it&apos;s so important to understand the context in which this decision gets made. In today&apos;s thought piece I talk about what guides me and how I think through these kinds of decisions.</description>
    </item>
    <item>
      <title>Integrating Google OAuth in Rails - Part 1</title>
      <link>https://alvincrespo.com/ruby-rails/integrating-google-oauth-in-rails-part-1/</link>
      <guid isPermaLink="true">https://alvincrespo.com/ruby-rails/integrating-google-oauth-in-rails-part-1/</guid>
      <pubDate>Mon, 07 Sep 2020 13:00:00 +0000</pubDate>
      <description>Have you ever had to integrate OAuth? Integrate with Google? No?! Cool. This series is focused on helping you integrate with Google APIs fairly quickly. I&apos;m going to show you how to 1) create events for your users google calendar and 2) manage incomi...</description>
    </item>
  </channel>
</rss>
