Sign in

Aart Goossens

@aartgoossens.bsky.social
137 followers 88 following 157 posts

Founder and Developer of @sweatstack.bsky.social.

PostsRepliesMedia
Aart Goossens @aartgoossens.bsky.social · 30/09/2026
Remember the first Wattbikes with the quirky polar view? I still have one at home and my family still uses it for training a few hours every week. Still a great machine, even if it's a bit noisy and has no ERG mode.
100
Aart Goossens @aartgoossens.bsky.social · 22/08/2026
I have written this article for MYRA about "the shadows we call data". Writing it was an interesting process in thinking about what data represents and how it can be used. myranorge.substack.com/p/the-shadow... Thanks to the MYRA team (especially @sophierherzog.bsky.social) to make it readable.
myranorge.substack.com
The Shadows We Call Data
What Plato can teach us about data
010
Aart Goossens @aartgoossens.bsky.social · 30/06/2026
Just arrived in (warm!) Barcelona for this year's Science & Cycling conference. Especially keen to talk data plumbing, AI assisted coding and power duration models, so find me if you're around!
100
Reposted by Aart Goossens
Simon Willison @simonwillison.net · 23/03/2026
Starlette 1.0 is out! I used this as an opportunity to experiment with Claude Skills, since Claude isn't yet familiar with the (minor) breaking changes in the 1.0 release compared to 0.x simonwillison.net/2026/Mar/22/...
simonwillison.net
Experimenting with Starlette 1.0 with Claude skills
Starlette 1.0 is out! This is a really big deal. I think Starlette may be the Python framework with the most usage compared to its relatively low brand recognition because …
7652
Aart Goossens @aartgoossens.bsky.social · 19/03/2026
What if your .fit files were queryable? What if you could point a Python library at ~1000 .fit files, ask for the average power of your 10 longest rides in 2025, and get the answer in 1.7s?
111
Aart Goossens @aartgoossens.bsky.social · 18/03/2026
Another day, another experiment: How fast can we compute mean-max curves in Python? Thanks to Numpy/Numba, the speedup with Rust is not that big, but differences in algorithms and tools make a huge difference.
100
Aart Goossens @aartgoossens.bsky.social · 16/03/2026
How fast can we parse FIT files in Python? I've been thinking about building a Rust-backed parser for a long time and finally got around to a proof-of-concept benchmark: → With a limited scope, Rust is 15-20x faster → A 6h bike ride parsed in ~130ms github.com/SweatStack/fit-parsing-experiment
github.com
320
Aart Goossens @aartgoossens.bsky.social · 05/03/2026
With all the attention this got, seemed worth building the proper solution: a local proxy that serves files directly to sites, data never leaves your computer. New version + instructions: goldencheetah-web-viewer.pages.sweatstack.dev
goldencheetah-web-viewer.pages.sweatstack.dev
GoldenCheetah Web Viewer
101
Reposted by Aart Goossens
DC Rainmaker @dcrainmaker.com · 03/03/2026
An interesting wrap-up presentation from the security researcher who found the COROS watch security vulnerabilities last year. Worth a watch if you're into geekery: www.dcrainmaker.com/2026/03/geek...
0101
Aart Goossens @aartgoossens.bsky.social · 04/03/2026
What if you could analyze your GoldenCheetah data in the browser? No exports, no Python/R scripts. Just open a URL. The web is a great delivery platform: no installs, works everywhere, easy to share. I built a proof of concept: goldencheetah-web-viewer.pages.sweatstack.dev
121
Reposted by Aart Goossens
FastAPI @fastapi.tiangolo.com · 01/03/2026
FastAPI 0.135.0, with Server-Sent Events: fastapi.tiangolo.com/tutorial/ser... ✨
fastapi.tiangolo.com
Server-Sent Events (SSE) - FastAPI
FastAPI framework, high performance, easy to learn, fast to code, ready for production
1172
Reposted by Aart Goossens
FastAPI @fastapi.tiangolo.com · 27/02/2026
Big features in FastAPI 0.134.0 ✨ 🌊 Stream JSON Lines with yield: fastapi.tiangolo.com/tutorial/str... 🦀 @pydantic.dev serializes each item to JSON (on Rust) for max perf 📦️Stream binary data with yield: fastapi.tiangolo.com/advanced/str... 🤖 Library Agent Skill updated with this 🥚 Easter egg
0122
Aart Goossens @aartgoossens.bsky.social · 27/02/2026
I'm definitely not a designer (and never will be), but playing with animations like these in Claude Code is super fun. (and an infinite rabbit hole for your time)
130
Aart Goossens @aartgoossens.bsky.social · 26/02/2026
Sneak peek at something I'm working on: Making it easier to bring Python analyses to the web, no web servers or containers needed. Built on Pyodide/PyScript. The cold start (~10-15s) isn't ideal, but seems manageable (?). Would love feedback or ideas for use cases to test!
131
Aart Goossens @aartgoossens.bsky.social · 13/02/2026
I'm really proud of how this works. It's really fun to be able to just think of a type of visualization/analysis/whatever and have it publicly available just a few minutes later.
110
Aart Goossens @aartgoossens.bsky.social · 31/12/2025
Last day of the year: Time to make up the balance. You already know how far you ran, but how hard did you recover? CouchGains: Your Year in Recovery. Finally, the recognition you deserve for doing absolutely nothing. Powered by @sweatstack.bsky.social couchgains.sweatstack.no
001
Reposted by Aart Goossens
Michael Spicer @michaelspicer.bsky.social · 30/12/2025
how all youtube ads sound to me
621571443
Aart Goossens @aartgoossens.bsky.social · 25/12/2025
Your Strava Year in Sport, but without the nonsensical metrics like who kudoed me most (I already know who's stalking me). Slightly geeky. Powered by @sweatstack.bsky.social. graph.sweatstack.no
011
Reposted by Aart Goossens
SweatStack @sweatstack.bsky.social · 18/12/2025
Kevin Yven (Sport'N Data) created this awesome Yearly Summary Wrap using SweatStack. Link: sportndata.com/wrapped
001
Reposted by Aart Goossens
Simon Willison @simonwillison.net · 14/12/2025
JustHTML by @emilstenstrom.bsky.social is a new Python library (no dependencies) that parses HTML according to the HTML5 specification and passes the 9,200 test html5lib-tests suite It's 3,000 lines of code mostly written by coding agents over a couple of months simonwillison.net/2025/Dec/14/...
simonwillison.net
JustHTML is a fascinating example of vibe engineering in action
I recently came across JustHTML, a new Python library for parsing HTML released by Emil Stenström. It’s a very interesting piece of software, both as a useful library and as …
412511
Reposted by Aart Goossens
FastAPI @fastapi.tiangolo.com · 08/12/2025
The full-stack-fastapi-template now uses @shadcn.com / ui (with @tailwindcss.com ) for the frontend 🚀🎉 There's still dark mode too, and all the nice things 🦇 Thanks alejsdev! 🙌 github.com/fastapi/full...
021
Reposted by Aart Goossens
SweatStack @sweatstack.bsky.social · 28/11/2025
New blog: Core vs Context sweatstack.no/blog/2025/11...
sweatstack.no
Core vs Context - SweatStack
011
Reposted by Aart Goossens
FastAPI @fastapi.tiangolo.com · 10/11/2025
A basic FastAPI app in one command 🚀 Install uv: docs.astral.sh/uv/getting-s... Run: uvx fastapi-new awesomeapp ✨ Done! ✨ Thanks @savannah.dev ! 🙌 github.com/fastapi/fast...
github.com
GitHub - fastapi/fastapi-new: Create a new FastAPI project in one command
Create a new FastAPI project in one command. Contribute to fastapi/fastapi-new development by creating an account on GitHub.
0103
Aart Goossens @aartgoossens.bsky.social · 27/10/2025
🤓
110
Reposted by Aart Goossens
DC Rainmaker @dcrainmaker.com · 22/10/2025
Strava just "voluntarily dismissed" its huge lawsuit against Garmin for patent infringement. The question is, why, and what happens next? www.dcrainmaker.com/2025/10/stra...
dcrainmaker.com
Strava Voluntarily Drops Lawsuit Against Garmin
 Strava’s multifaceted legal (and social media) attack on Garmin was short-lived. Just 21 days after filing the original patent infringement case, alongside a Reddit post from their executive team at...
1526
Reposted by Aart Goossens
Simon Willison @simonwillison.net · 16/10/2025
Claude Skills are awesome, maybe a bigger deal than MCP simonwillison.net/2025/Oct/16/...
simonwillison.net
Claude Skills are awesome, maybe a bigger deal than MCP
Anthropic this morning introduced Claude Skills, a new pattern for making new abilities available to their models: Claude can now use Skills to improve how it performs specific tasks. Skills …
2219934
Reposted by Aart Goossens
DC Rainmaker @dcrainmaker.com · 02/10/2025
Exclusive: Strava just sued Garmin, demanding the company stop selling all their fitness devices (watches and bike computers), due to infringing on a patent. I dive into what's being said, a whole lot of history, what it means, and much more: www.dcrainmaker.com/2025/10/stra...
107110
Reposted by Aart Goossens
Mark Burnley @drmarkburnley.bsky.social · 01/10/2025
100 years ago this month, AV Hill published 3 papers summarising a lecture on the physiology of athletic records he gave at the British Association for the Advancement of Science. They gave birth to exercise physiology as we know it today. physoc.onlinelibrary.wiley.com/doi/10.1113/...
physoc.onlinelibrary.wiley.com
Blue plaque review series: A.V. Hill, athletic records and the birth of exercise physiology
Abstract figure legend Depiction of the world running records from 1925 studied by A. V. Hill and those of 2025 up to and including ultradistance events on a semi-logarithmic plot. These records, in ....
001
Aart Goossens @aartgoossens.bsky.social · 25/09/2025
Apparently Garmin added OAuth2 to their Connect API: New apps can already use it, existing apps can't migrate yet. More info "this fall". As a developer, this makes me very happy (maybe more than it should, but OAuth1 really is a pain to work with). Docs: developerportal.garmin.com/sites/defaul...
100
Reposted by Aart Goossens
Mark Burnley @drmarkburnley.bsky.social · 18/09/2025
You can see exactly where Wightman’s tank emptied, about 5-10 m from the line (by the Honda sign). If you calculate his critical speed and D’ from his outdoor PBs, D’ was gone 6 m before the line.
052
Reposted by Aart Goossens
David Tinker @davidtinker.bsky.social · 17/09/2025
Intervals.icu uses pretty much the same method to find max efforts. Doesn't do any pre-smoothing of the power data. I never tried smoothing.
131
Reposted by Aart Goossens
James Spragg @james-spragg.bsky.social · 17/09/2025
So there you have it. This was our proposed solution to interrogate real-world (messy) MMP data, identify maximal values in that data, and use (only) those to derive CP.
131
Aart Goossens @aartgoossens.bsky.social · 16/09/2025
@james-spragg.bsky.social Hey James. Is it possible to share the code or detailed explanation of the "shoulder method" in your "An improved methodology..." paper from 2023? I'm considering making a paper playground (paperplayground.app) for it.
120
Aart Goossens @aartgoossens.bsky.social · 16/09/2025
This comment/thread made me realize I had some gaps in my intuition around regression methods for power-duration models. New blog: gssns.io/posts/same-m...
gssns.io
Same model, different regression
Same model, different regression There are different ways to fit the 2-parameter CP model: You can transform the data, change what you’re optimizing, or use different regression techniques. My recent ...
120
Aart Goossens @aartgoossens.bsky.social · 12/09/2025
I'm building a new Paper Playground for this paper: arxiv.org/abs/2503.14841 This gives me a chance to revisit asymmetric loss functions for fitting the 3-parameter CP model (following up on my earlier blog here: gssns.io/posts/asymme...)
arxiv.org
The three-dimensional impulse-response model: Modeling the training process in accordance with energy system-specific adaptation
Athletic training is characterized by physiological systems responding to repeated exercise-induced stress, resulting in gradual alterations in the functional properties of these systems. The adaptive...
120
Aart Goossens @aartgoossens.bsky.social · 12/09/2025
New blog: Mean-max sampling gssns.io/posts/mean-m...
gssns.io
Mean-max sampling
Mean-max sampling tl;dr: Mean-max downsampling can significantly reduce computation and storage requirements for mean-max curves. Mean-max curves show your best sustained efforts across different dura...
020
Reposted by Aart Goossens
SweatStack @sweatstack.bsky.social · 10/09/2025
New tutorial: "One-Off Analysis Scripts: Cycling Torque Example" developer.sweatstack.no/tutorials/on...
001
Aart Goossens @aartgoossens.bsky.social · 05/09/2025
Friday Vibe Coding
100
Aart Goossens @aartgoossens.bsky.social · 03/09/2025
New blog: Asymmetric loss for power duration models gssns.io/posts/asymme...
gssns.io
Asymmetric loss for power duration models
Asymmetric loss for power duration models Most applications of power duration models apply least squares regression to find the best fit through your data. This seems reasonable: take your best effort...
130
Reposted by Aart Goossens
Cap @captain7bag.bsky.social · 30/08/2025
Amazing!: fpca.paperplayground.app From @aartgoossens.bsky.social a Paper Playground paperplayground.app implementation of the FPCA model. It's a great concept to interactively showcase research results. cc @drphilipskiba.bsky.social
174
Reposted by Aart Goossens
Cap @captain7bag.bsky.social · 19/08/2025
New paper with @drphilipskiba.bsky.social is now out: journals.humankinetics.com/view/journal... We took a new approach to modeling the power duration curve in cyclists using functional principal component analysis.
journals.humankinetics.com
3125
Reposted by Aart Goossens
Simon Willison @simonwillison.net · 13/08/2025
GitHub Codespaces provides a free web-based development environment backed by a Linux container... and it turns out it also includes a GITHUB_TOKEN environment variable that provides free API access to the GitHub Models collection of LLMs ... here it's running my LLM CLI utility
Screenshot of a GitHub Codespaces VS Code interface showing a README.md file for codespaces-llm repository. The file describes a GitHub Codespaces environment with LLM, Python 3.13, uv and the GitHub Copilot VS Code extension. It has a "Launch Codespace" button. Below shows a terminal tab with the command "llm 'Fun facts about pelicans'" which has generated output listing 5 pelican facts: 1. **Huge Beaks:** about their enormous beaks and throat pouches for scooping fish and water, some over a foot long; 2. **Fishing Technique:** about working together to herd fish into shallow water; 3. **Great Fliers:** about being strong fliers that migrate great distances and soar on thermals; 4. **Buoyant Bodies:** about having air sacs beneath skin and bones making them extra buoyant; 5. **Dive Bombing:** about Brown Pelicans diving dramatically from air into water to catch fish.
414723
Reposted by Aart Goossens
DC Rainmaker @dcrainmaker.com · 30/06/2025
COROS has confirmed a substantial set of security vulnerabilities, impacting not just the watch, but COROS online account as well. These were initially spotted by security researcher Moritz Abrell, and I've confirmed they impact all devices. Full details: www.dcrainmaker.com/2025/06/coro...
0158
Reposted by Aart Goossens
Simon Willison @simonwillison.net · 29/06/2025
If you're interested in the nascent field of context engineering (the new, more cromulent alternative to prompt engineering) Drew's piece here provides some excellent nomenclature for some of the challenges you might face...
510411
Reposted by Aart Goossens
Armin Ronacher @mitsuhiko.at · 24/06/2025
Feature request for sonnet/claude 5: please unlearn everything about pip, pipenv, requirements.txt. Go all in on uv :P
3685
Aart Goossens @aartgoossens.bsky.social · 24/06/2025
Apparently I'm adapting to my 3-year-old's sense of humor a little too well 😅 ``` git stash poop fatal: subcommand wasn't specified; 'push' can't be assumed due to unexpected token 'poop' ```
000
Reposted by Aart Goossens
Armin Ronacher @mitsuhiko.at · 23/06/2025
Agent says no.
7265
Reposted by Aart Goossens
Janis Fiedler @fiejanis.bsky.social · 23/06/2025
📊 New Publication! We analyzed 5000+ cycle ergometer tests (ages 14-64) to create reference standards of lactate thresholds for health studies and clinical practice. Full text: doi.org/10.1080/0264... #Exercise #SportsScience 🧪
Displayed are the centile curves at different percentiles for relative and absolute power at the individual lactate threshold.
1143
Reposted by Aart Goossens
Michael Friendly @datavisfriendly.bsky.social · 21/06/2025
📊Looking to re-decorate your #dataviz office? Y ou need Boxplot Shelves!
A set of three wall shelf sets, in the form of boxplots
618421
Reposted by Aart Goossens
Cap @captain7bag.bsky.social · 16/06/2025
FPCA paper with @drphilipskiba.bsky.social accepted at IJSPP so that’s a nice way to start the week.
1101