// Using your minimal native DOM library (15 lines)
function TodoApp() {
return r('div', null,
r('h1', null, 'Todo List'),
r('ul', null,
store.todos.map(todo =>
r('li', {
className: todo.done ? 'done' : '',
onClick: () => store.toggleTodo(todo.id)
}, todo.text)
)
),
r('input', {
placeholder: 'Add todo...',
onKeyDown(e) {
if (e.key === 'Enter') {
store.addTodo(this.value)
this.value = ''
}
}
})
)
}
// Full re-render on any change - just replace everything!
store.render = () => document.body.replaceChildren(...TodoApp())
What I love about this:
- Zero build step - no JSX transpilation, no bundler needed
- Direct DOM access - `this.value` just works, no synthetic events
- Brutally simple - the entire "framework" is ~10 lines
Key counterpoints:
- Global FX turnover runs near $9.6T per day (BIS, April 2025). A retail wave of calls will not move USD/JPY in a durable way at that scale.
- /6J options settle on /6J futures. When you buy calls, you mostly push dealer delta hedging into futures, then dealers unwind as exposure changes. No sustained spot yen demand comes from that flow.
- FXY calls track an ETF wrapper, not spot.
- “Widowmaker trade” most often refers to repeated losses from shorting Japanese government bonds, not a long-yen crowd squeeze.