# Live coding with dir stepper

DevFeed: [Live coding with dir stepper](<https://devfeed.tech/articles/live-coding-with-dir-stepper-20947.md>)

Original publisher: [Read original article](<https://jakewharton.com/live-coding-with-dir-stepper/>)

Published: 2026-07-16T00:00:00Z

Content type: article

Language: en

Sources: [Jake Wharton](<https://devfeed.tech/sources/jake-wharton.md>)

Topics: [intellij-platform](<https://devfeed.tech/topics/intellij-platform.md>), [IntelliJ IDEA](<https://devfeed.tech/topics/intellij-idea.md>), [Git](<https://devfeed.tech/topics/git.md>), [ide](<https://devfeed.tech/topics/ide.md>), [Code](<https://devfeed.tech/topics/code.md>), [Documentation](<https://devfeed.tech/topics/documentation.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [coding](<https://devfeed.tech/tags/coding.md>), [git](<https://devfeed.tech/tags/git.md>), [ide](<https://devfeed.tech/tags/ide.md>), [intellij-idea](<https://devfeed.tech/tags/intellij-idea.md>), [intellij-platform](<https://devfeed.tech/tags/intellij-platform.md>), [kotlinconf](<https://devfeed.tech/tags/kotlinconf.md>), [plugin](<https://devfeed.tech/tags/plugin.md>), [presentation](<https://devfeed.tech/tags/presentation.md>), [procedural](<https://devfeed.tech/tags/procedural.md>), [refactoring](<https://devfeed.tech/tags/refactoring.md>)

## AI overview

The article describes creating a workflow for live-coding presentations after finding that Git commits and interactive rebases were cumbersome for managing sequential coding steps. It explores using IntelliJ IDEA as an extensible platform for a tool that can move through steps, jump to completed states, refactor steps, and keep the process unobtrusive for the presenter and audience.

## Source excerpt

Two months ago I gave my first ever live programming talk at KotlinConf. It was called "Talking to terminals (and how they talk back)", and you can watch it here. I've previously done slide-heavy talks which contained small demos or navigating through an existing codebase. Since this talk was starting from nothing, I decided to just write all the code from nothing. This meant spending the majority of the time in the IDE, but also figuring out how to remember what I was supposed to be writing at each step. Making the wrong choice The exceedingly obvious solution to having a series of steps in a live coding presentation is a git repo and a commit for each step. Unfortunately, this is a huge pain in the ass and really doesn't work at all (at least not for me). I started with commits, but by the 7th or 8th commit I was spending more than half my time doing interactive rebases over the entire history. Need a function in step 8 that should've been extracted between step 3 and 4? That's another 10 minutes rewriting history. Because it's a small set of files that are changing, every commit conflicts with any changes to history. It's also not clear how you actually move through the history. We want to start from nothing and move forward through history. Generally, git helps you jump backwards from the latest, not stepping forward from the oldest. It's not impossible, it's just clearly going against the grain. The problem, defined Now thoroughly enjoying this distraction from writing the actual talk, I distilled what I was trying to solve. Ability to manually write the changes required or to simply jump to the finished step. Some steps are important to watch unfold while others are procedural. This also can help with time management when I (inevitably) run low on time. Easily refactor steps as I go. Later steps often requiring refactoring previous ones to minimize the diff. As the talk evolves I want to add or merge steps. Nearly invisible to me and the viewer. I don't want t