Skip to content

Instantly share code, notes, and snippets.

Cycling Coach

A pattern for building a personal cycling coach using LLMs.

This is an idea file, it is designed to be copy pasted to your own LLM Agent (e.g. OpenAI Codex, Claude Code, OpenCode / Pi, or etc.). Its goal is to communicate the high level idea, but your agent will build out the specifics in collaboration with you.

The core idea

Most cyclists' experience with training technology looks like this: you finish a ride, your head unit uploads to Strava or Garmin Connect, and you see a dashboard — TSS, normalized power, a map, maybe a fitness/freshness chart. TrainingPeaks adds structured workout prescriptions. Intervals.icu adds analytics. These tools are good at showing you data. But showing data is not coaching. A dashboard doesn't remember that your left knee flares up after long Z2 rides, doesn't notice that you consistently fade in the third interval of VO2max sets, doesn't know you're vegetarian, and doesn't adjust next week's plan because you had a terrible night's sleep. A human coach do

@leourbina
leourbina / llm-wiki.md
Created April 14, 2026 22:23 — forked from karpathy/llm-wiki.md
llm-wiki

LLM Wiki

A pattern for building personal knowledge bases using LLMs.

This is an idea file, it is designed to be copy pasted to your own LLM Agent (e.g. OpenAI Codex, Claude Code, OpenCode / Pi, or etc.). Its goal is to communicate the high level idea, but your agent will build out the specifics in collaboration with you.

The core idea

Most people's experience with LLMs and documents looks like RAG: you upload a collection of files, the LLM retrieves relevant chunks at query time, and generates an answer. This works, but the LLM is rediscovering knowledge from scratch on every question. There's no accumulation. Ask a subtle question that requires synthesizing five documents, and the LLM has to find and piece together the relevant fragments every time. Nothing is built up. NotebookLM, ChatGPT file uploads, and most RAG systems work this way.

def tokenize(code, nextToken='', result=None):
if result is None:
result = []
if len(code) == 0:
return result
nextChar, rest = code[0], code[1:]
if nextChar in delimiter:
@leourbina
leourbina / tmux-cheatsheet.markdown
Created June 9, 2020 20:24 — forked from MohamedAlaa/tmux-cheatsheet.markdown
tmux shortcuts & cheatsheet

tmux shortcuts & cheatsheet

start new:

tmux

start new with session name:

tmux new -s myname
# New prefix keybinding
unbind-key C-b
set-option -g prefix 'C-\'
bind-key 'C-\' send-prefix
# Scrollback
set-option -g history-limit 50000
# Copy/paste
bind -T copy-mode C-w send-keys -X copy-pipe-and-cancel "pbcopy"
@leourbina
leourbina / ModalConfirmation.js
Created February 7, 2017 21:24 — forked from pshrmn/ModalConfirmation.js
Confirmation History for React Router v3
// Export the function that will be used to display the confirmation
import React from 'react'
import ReactDOM from 'react-dom'
import Notification from './components/Notification'
// hard code the location of the modal holder here
var modalHolder = document.getElementById('#modal')
export default function ModalUserConfirmation(message, callback) {
{
"plugins": ["react"],
"extends": ["plugin:react/recommended"],
"rules": {
"no-confusing-arrow": 0,
"react/jsx-quotes": 0,
"jsx-quotes": [1, "prefer-double"],
"semi": [2, "never"],
"react/jsx-no-duplicate-props": 2,
"no-dupe-keys": 2,
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Draft • Decorators</title>
<link rel="stylesheet" href="../../dist/Draft.css" />
</head>
<body>
<div id="target"></div>
<script src="../../node_modules/react/dist/react.js"></script>
@leourbina
leourbina / gitaliases
Created January 15, 2016 20:17
Git Aliases
[alias]
co = checkout
ci = commit
st = status
br = branch
df = diff --patience
dw = diff --word-diff --patience
dt = difftool
dtc = difftool --cached
dwc = diff --word-diff --cached --patience

Keybase proof

I hereby claim:

  • I am leourbina on github.
  • I am leo (https://keybase.io/leo) on keybase.
  • I have a public key whose fingerprint is 9F22 86E6 83B5 1E3B B4DF A6B9 811E 903C 3E50 0E19

To claim this, I am signing this object: