Behind the scenes
About / Feedback
Who am I
Shiva Shivakumar
I have built large-scale data systems since 2000, including AdSense, BigQuery, and the
infrastructure behind Google Apps and Gmail. CS145 draws on systems I shipped, operated, or
watched fail and succeed at scale.
I designed this course around two questions:
- How do you keep a course practical when the data stack keeps changing?
In 25 years of building systems, I have watched workloads and hardware evolve while the core
principles endure. Cloud computing and consumer apps drove one wave of innovation. Cheap RAM,
SSDs, and now GPUs rewrote the cost model. Agents are driving the next. My job is to teach the
fundamentals in the context of where the industry is going.
- How to reach students who learn differently? After eight years of
teaching, I know some students use slides, some read notes, some watch videos at 2x, and some
learn by running code. So I build the course like an app to support multiple journeys.
My skills
- I curate the core content and keep it current, based on where the industry is heading.
- I am also pretty terrible at drawing pictures and animations. I write code instead.
How I built the app
This section is a worked example of what the
AI policy asks of you on projects:
ship with AI, own the result. Here is what that looked like for the course itself.
I want all the pages, PSETs and videos to cross-link to each other, so it runs as a full
RAG system with full text search. I treat this as a data and content problem, plus
a git problem. Hand-producing the slides, the notes, the video and the colabs makes a course
stale by week four.
I keep one primary content source per page, four render targets, everything under version
control.
Claude draws each topic as an animated SVG and I iterate on it (custom insult prompts)
until we get it right. ElevenLabs reads my scripts for TTS. We need to solve four problems to
keep the four views in step:
- Make a reveal land on the word that names it. Each step pins to a
verbatim narration phrase, not a timer. Reword the sentence and the reveal follows it.
- Walk code in step with the voice. The same trick, finer grained: a
scene names its tokens, and the pipeline lights them inside the code block as the narration
reaches them.
- Stop four views from drifting. Every scene binds to a section of the
page, and the video is generated from that content, so one edit moves all four.
- Catch a cue that stops matching. It fails silently: the animation falls
back to an even spread and the video still looks fine. So the build re-reads the rendered
frames, measures ink, and fails any content-heavy scene that comes out near-blank.
The middle band is where the work is. The figure and the narration are two inputs to one timeline, and the numbered groups inside the SVG are the animation sequence, so redrawing a step is how the video changes.
Feedback
My engineering bet is to make this timely and current. If you find bugs or content
drifts, please let me know in the feedback link at the top of this page. Thanks.