RSSAmplifier

Blog

Chris Concannon's Blog

Recent content on Chris Concannon's Blog

blog.concannon.techRSS feed ↗34 posts

Latest posts

Carmel - Big Sur Traverse

Introduction Check out more route details on Strava. A week’s notice isn’t much time to prepare for an epic all-day wilderness traverse, but I wasn’t going to turn down an opportunity to run across the Santa Lucia mountains, through the Ventana Wilderness from Carmel Valley to Big Sur. When my friend Will asked me if I wanted to join the group that was assembled for the trip, I…

Lake Sonoma 100k

TL;DR I ran the Lake Sonoma 100k on October 21, 2023 in a time of 11:47:02. My time was good for 8th overall. Race Summary Lake Sonoma is a beautiful, but tough, place to run a race. The trails certainly live up to the “relentless” motto of the race. In the October fall, much of the course was covered in a layer of oak leaves. I went skiing on acorns a few times, but managed somehow to…

The Big Sur Marathon

Introduction The section of Highway 1 that heads south from Carmel-by-the-Sea is one of the most scenic roads in the world. I’ve driven it several times in a car, and once on a motorcycle. I’ve also done multiple backpacking trips in that area, so I’ve seen how beautiful it can be in many different weather patterns. It’s a part of California that I always look forward to…

The Boston Marathon

Introduction The Boston Marathon is amazing. It’s a race that gets a lot of hype, and it lives up to every bit of it. This year was my fourth running of the race, and my first time returning since 2016. Months ago, I had high aspirations of executing my best marathon training ever in a buildup to this race. I was planning to run 70 miles per week on average, and reach a peak of 80-85 miles…

Caddy and Wireguard for Homelab Dynamic DNS

Self-hosting multiple services I’ve been running various services at home for a while now. My adventures in self-hosting started with an ethereum node on a Raspberry Pi back at the end of 2020. Today, I’m hosting about half a dozen services that run on two single-board computers, and I anticipate my self-hosted ecosystem to grow. Complexities arise When I started self-hosting things,…

Hosting my own wiki

I like taking notes when I’m building and/or learning things that require a lot of my time. Inevitably, I revisit those things from time to time, and I’m always happy when there are breadcrumbs from my past self to assist my memory and help me pick up where I left off. One realm where I appreciate the writings from my past self is in my home lab. I run several services on single-board…

TBD54566975

What’s behind the naming of TBD54566975? Just days after Jack Dorsey’s departure from Twitter, Square announced a major rebranding: Square becomes Block I became intrigued. Until today, I had never heard of this TBD54566975 entity. There was a lot to learn. The tbDEX Whitepaper As of today, TBD had a pinned tweet on their profile which mentions a whitepaper they published a few weeks…

Visualizing GPX Routes in 3D

Intro I love researching awesome running and backpacking routes. Years ago, I relied mostly on paper maps to aid my research and planning. In recent years, I’ve started to use 2D virtualization tools like Strava’s route planner and the Gaia GPS app. I’ve seen some cool 3D route visualization tools, specifically from Suunto and relive.cc, and I decided to dive into 3D geospatial…

The Bear 100

Introduction A month after racing TDS, and failing to finish after getting caught up in delays due to the runner accident and death,, I tried to redeem myself at the Bear. Unfortunately for me, familiar symptoms of an Achilles injury that I dealt with in 2020 began to pop up from miles 70-75. I decided that, rather than risk serious injury, it was best to quit the race. It was a tough choice to…

2021 TDS Race Report

Intro I attended the UTMB races for the first time this year, as an elite field entrant in the TDS race. TDS stands for “Sur les Traces des Ducs de Savoie” and it traverses some of the trails of UTMB, but also some additional regions in the southern area of the Mont Blanc massif. If you’re looking for a race report, you’ll find my recap of the first 58 miles below.

My Experience with Levels (Continuous Glucose Monitoring)

Introduction I used the Levels Health program for a 4-week period and I found a few benefits, but unfortunately I discovered several catastrophic problems with the program (and the sensors they use) that caused me to doubt the value that it can bring for most people. Knowing that Levels recommends of a target fasting glucose range of 78.5 mg/dL +/- 8.2%, I don’t see how I can possibly…

Backpacking the Lost Coast

Intro My fiancée and I were lucky enough to be invited on a backpacking trip to the Lost Coast in July 2021. The permits are very difficult to get because the optimal season is so short (July-September) and there are only 60 people per day allowed to be camping in the region. It’s a really popular trip! There’s a Perfect Season, and There’s a Wet Season I had tried to visit the…

Rae Lakes Loop in a Day

Intro One of many beautiful lakes on the route As I prepare to run TDS later this year, one thing I’m actively trying to do is get experience with big adventure days at high altitude. After attempting the Desolation 7 Summits and making it over 4 of them in a day, my second high-alpine adventure of the summer was the Rae Lakes Loop. The loop is a very popular 40-mile backpacking route that…

Desolation 7 Summits Attempt (4 Summits Achieved)

Intro My 4-summit route I woke up at 3am and was on the road within 30 minutes. I wanted to be starting close to sunrise, because I knew the 7 Summits route would take a long time. I was thinking that it would be 10-12 hours if things went well. I was probably right on the time estimate… but things didn’t go to plan. Nothing went horribly wrong, but an early navigation error put me…

Serverless: Free Basic Auth Password Protection of a Static Website

All plug-and-play website password-protection solutions from hosting providers require payment at a usable scale. I recently built a wedding website. Due to the semi-private nature of the event details, I decided to make it password-protected. I wanted a simple solution: a username and password prompt that would be performant, reliable, easy to use across all platforms, and free to implement. I…

Palomar Mountain Traverse FKT Fail

Intro I came up with a crazy idea to set a fastest known time (FKT) for running up and over Palomar Mountain in both directions! I’m sure that someone in history must have traveled over the mountain in a day, but I’m not sure that someone would have done it twice. Unfortunately, after doing so much research and scouting in preparation over a couple years, I ran into (literally) a…

Generating Static Reference Documentation from an OpenAPI Specification

