I’ve been a BestBikeSplit user for years now. It’s been great for predicting race times and power requirements beforehand, and for analyzing my CdA after races. But at $20 per month, the cost started to feel steep for how often I actually used it. That’s when I decided to create my own version using Claude. The project works surprisingly well, with results that match up closely with other paid subscription tools.
Check it out on Github here:
GitHub – paschmann/CDAAnalyzer: CDA Analyzer similar to Best Bike Split or MyWindSockCDA Analyzer similar to Best Bike Split or MyWindSock – paschmann/CDAAnalyzer
I got tired of being locked into FitIndex’s ecosystem when I wanted to move my weight tracking data to Garmin Connect. Their CSV export format doesn’t play nicely with other platforms, so I built (Thanks Claude Code!) a simple Node.js converter that transforms FitIndex exports into Fitbit’s CSV format (which most fitness platforms actually support). It handles the timestamp conversion, cleans up the data, and spits out a file you can import anywhere. Nothing fancy, just solves the annoying problem of data portability between fitness apps.
GitHub – paschmann/FitIndexToFitBit: Small Node.js application which converts FitIndex export files (CSV) to FitBit files which can then be uploaded to Garmin Connect.Small Node.js application which converts FitIndex export files (CSV) to FitBit files which can then be uploaded to Garmin Connect. – paschmann/FitIndexToFitBit
After building the open Source Reach SDK project, I realized it would be great to have an accompanying UI /Dashboard/Work bench where I would be able to test various notification methods and configurations before including them in my projects. Due to this, I build Reach UI, under the hood it is a simple static site with a Node.JS backend, using the Reach SDK. I think it does an ice job at showing how simple it can be to implement the SDK in your code base, and even includes some example code to make it even easier.
Check it out on Github below:
GitHub – paschmann/reach-ui: A test UI for the Node.js Reach SDKA test UI for the Node.js Reach SDK. Contribute to paschmann/reach-ui development by creating an account on GitHub.
A new take on an old idea of using EMA (Exponential moving averages) to aide in making stock trading decisions. This is a new version of my previous script.
This strategy/study also makes some assumed long buy/sells (With a cap of $5K per trade) of the stock to provide a report of the performance based on the time period.
I still have not had the time to invest in trying to execute these in a timely manner, but always fun to speculate and run some hypothetical scenarios.
TOS v2GitHub Gist: instantly share code, notes, and snippets.
8 years ago I was introduced to Serverless functions on AWS. The concept of having the ability to run code, without worrying about running the underlying sever infrastructure was pretty appealing, not only from a management and operations perspective, but also from the associated 24/7 runtime costs.
Serverless computing enables you to focus on writing code, wiring it up to a API gateway or endpoint, and only paying when the code is executed. Some of the key functions or aspects which make this unique compared to a traditional server stack such as LEPP, MEAN, LAMP, etc. is that you have to consider the key underlying characteristics of a micro-service architecture:read more
I have never really used Apple Script, but recently had the desire to backup all my Apple Photos to my local NAS. I currently have all my photos organized in a Folder -> Album structure so pulled this Apple Script together together to get this done. Create a new Apple Script (*.scpt) and select the source Photos Folder and a location to save the files on your filesystem. Note: Slashes in the name case folders to be created 🙁
Being an app developer, friends, family and co-workers often ask the question, how much does an app cost? This is a nice breakdown from Couchbase on the elements, stages and how long each stage of the development lifecycle takes, which helps with cost estimates.
Building an Apple PassKit app has been an interesting endeavor. Internally at SAP we recently built a small Business Card application which allows employees to create a digital business card, and subsequently generate a individual and customized wallet pass, allowing them to quickly retrieve it, without having to find the app, and open it on their device. Having a wallet pass lets users simply double tap the lock button, authenticate and see a collection of their passes.
Creating a pass has a unique requirement in that an application cannot simply create the pass directly on the device, or in the app. A pass needs to be generated server side, and signed with the appropriate signing certificate. In our case we utilized a small Typescript Node.JS server, which has a single API endpoint which accepts the information needed to populate the business card pass. The API then returns a signed .pkpass file. A .pkpass at its simplest form is simply a zipped bundle of assets and JSON files which describes the key fields and their respective values.read more
Over the past few years I have found myself re-implementing and re-writing basic features of server, web, mobile or service components. Registration, Login, Forgot Password, Notifications, Search, Help, FAQ, Contact Us, Maps are just a few I can think of, where half way through the development everything seems familiar and I have a case of deja vu. No doubt I have written or implemented a library or service which performs this specific function.
While developing the Changd app I found myself in one of the deja vu moments while writing the email notification service, and decided to pause development, and fix the root cause. After multiple Github issues to support a variety of notification providers, I came across Apprise, a python library which supports multiple notification provides. Since there was not a Node.js implementation, I decided to use Apprise as inspiration and influence for a Node.js library which I aptly named “Reach”.read more
You must be logged in to post a comment.