<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>samedwardes.com Blog</title><description>Sam Edwardes personal blog about Python, R, datascience, the web, and a few other random things.</description><link>https://samedwardes.com/</link><language>en-us</language><item><title>Running Across PEI</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>The summer of 2013 I and my friends Cory Babiak, Taylor Jenkins, and Jose Pauig ran across PEI. Jose followed us on a bike for support; Cory Taylor and myself all ran. We raised over $7000 for Project Jumpstart, a charity that helps Canadian Kids who cannot afford to play sports get in the game. The run itself was over 6 marathons in six days. It ended up being an extremely challenging task, much harder on the body than cycling. By the end we were running and walking the trail, and moving at a snails pace, but we did finish in our goal of 280 km in six days!</description><pubDate>Sun, 09 Sep 2012 00:00:00 GMT</pubDate></item><item><title>Cycling from Kingston to Toronto</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>After 4 years of school at Queen&apos;s University I was at last done. I wrote my final exam, packed my things, and the next morning departed on a bike ride from Kingston to Toronto with my friend Sam I have known since our first year together at Queen&apos;s. The trip was more or less a spur of the moment adventure. We planned the idea several weeks before leaving, and only came up with a rough estimate of where we would be each day.</description><pubDate>Sat, 27 Jun 2015 00:00:00 GMT</pubDate></item><item><title>Cycling Portugal</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>While studying abroad in Istanbul I took my semester break to travel to Portugal and cycle from Lisbon to Faro. The goal of the trip was to really enjoy the nature. I wanted it to be slow paced and relaxing. I wanted to take many stops, and enjoy all the sights and sounds. When I cycled across Canada there was no stopping to smell the roses. We were really determined to get across the country in 50 days, so we missed a lot of cool sights along the way for the sake of time.</description><pubDate>Mon, 01 Jan 2018 00:00:00 GMT</pubDate></item><item><title>The Best Great Lake Surfing Videos</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>Here are a handful of videos that inspired me to get out there, buy a surfboard and surf the Great Lakes.</description><pubDate>Wed, 17 Jul 2019 00:00:00 GMT</pubDate></item><item><title>Cycling Across Canada</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>During my first year of university my friend Cory and I began to plan a cycling trip across Canada. I don&apos;t exactly remember where the idea came from, but it quickly developed from a dream to something that could actually happen. We decided to raise money for the B.C. Cancer Foundation, as both of our families have been effected by cancer. We raised over $15,000 from friends, families, and local businesses. The experiences of fundraising, and the completion of the actual cycling trip have been two of the most rewarding experiences of my life.</description><pubDate>Thu, 22 Aug 2019 00:00:00 GMT</pubDate></item><item><title>Cycle Touring the BC Coast</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>With a few spare days between finishing work and starting a masters program at UBC I was keen to experience some adventure before going back to school. Since moving to Vancouver 1 year ago, I had been imagining some of the cycle touring trips I may do. BC&apos;s West coast holds so many potential options.</description><pubDate>Sat, 31 Aug 2019 00:00:00 GMT</pubDate></item><item><title>How to Deploy a Containerized Python Dash App to Heroku</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>I love using Plotly to build interactive visualizations. The syntax is very similar across R and Python, and plots looks great.</description><pubDate>Fri, 15 Nov 2019 00:00:00 GMT</pubDate></item><item><title>How to Open Jupyter Notebooks with a Double Click (Mac OS)</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>Jupyter Notebooks are an awesome tool. The standard way to open a Jupyter Notebook is from the command line.</description><pubDate>Fri, 31 Jan 2020 00:00:00 GMT</pubDate></item><item><title>How to Open GitHub.com Repo from the Command Line</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>During my Masters of Data Science I was often working on many GitHub repos at the same time. Most of our homework was graded on GitHub.com, so it was important to ensure that after pushing my local repo to GitHub.com that everything rendered correctly.</description><pubDate>Sat, 08 Feb 2020 00:00:00 GMT</pubDate></item><item><title>Is UFC Judging Fair?</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>When a UFC match ends with a knock-out or submission there is never any doubt who the better fighter was. But only 54% of fights end with a knock-out or submission. The other 45% of fights go to the judges score cards.</description><pubDate>Sun, 31 May 2020 00:00:00 GMT</pubDate></item><item><title>The Ultimate Data Science Setup for Mac (2020)</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>One of the funnest (and most frustrating) parts of data science is the vast array of tools available to us. It can be overwhelming where to start. Every now and then I like to completely wipe my computer clean, and then reinstall everything from scratch. This helps clean up my computer, and make sure everything is running smoothly.</description><pubDate>Mon, 08 Jun 2020 00:00:00 GMT</pubDate></item><item><title>How to learn R</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>As a data scientist one of the most common questions I get from colleagues and clients is how to get started on learning R. There is a plethora of great options out there today. Some of which are paid, and some of which are free.</description><pubDate>Mon, 31 Jan 2022 00:00:00 GMT</pubDate></item><item><title>The Ultimate Data Science Setup for Mac (2022 update)</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>You may think I am crazy, but I really enjoy setting up my computer. I am the kind of person who likes to wipe their computer clean every so often and start fresh with a clean slate. This blog post is an update to an earlier blog post from 2020. A lot has changed since then, so here is a look at my current setup.</description><pubDate>Tue, 15 Feb 2022 00:00:00 GMT</pubDate></item><item><title>How to create a FastAPI Web App with MongoDB and Beanie</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>A working example of a web app that uses FastAPI, MongoDB, and Beanie.</description><pubDate>Fri, 18 Mar 2022 00:00:00 GMT</pubDate></item><item><title>How to create a FastAPI Web App with authentication</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>How to create a FastAPI web app with authentication.</description><pubDate>Thu, 14 Apr 2022 00:00:00 GMT</pubDate></item><item><title>How to learn Python for Data Science</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>I wrote a blog post about How to learn R which I have found to be a very helpful resource for sharing with others. Now, I want to do the same for Python!</description><pubDate>Tue, 19 Apr 2022 00:00:00 GMT</pubDate></item><item><title>Using Jinja2 Templates with Pulumi</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>Over the last few months, I have spent a lot of time working on AWS. I often need to spin up EC2 instances, databases, or other assets for testing. Doing this by hand can become burdensome. You need to click through the AWS CLI and keep track of everything you have created. This sounds like a perfect use case for infrastructure as code. Enter Pulumi!</description><pubDate>Thu, 14 Jul 2022 00:00:00 GMT</pubDate></item><item><title>The Best Way to Install Jupyter Lab (it&apos;s Pipx)</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>Installing and managing your Python environment can be tricky. After many years of experimentation, here is my advice on the best way to install Jupyter Lab (and notebook).</description><pubDate>Sun, 23 Oct 2022 00:00:00 GMT</pubDate></item><item><title>How to do a Full Code Review on GitHub</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>GitHub has a friendly UI for performing code reviews. However, it only allows you to leave comments on the changed code. It does not allow you to leave comments or suggestions on existing code.</description><pubDate>Thu, 27 Oct 2022 00:00:00 GMT</pubDate></item><item><title>How to Set Linux User Passwords Without Interaction</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>I often want to create new users in Linux for testing. Creating new users without interaction can be challenging to automate because the `passwd` command provides no way for you to pass in a plain text password. It will prompt you for a password which is OK for interactive sessions but not suitable for automation (e.g. creating new users in Pulumi).</description><pubDate>Mon, 09 Jan 2023 00:00:00 GMT</pubDate></item><item><title>kubectl exec Into a Pod Without Knowing the Pod Name</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>I always forget how to exec into a pod in Kubernetes without knowing the pod name. This is a quick reminder for myself.</description><pubDate>Mon, 13 Feb 2023 00:00:00 GMT</pubDate></item><item><title>Do Everything with Pydantic - Lightning Talk PyCascades 2023</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>My lighting talk &quot;Do Everything with Pydantic&quot; for PyCascades 2023 in Vancouver.</description><pubDate>Sun, 19 Mar 2023 00:00:00 GMT</pubDate></item><item><title>How to learn Kubernetes</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>Over the past year I have dedicated a lot of time to learning Kubernetes. Here are the resources I have found most helpful!</description><pubDate>Fri, 14 Apr 2023 00:00:00 GMT</pubDate></item><item><title>How to Get Basic Info About Your Linux Server</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>I always forget these commands... so here is my list of helpful commands to get information about your server.</description><pubDate>Sat, 15 Apr 2023 00:00:00 GMT</pubDate></item><item><title>How to Send and Execute Code from The Editor to Terminal in VS Code</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>VS Code has a built in feature that allows you to send code directly from the editor to the terminal. By default, it is not assigned to any shortcut. You can assign it to a shortcut by adding the following to your `keybindings.json` file.</description><pubDate>Sun, 11 Jun 2023 00:00:00 GMT</pubDate></item><item><title>How to use pyenv with reticulate</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>The reticulate package allows you to execute Python code from R. If you use pyenv to install Python the default options will not work with reticulate.</description><pubDate>Thu, 13 Jul 2023 00:00:00 GMT</pubDate></item><item><title>How to Create a K8s Ingress for an External Service</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>This will show in preview.</description><pubDate>Sat, 19 Aug 2023 00:00:00 GMT</pubDate></item><item><title>How to Fix renv Numpy Issues</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>Reticulate is an R library that lets you execute Python code from within R. Recently, I attempted to use reticulate to access numpy from Python. Numpy was installed, but I kept getting an error message.</description><pubDate>Thu, 12 Oct 2023 00:00:00 GMT</pubDate></item><item><title>How to use 1Password for Secrets in ~/.bashrc or ~/.zshrc</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>An update on how I managed my secretes in the terminal with 1Password..</description><pubDate>Fri, 03 Nov 2023 00:00:00 GMT</pubDate></item><item><title>Automatic Homelab HTTPS with Caddy and Cloudflare</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>Caddy and Cloudflare make it easy to get TLS certificates for your homelab. In this blog post I will walk you through how to set up Caddy and Cloudflare for automated TLS!</description><pubDate>Sun, 19 Nov 2023 00:00:00 GMT</pubDate></item><item><title>How to use 1Password for Secrets in ~/.bashrc or ~/.zshrc (UPDATE)</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>An update on how I managed my secretes in the terminal with 1Password.</description><pubDate>Tue, 28 Nov 2023 00:00:00 GMT</pubDate></item><item><title>My requirements.txt workflow for a new Python project</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>My workflow for using a requirements.txt file in a new Python project.</description><pubDate>Tue, 09 Jan 2024 00:00:00 GMT</pubDate></item><item><title>Replacing pip with uv for Python projects</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>uv is &quot;an extremely fast Python package installer and resolver, written in Rust&quot; from https://astral.sh. Recently, I have started using uv in my day-to-day Python workflows. After a few weeks of usage I am sold! uv will be my go-to package manager for Python projects moving forward. It is MUCH faster than pip and I really like the new workflow it provides me with `uv pip compile` and `uv pip sync`.</description><pubDate>Sun, 21 Apr 2024 00:00:00 GMT</pubDate></item><item><title>Using DuckDB to Query Kobo Data</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>How to use DuckDB to query books, highlights, and annotations from a Kobo eReader.</description><pubDate>Sun, 23 Jun 2024 00:00:00 GMT</pubDate></item><item><title>Using nushell with kubectl</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>How to use nushell with kubectl</description><pubDate>Sat, 03 Aug 2024 00:00:00 GMT</pubDate></item><item><title>Managing Data Science Projects with uv</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>How I use uv to manage a Python data science project. uv can replace pyenv, poetry, and pipx.</description><pubDate>Wed, 28 Aug 2024 00:00:00 GMT</pubDate></item><item><title>Beautiful Reporting with Quarto Lighting Talk at PyCascades Seattle 2024</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>My lighting talk &quot;Beautiful Reporting with Quarto&quot; at PyCascades Seattle 2024.</description><pubDate>Wed, 11 Sep 2024 00:00:00 GMT</pubDate></item><item><title>How to get Free Maps on a Garmin Watch with a Mac Computer</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>How to add free maps to your Garmin watch when you have a mac computer using https://extract.bbbike.org/ and OpenMTP.</description><pubDate>Sun, 15 Sep 2024 00:00:00 GMT</pubDate></item><item><title>Using a Notion Database to Generate a Dynamic Links Page on My Blog</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>My workflow for adding links I save in Notion to my blog.</description><pubDate>Sat, 28 Sep 2024 00:00:00 GMT</pubDate></item><item><title>My Favourite Products and Tools of 2024</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>A summary of my favourite products and tools that I used in 2024, including ZSA Voyager Keyboard, Obsidian, Neovim, Raycast, Uv, Readwise Reader, Castro Podcast App, and the Arc Web Browser.</description><pubDate>Sun, 19 Jan 2025 00:00:00 GMT</pubDate></item><item><title>Posit Work Week 2025 Show and Tell: No Mouse Mondays</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>Slides for my Posit Work Week 2025 Show and Tell.</description><pubDate>Fri, 07 Feb 2025 00:00:00 GMT</pubDate></item><item><title>Using my Mac Without a Mouse</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>I have been on a mission to use my mouse less and keyboard more. Using the keyboard instead of the mouse is more ergonomic, efficient, and fun. The best tools I have found are the ZSA Voyager Keyboard, home row mods, Shortcat, Vimium, Aerospace, Vim grammar (many applications support it), Raycast, and Karabiner Elements.</description><pubDate>Mon, 10 Feb 2025 00:00:00 GMT</pubDate></item><item><title>How to automatically format Python and R code in VS Code or Positron</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>Automatically format Python and R code in VS Code or Positron using ruff and air.</description><pubDate>Tue, 04 Mar 2025 00:00:00 GMT</pubDate></item><item><title>pre-commit for Data Science</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>I have known about pre-commit for some time, but until recently, I never tried it. This week, I started to try out pre-commit, and I am finding it very useful. Here are a few pre-commits I have found useful for data science workflows.</description><pubDate>Thu, 20 Mar 2025 00:00:00 GMT</pubDate></item><item><title>Migrating from ZSH to Fish Shell</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>I recently switched from using the ZHS Shell to Fish Shell on my Mac. After several weeks of using Fish as my default shell, I am very happy with the change and plan to keep using Fish. This blog post explores why I moved from ZSH to fish.
</description><pubDate>Thu, 03 Jul 2025 00:00:00 GMT</pubDate></item><item><title>Strategy for Managing Keyboard Shortcuts</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>I use a lot of keyboard shortcuts on my computer. I try to use the mouse as little as possible. Remembering all the shortcuts I use daily would be really challenging. Instead of relying on raw memorization, I use a set of consistent patterns and strategies to make it easier. There’s still a lot of memorization involved, but these patterns simplify things.</description><pubDate>Mon, 08 Sep 2025 00:00:00 GMT</pubDate></item><item><title>How to install Ansible with uv</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>The official Ansible docs show how to install Ansible with pipx. Here is the equivalent command when using uv.</description><pubDate>Mon, 29 Dec 2025 00:00:00 GMT</pubDate></item><item><title>Vivaldi Follower Tabs are Awesome</title><link>https://samedwardes.com/blog/undefined/</link><guid isPermaLink="true">https://samedwardes.com/blog/undefined/</guid><description>Vivalid released a new feature called Follower Tab. It is the missing browser feature I did not know that I needed!</description><pubDate>Thu, 19 Mar 2026 00:00:00 GMT</pubDate></item></channel></rss>