Summary Working Example on GitHub Performance Benefits: Using Twitter’s relatively small OpenAPI definition: 2,250x reduction in asset sizes for reference docs (18 MB with Swagger, 0.008 MB with Hugo shortcode) 45% improvement (69 -> 100) in Google Lighthouse Performance score Using GitHub’s huge OpenAPI definition: 7x reduction in asset sizes for reference docs (18 MB with Swagger,…

Building a Personal Bitcoin Node for Less Than $100

I turned my Raspberry Pi 4 from an Ethereum Node into a Bitcoin Node. As a bitcoin node, it requires less in the way of compute power and consumes less bandwidth than my Ethereum node. The blockchain also fits on the same hard drive. The Ethereum 2.0 migration has started as of the time of this writing, with the genesis blocks of the 2.0 proof-of-stake chain having been written. Running an…

Mining Ethereum on a Raspberry Pi 4

I recently bought a Raspberry Pi 4 with the intention of using it to explore the compute side of the cryptocurrency world. There are plenty of resources out there to help newcomers get up-and-running with a bitcoin or ethereum node on a Raspberry Pi. However, these resources don’t talk about resource consumption, memory usage, performance constraints, and whether it is possible to mine with…

Grand Canyon R2R2R via Bright Angel

Intro The Rim-to-Rim-to-Rim run of the Grand Canyon has been on my bucket list of crazy ultrarunning adventures for years. In October 2020, I finally ran it via the Bright Angel trail. Compared to the more popular South Kaibab route, the Bright Angel route is logistically easier but longer in distance. In total, I covered ~50 miles with ~10,500' of elevation gain. Canyon temperatures in the…

FIT, GPX, KML, TCX, CSV - GPS Activity Filetype Differences

Activity Tracking Filetypes I recently found myself trying to parse raw data from my GPS-tracking watch, and I found that I could export the data in many different filetypes. Not knowing which type I needed, I decided to export all of them and learn the differences for myself. These formats are frequently used to share data across platforms such as Garmin, Suunto, Strava, TrainingPeaks, MapMyRun,…

Despite What You've Heard, Crime has Actually Decreased in 2020

Introduction I show in my research below that the Black Lives Matter protests have not caused unprecedented increases in crime; rather, crime in the largest US cities has decreased in 2020 compared to 2019. We need to put these rumors to rest - the Black Lives Matter protests are not a cause of never-before-seen levels of violence, looting, and vandalism. Crime in 2020 is down in our biggest…

Sleep Tracking with the Oura Ring and Coros Apex

Introduction Sleep-tracking devices have gained lots of attention over the past few years, and rightfully so. In this post, I expose my own sleep data as collected over a 1-month period by two different sleep trackers - the Oura Ring and the Coros Apex GPS watch. The Importance of Sleep Matthew Walker’s Best-Selling book Why we Sleep seems to come up frequently. I heard the book mentioned in…

Backpacking Yosemite

Backpacking Yosemite: Getting Permits I recently organized a backpacking trip for 2 nights in Yosemite National Park. The permit process is among the strictest of all US national parks, and careful planning is required to secure permits to backpack in Yosemite. Having failed to get permits to backpack in Yosemite in the past, I was so excited to be granted our first choice of routes that we had…

Quick Fast: My Strategy for Fasting as an Endurance Athlete

Intro I recently ate a ketogenic diet for 4 days, then I fasted through the 3 nights and 2 days that followed. When I resumed eating, 60 hours later, I returned to my “normal” diet. The idea for this weeklong experiment was to push my body into a “therapeutic zone” of ketosis in the fastest way possible, with the least amount of interruption to my day-to-day life. I was…

Multifactor Authentication Hacking is Getting Real

Bad Actors are Validating SMS Targets at Scale TL;DR - in a hurry? Jump to the Summary at the bottom of the post! I work for a company that protects online accounts and that automates account takeover detection and remediation. Needless to say, I’m well aware of the scale of attacks using account credentials. Many people share a password or three across most their online accounts, or they…

Image Optimization Using srcset with a Hugo Shortcode

Hugo Shortcodes to Process Your Images! We’re all familiar with slow website loads in circumstances where images aren’t optimized (food blog frustrations, anybody?). Fortunately, for those using Hugo as their static site generator, we can use a Hugo Shortcode to generate optimized image sets. If you are unfamiliar with the srcset attribute, it essentially provides a way for a browser…

1st Place at the 2019 Miwok 100k: Race Report

I won the storied and competitive Miwok 100k! This win came just three weeks after my win at the Zion 100. The Miwok course runs along many of the trails in Marin that I run on weekends. I also ran the race two years ago in 2016, so I was very familiar with the course. This gave me a huge advantage when it came to pulling ahead and maintaining my lead in the second half of the race.

1st Place at the 2019 Zion 100: Race Report

I won the Zion 100 ultramarathon!!! Strava wankers can find it here. I went into the race with a good amount of trepidation. I hadn’t finished a 100-mile event since Angeles Crest in 2016. My training leading up to Zion was much different than the training leading to my other 100-mile finishes… less volume, but more focus on heavy weightlifting, mobility, and structured speedwork 2x…

Adding an External Canonical URL to a Hugo Template

This post originally appeared on Medium.com Last year, I decided to create a personal website/blog while I was learning to deploy static-content websites via AWS. I chose to use the Hugo framework and the Minimal Academic theme. I recently decided that I want to cross-post content that I wrote for other sites to my personal website. This content includes a mix of Medium posts (including this one)…

NodeJS Lambda Authorizer for JWT Access Tokens

Here’s a nice diagram I created that depicts the Authentication and Authorization process using a web or mobile app, AWS API Gateway, a Lambda Authorizer, and OAuth2-issued JWT access tokens. Lambda Authorizer Role in AWS API Gateway Endpoint Access from Web Applications I wrote the authorizer function with two npm dependencies, both maintained by Auth0: jsonwebtoken jwks-rsa The jsonwebtoken…

Three-Legged OAuth2 from Single-Page Applications: A Use Case for a Function-as-a-Service

This post originally appeared as an article in the Levvel Resource Library. Source code for the end-result of the demo can be found here. About Single Page Applications Single Page Applications (SPAs) are the modern solution to deliver feature-rich user interfaces for web applications. Recent developments to SPA frameworks enable server-side rendering to improve search engine optimization and…

Thru-Hiking the Tahoe Rim Trail in 6 Days

Last week, I thru-hiked all 170 miles of the Tahoe Rim Trail. I was on the trail for a total of 124 hours (6 days, 5 nights). My average distance hiked per day was over 30 miles! This was the longest distance, by far, that I’ve traveled in self-supported backpacking. Chris on day 4, approximately 15 miles into his journey Some parts of the journey were relatively easy.

New Website!

Hello! This website used to be a single-page application that operated like a very basic flat-file content management system. I created it with Angular. While it was a fun project, it was overkill for a personal website. There was no need to use Angular for a website that I was updating with simple static content. I started a new job earlier this year. Maintaining the old website quickly became a…