Are Bontrager’s carbon wheels the best for the price?

This is the first article my series “Bontrager: a most undervalued brand?

I’ve now ridden two different Bontrager carbon wheelsets, so this article is based on these:

TL; DR

For the price, I’m not aware of a better carbon wheelset. They’re light, about 40–50% less money than most others, and for the mtb wheels (new version), apparently incredibly strong. If budget factors in to your choice, they are absolutely worth looking at.

Basic Specs

Line Pro 30

  • $1300 total: $580…


Bontrager makes some outstanding bike parts and clothing — especially when you factor in price.

I find myself continuously noticing great value from Bontrager bike parts and clothing. Nearly everything they make is of great quality AND has a far better price than the competition. There are exceptions of course, but I’ve found some real gems and my impression is that they don’t get the respect they should. Further, if you’re at all price conscious, which I think we all should be, then it’s really hard to ignore. …


Authenticating an API Gateway-based API can be done in a myriad of ways. Here are four possibilities when using AWS Serverless (API Gateway, Lambda, Cognito, etc.).

This article covers four techniques for authenticating an API implemented via API Gateway. There are of course many, many ways to do authentication, but these four are ones I’ve used with API Gateway and AWS-only technologies and should cover a variety of use cases. Two of these presume your user is AWS Cognito-based, the others do not (with one not pertaining to users). These techniques do NOT cover fine-grained access control (authorization) aspects. I’ve written this from my experience and mostly am documenting it for myself, hopefully, others may find it useful or a jumping-off point.

The four techniques I’ll…


In my previous article, “Skip Lambda, Save Data to DynamoDB Directly Using API Gateway; Process Later With Streams”, I describe a technique allowing you to skip using a Lambda function in an API, and deliver data directly to DynamoDB. This followup details why, in many cases, you shouldn’t do that.

First, to be clear, it’s not that you should never do it (see examples at the end). If you fully control your system, it’s a simpler, more efficient, and cheaper way to get data into DynamoDB (or any other AWS system you may need to proxy to). …


AWS’ API Gateway allows you to directly connect it to/proxy many other AWS services. This article discusses doing this with DynamoDB, as a way to create an API that adds data to DynamoDB, without needing to use a Lambda function. There are existing AWS docs on using API Gateway as a proxy for DynamoDB, however, as usual, those only cover how to do this in the AWS console. In particular, I’ll show how I set this up using the Serverless Framework (or CloudFormation, as the bulk is really just CloudFormation code), and how you transform the web request’s JSON so…


This is the first in a series of articles covering my favorite podcasts. This one covers Teamistry, now on it’s second season.

I’m starting this series off with Teamistry, both because it’s probably my current favorite, as well as it surprised me how much I liked it. Why? First, their description:

Teamistry is the chemistry of unsung teams that achieve the impossible

Honestly, I thought it would likely be a lot of BS management technique or silly team building ideas, etc. Teamistry is provided by Atlassian, a company who makes Jira (issue and project tracking software), Confluence (wiki), Trello (project…


Developers using Postgres on Mac — I’d suggest using Postgres.app, instead of Homebrew to install and manage databases. Postgres.app allows you to run specific, and multiple versions easily and won’t auto-upgrade your Postgres to a version you didn’t want.

I really like Homebrew in general for package management on macOS. That said, there is one key behavior of Brew that really irks me, which is that by default it will upgrade all your installed packages any time you do a new install or update! This is terrible for databases in particular. It is very likely you don’t want your DB…


Cognito user-based authenticated API calls through API Gateway generally require use of AWS’ v4 signing of the API request to employ API Gateways automatic authentication. Specifically for this case, we do not use a lambda authorizer— both because I don’t want to maintain that code, and because that adds a Lambda invocation for every API call (and this is a high volume API call). But what can you do if you cannot sign the URL for your API call (i.e. you don’t control the actual HTTP call)? …


I’m a huge fan of serverless, but one of the areas that’s still a bit tougher with it is testing. While you can mock an API call to a function, it’s not quite as easy to test an API endpoint as I’d experienced in more traditional stacks. This led me to creating a test suite in Postman, that hits my deployed APIs. Specifically I’m using this more as a smoke test, and final proof that the deployed APIs work as expected from real world use cases. I still have unit and integration tests in my codebase, but these Postman tests…


Amplify has a notifications mechanism (email) that sends you build notices. However, these notices have typos in the URLs they include, as well as they don’t incorporate your custom domain. Here’s one way to address that.

I’ve been using AWS Amplify Console to deploy a frontend app. Amplify has multiple components, so this is specifically about the Console piece, which deploys static web apps to S3+CloudFront. Amplify has some great features, including creating separate (subdomain based) deploys for every branch or pull request you create. You can configure this via patterns, to control whether all or only branches with certain…

Chris Bailey

NatureQuant CTO/Co-founder. HotelTonight Co-founder. Cyclist, trail runner, espresso & coffee lover, geek, traveler, foodie.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store