James Ives https://jamesiv.es Collection of thoughts about Software Development, Design, and other things. Tue, 01 Apr 2025 17:47:28 GMT https://validator.w3.org/feed/docs/rss2.html Feed for Node.js James Ives https://jamesiv.es/images/logo.png https://jamesiv.es All rights reserved 2025, James Ives <![CDATA[F45 Broke Their Strava Integration So I Wrote My Own]]> https://jamesiv.es/blog/experiment/javascript/2025/03/14/f45-broke-my-beloved-strava-integration https://jamesiv.es/blog/experiment/javascript/2025/03/14/f45-broke-my-beloved-strava-integration Fri, 14 Mar 2025 14:00:00 GMT <![CDATA[They broke my beloved Strava integration, and I'm not happy about it. Let's fix it.]]> <![CDATA[Documenting Web Components With Storybook]]> https://jamesiv.es/blog/frontend/javascript/2025/02/19/documenting-web-components-with-storybook https://jamesiv.es/blog/frontend/javascript/2025/02/19/documenting-web-components-with-storybook Wed, 19 Feb 2025 14:00:00 GMT <![CDATA[In this article, I want to discuss how you can easily document your Web Components with Storybook so that your documentation provides a good user and developer experience.]]> <![CDATA[Improving Code Quality with Linting]]> https://jamesiv.es/blog/leadership/2024/10/11/improving-code-quality-with-linting https://jamesiv.es/blog/leadership/2024/10/11/improving-code-quality-with-linting Fri, 11 Oct 2024 14:00:00 GMT <![CDATA[Code linting is a great way to ensure that your codebase is consistent and that you're following best practices.]]> <![CDATA[Figma Config 2024]]> https://jamesiv.es/blog/frontend/design/2024/06/29/figma-config-2024 https://jamesiv.es/blog/frontend/design/2024/06/29/figma-config-2024 Sat, 29 Jun 2024 18:00:00 GMT <![CDATA[My experience at the 2024 Figma Config conference and some pictures I took there.]]> <![CDATA[Half-Life Dedicated Server With Docker]]> https://jamesiv.es/blog/experiment/docker/2024/06/20/half-life-dedicated-server-with-docker https://jamesiv.es/blog/experiment/docker/2024/06/20/half-life-dedicated-server-with-docker Thu, 20 Jun 2024 11:00:00 GMT <![CDATA[Learn how to create a Half-Life Dedicated Server instance using Docker including the ability to add custom configurations, mods and plugins.]]> <![CDATA[Demystifying Web Components]]> https://jamesiv.es/blog/frontend/javascript/2024/03/26/demystifying-web-components https://jamesiv.es/blog/frontend/javascript/2024/03/26/demystifying-web-components Sat, 23 Mar 2024 11:00:00 GMT <![CDATA[Learn how to build Web Components and why they're a great choice for your next project.]]> <![CDATA[Visual Testing Storybook with Playwright]]> https://jamesiv.es/blog/frontend/testing/2024/03/11/visual-testing-storybook-with-playwright https://jamesiv.es/blog/frontend/testing/2024/03/11/visual-testing-storybook-with-playwright Mon, 11 Mar 2024 11:00:00 GMT <![CDATA[Learn how to setup visual regression tests with Playwright and Storybook.]]> <![CDATA[Let's Chat About Design System Tokens]]> https://jamesiv.es/blog/frontend/design/2023/09/25/lets-chat-about-design-system-tokens https://jamesiv.es/blog/frontend/design/2023/09/25/lets-chat-about-design-system-tokens Mon, 25 Sep 2023 11:00:00 GMT <![CDATA[This article will focus on Design Tokens, one of the core elements of a design system. The hope is that if you're not familiar with the concept, you'll walk away with a better understanding of what they are and how they can be used.]]> <![CDATA[Syncing Figma Variables and Style Dictionary with GitHub Actions]]> https://jamesiv.es/blog/frontend/design/2023/08/01/syncing-figma-variables-with-github-actions-and-styledictionary https://jamesiv.es/blog/frontend/design/2023/08/01/syncing-figma-variables-with-github-actions-and-styledictionary Tue, 01 Aug 2023 11:00:00 GMT <![CDATA[Supporting your design system with Figma Variables.]]> <![CDATA[Fostering Positive Change with Innovation Week]]> https://jamesiv.es/blog/leadership/2023/07/21/fostering-positive-change-with-innovation-week https://jamesiv.es/blog/leadership/2023/07/21/fostering-positive-change-with-innovation-week Fri, 21 Jul 2023 11:00:00 GMT <![CDATA[Innovation Week is a week-long event that brings together teams to work on new ideas and projects to help us grow and improve ourselves and our products.]]> <![CDATA[Add your GitHub Sponsors to your project README with Actions]]> https://jamesiv.es/blog/github/actions/2023/06/30/add-your-github-sponsors-to-your-project-readme https://jamesiv.es/blog/github/actions/2023/06/30/add-your-github-sponsors-to-your-project-readme Fri, 30 Jun 2023 11:00:00 GMT <![CDATA[A simple way to add some value to your GitHub Sponsorship tiers with the help of GitHub Actions.]]> <![CDATA[Curse you, Global Entry. Using the CBP API to watch for appointments]]> https://jamesiv.es/blog/experiment/javascript/2023/06/07/curse-you-global-entry https://jamesiv.es/blog/experiment/javascript/2023/06/07/curse-you-global-entry Wed, 07 Jun 2023 11:00:00 GMT <![CDATA[Writing code around the Global Entry Appointment Scheduler because they cancelled an appointment last minute.]]> <![CDATA[Virtually Infinite Scrolling with Angular]]> https://jamesiv.es/blog/frontend/angular/2023/02/14/virtually-infinite-scrolling-with-angular https://jamesiv.es/blog/frontend/angular/2023/02/14/virtually-infinite-scrolling-with-angular Tue, 14 Feb 2023 11:00:00 GMT <![CDATA[In this article we will take a look at some common patterns to improve performance when implementing an infinite scroller with Angular.]]> <![CDATA[Engineering Design Systems In 2022]]> https://jamesiv.es/blog/frontend/design/2022/03/04/engineering-design-systems-in-2022 https://jamesiv.es/blog/frontend/design/2022/03/04/engineering-design-systems-in-2022 Fri, 04 Mar 2022 11:00:00 GMT <![CDATA[In this article I will break down some of the things I have learned over the years of working with design systems and some tooling you can use to help build your own.]]> <![CDATA[When Package Dependencies Become Problematic]]> https://jamesiv.es/blog/javascript/security/2022/02/13/when-package-dependencies-become-problematic https://jamesiv.es/blog/javascript/security/2022/02/13/when-package-dependencies-become-problematic Sun, 13 Feb 2022 22:00:00 GMT <![CDATA[In this article we explore some common security holes caused by npm packages.]]> <![CDATA[Deploying to GitHub Pages using GitHub Actions]]> https://jamesiv.es/blog/github/actions/2022/01/23/deploying-to-github-pages-with-github-actions https://jamesiv.es/blog/github/actions/2022/01/23/deploying-to-github-pages-with-github-actions Sun, 23 Jan 2022 22:00:00 GMT <![CDATA[Learn how to deploy your web application to GitHub Pages with the help of GitHub Actions.]]> <![CDATA[Rendering 3D Models in the Browser]]> https://jamesiv.es/blog/experiment/javascript/2021/11/26/rendering-3d-models-in-the-browser https://jamesiv.es/blog/experiment/javascript/2021/11/26/rendering-3d-models-in-the-browser Fri, 26 Nov 2021 22:00:00 GMT <![CDATA[In this article we'll explore different ways to create 3D models, along with some of the options available when it comes to displaying them in a web browser.]]> <![CDATA[Animating Sprite Sheets with CSS]]> https://jamesiv.es/blog/experiment/2020/12/12/animating-sprite-sheets-with-css https://jamesiv.es/blog/experiment/2020/12/12/animating-sprite-sheets-with-css Sun, 13 Dec 2020 00:00:00 GMT <![CDATA[Sprite Sheets are used in everything from video games, physical devices and even the web. In this post we will explore their use cases on the web.]]> <![CDATA[Generating Last Word Cocktail Variations]]> https://jamesiv.es/blog/experiment/2020/06/27/the-algorithmic-word https://jamesiv.es/blog/experiment/2020/06/27/the-algorithmic-word Sat, 27 Jun 2020 18:10:00 GMT <![CDATA[A look into how we can use algorithms to generate a list of Last Word cocktail variations.]]> <![CDATA[Programming an Elevator]]> https://jamesiv.es/blog/experiment/2020/05/31/programming-an-elevator https://jamesiv.es/blog/experiment/2020/05/31/programming-an-elevator Sun, 31 May 2020 18:00:00 GMT <![CDATA[Join me as I put far too much time into solving a question about programming elevators.]]> <![CDATA[Fetching Authenticated API Data with GitHub Actions]]> https://jamesiv.es/blog/github/actions/2020/03/07/fetching-authenticated-api-data https://jamesiv.es/blog/github/actions/2020/03/07/fetching-authenticated-api-data Sat, 07 Mar 2020 09:00:00 GMT <![CDATA[I created a GitHub Action that requests arbitrary authenticated API data on a schedule!]]> <![CDATA[Analyzing My Google Music Library]]> https://jamesiv.es/blog/experiment/2019/12/02/analyzing-my-google-music-library https://jamesiv.es/blog/experiment/2019/12/02/analyzing-my-google-music-library Wed, 11 Dec 2019 09:00:00 GMT <![CDATA[Let's analyze my Google Music library and see what genres I listen to the most without using an API.]]> <![CDATA[Creating the United Income Component Library]]> https://jamesiv.es/blog/react/2019/06/03/creating-our-component-library https://jamesiv.es/blog/react/2019/06/03/creating-our-component-library Mon, 03 Jun 2019 09:00:00 GMT <![CDATA[This article will cover the process of creating the United Income component library, and the best practices we've introduced along the way.]]> <![CDATA[Google Assistant Action for the DC Metro]]> https://jamesiv.es/blog/dialogflow/2018/12/05/dc-metro-google-assistant-action https://jamesiv.es/blog/dialogflow/2018/12/05/dc-metro-google-assistant-action Wed, 05 Dec 2018 09:00:00 GMT <![CDATA[Navigating the DC Metro with Google Assistant.]]> <![CDATA[Google I/O 2018]]> https://jamesiv.es/blog/conference/2018/05/12/google-io-18 https://jamesiv.es/blog/conference/2018/05/12/google-io-18 Sat, 12 May 2018 09:00:00 GMT <![CDATA[A write up of my experience at Google I/O 2018]]> <![CDATA[Unveiling ArcAds]]> https://jamesiv.es/blog/arc/2018/04/23/unveiling-arc-ads https://jamesiv.es/blog/arc/2018/04/23/unveiling-arc-ads Mon, 23 Apr 2018 09:00:00 GMT <![CDATA[Learn about ArcAds, a new library that simplifies and standardizes advertisement logic in a way that makes sense in the context of large-scale publishers.]]> <![CDATA[Building a Robot with NodeJS]]> https://jamesiv.es/blog/nodejs/2017/08/04/building-a-robot-with-nodejs https://jamesiv.es/blog/nodejs/2017/08/04/building-a-robot-with-nodejs Fri, 04 Aug 2017 09:00:00 GMT <![CDATA[Apparently you can build robots with NodeJS. Who knew?]]> <![CDATA[AMP Validator Slack Bot]]> https://jamesiv.es/blog/adn/amp/2017/03/16/amp-validator-cat https://jamesiv.es/blog/adn/amp/2017/03/16/amp-validator-cat Thu, 16 Mar 2017 07:00:00 GMT <![CDATA[Automating AMP validation with a Slack bot]]> <![CDATA[Google AMPConf 2017]]> https://jamesiv.es/blog/conference/2017/03/10/google-amp-conf https://jamesiv.es/blog/conference/2017/03/10/google-amp-conf Fri, 10 Mar 2017 07:00:00 GMT <![CDATA[I was in Manhatten for Googles AMPConf on behalf of Alaska Dispatch News.]]> <![CDATA[Steam Dev Days 2016]]> https://jamesiv.es/blog/conference/2016/10/16/steam-devdays https://jamesiv.es/blog/conference/2016/10/16/steam-devdays Sun, 16 Oct 2016 07:00:00 GMT <![CDATA[I attended the Steam Dev Days conference in Seattle, Washington hosted by Valve Software.]]> <![CDATA[Alaska Dispatch News 2.0]]> https://jamesiv.es/blog/adn/arc/2016/05/30/alaska-dispatch-news https://jamesiv.es/blog/adn/arc/2016/05/30/alaska-dispatch-news Mon, 30 May 2016 07:00:00 GMT <![CDATA[A look at the new Alaska Dispatch News website]]> <![CDATA[What I Learned at RenderConf 2016]]> https://jamesiv.es/blog/conference/2016/05/02/what-i-learned-at-renderconf2016 https://jamesiv.es/blog/conference/2016/05/02/what-i-learned-at-renderconf2016 Mon, 02 May 2016 07:00:00 GMT <![CDATA[I got to spend a couple of days in Oxford for the Render Conference. Here's what I learned!]]> <![CDATA[Back to Valve Software to Try the Vive]]> https://jamesiv.es/blog/hardware/2015/09/03/back-to-valve-to-try-the-vive https://jamesiv.es/blog/hardware/2015/09/03/back-to-valve-to-try-the-vive Thu, 03 Sep 2015 07:00:00 GMT <![CDATA[I was invited back to Valve Software, this time to try the Vive dev kit.]]> <![CDATA[Testing Valves Prototype Steam Hardware]]> https://jamesiv.es/blog/hardware/2013/12/01/steam-hardware https://jamesiv.es/blog/hardware/2013/12/01/steam-hardware Sun, 01 Dec 2013 07:00:00 GMT <![CDATA[Valve Software sent me a prototype Steam Machine and Controller to test out. Here's what I thought.]]> <![CDATA[Visit to Valve Software]]> https://jamesiv.es/blog/misc/2012/04/21/visit-to-valve-software https://jamesiv.es/blog/misc/2012/04/21/visit-to-valve-software Sat, 21 Apr 2012 07:00:00 GMT <![CDATA[I was invited to Valve for an office tour and to playtest an upcoming update for Team Fortress 2.]]>