Blog

Articles and tutorials about programming

Series

Curated series of programming articles. Each series walks you through a topic, post by post.

37 series

View all →
Build It in the Browser

Build It in the Browser

Build real, visual things in the browser — Three.js, Canvas, and WebGL — one searchable outcome per video. Scroll-driven animations, particle effects, and 3D scenes, built from scratch with code you can copy.

4 posts

Polars for Finance

Polars for Finance

The Rust-backed dataframe library for finance analysts. CSV/parquet I/O, expressions, returns, joins, rolling windows, lazy mode, DuckDB interop — 10 episodes.

6 posts

Tauri Patterns for Production

Tauri Patterns for Production

Patterns for shipping production-grade Tauri 2 desktop apps. Capabilities, plugins, IPC, state, packaging, signing — the structure every real Tauri app needs.

10 posts

Pandas for Finance

Pandas for Finance

The Python data toolkit for finance analysts. yfinance, DataFrames, returns, joins, time-series, and a final backtest in 15 episodes.

15 posts

SQL for Finance

SQL for Finance

Eight-episode series teaching SQL to finance and accounting professionals using SQLite and the AtlasParts dataset. The bridge from Excel and Power BI into the language the rest of the data team speaks.

8 posts

Excel & Power BI for Finance: Power BI (Season 2)

Excel & Power BI for Finance: Power BI (Season 2)

Season 2 of Excel & Power BI for Finance — Power BI for finance pros. Six episodes building the AtlasParts CFO board pack: bridging from Excel to Power BI, Power Query at scale, the star schema, DAX fundamentals, time intelligence, and the full dashboard end-to-end.

6 posts

Excel & Power BI for Finance: Excel (Season 1)

Excel & Power BI for Finance: Excel (Season 1)

Season 1 of Excel & Power BI for Finance — six episodes turning a real ERP General Ledger extract into a robust monthly close model. Reading the GL, lookups (SUMIFS / XLOOKUP / INDEX-MATCH), pivot tables for the P&L, Power Query for ETL, and Tables / named ranges / dynamic arrays for hand-offable workbooks. Sample company: AtlasParts Corp.

6 posts

ERP for Beginners: Going Deeper (Season 2)

ERP for Beginners: Going Deeper (Season 2)

Season 2 of ERP for Beginners — Going Deeper. Six more vendor-neutral concept episodes: customisation vs configuration, master data vs transactional data, following a transaction, integration, multi-entity/multi-country, and the cost of ERP.

6 posts

ERP for Beginners: Foundations (Season 1)

ERP for Beginners: Foundations (Season 1)

Season 1 of ERP for Beginners — Foundations. Six vendor-neutral episodes covering what ERP is, how it evolved, the core modules, the core business processes, on-prem vs cloud, and the vendor landscape.

6 posts

SAP Concepts

SAP Concepts

Presentation-style orientation to SAP — company, modules, S/4HANA, integration. A concepts-first tour for business analysts, consultants, and career switchers.

13 posts

Kotlin Compose Desktop App

Kotlin Compose Desktop App

Build native desktop apps with Kotlin and Compose Multiplatform — layouts, state, lists, navigation, file access, theming, dialogs, HTTP and JSON serialization, packaging. 19 hands-on lessons.

19 posts

Coding Chaos Animated Stories

Coding Chaos Animated Stories

Short animated stories about everyday coding pain — race conditions, off-by-one errors, NullPointerException, dependency-injection mishaps and missing meeting timeouts. Light-hearted programming humour.

6 posts

Programming Concepts in C#

Programming Concepts in C#

Programming fundamentals explained with C# code examples — arrays, data structures and core concepts every beginner needs before writing real apps.

1 post

Tech Explained

Tech Explained

Short, plain-English explainers on how the modern web works — DNS records (A, NS, MX, TXT, CNAME), how email is delivered, and how AI tooling like Claude Code wires into your stack.

6 posts

Golang for Beginners

Golang for Beginners

Learn Go from zero — setup, variables and types, control flow, loops, slices, maps, structs, interfaces, error handling, goroutines, channels and modules. 34-episode beginner series.

34 posts

Python for Beginners

Python for Beginners

Learn Python from your first program — variables, strings, math, conditionals, loops, lists, dicts, functions, modules, file I/O and error handling. 41 beginner-friendly episodes.

41 posts

AI Fun Facts

AI Fun Facts

Bite-sized fun facts about how artificial intelligence shows up in pop culture, movies and history — short reads to spark curiosity about AI's past and future.

1 post

Guess The Outputs

Guess The Outputs

Quick "what does this code print?" puzzles in Python and JavaScript — train your eye for the gotchas, surprising sort orders and beginner traps that catch even experienced developers.

3 posts

Guess The Code

Guess The Code

Identify programming languages from short code snippets — quick visual quizzes covering Rust, Ruby, Python, JavaScript and other popular languages by their unmistakable syntax.

6 posts

Rust by Examples

Rust by Examples

Learn Rust by building real apps — Cargo setup, CLI calculator, guessing game with random numbers, structs and methods, todo list, file I/O, JSON and TOML config parsers with serde.

12 posts

Zsh Mac Shell Scripting

Zsh Mac Shell Scripting

Master the macOS Zsh shell — file navigation, .zshrc customization, scripting with shebangs and chmod, variables, conditionals, loops, arrays, functions, getopts and automation. 30 lessons.

30 posts

Lightweight Tauri Desktop App

Lightweight Tauri Desktop App

Build cross-platform desktop apps with Tauri — Rust backend plus JavaScript or React frontend, commands, events, file system access, native dialogs and packaging. 23 practical tutorials.

23 posts

Rust for Beginners

Rust for Beginners

Learn Rust step by step — install and write your first program, variables, control flow, loops, vectors, strings, structs, enums, ownership, borrowing, traits and pattern matching.

17 posts

JavaScript/TypeScript/NodeJS

JavaScript/TypeScript/NodeJS

Short Node.js, JavaScript and TypeScript tutorials for absolute beginners — console basics, conditionals and loops to get you running your first scripts.

3 posts

Linux/Mac Cli Commands

Linux/Mac Cli Commands

Master the Linux and macOS terminal — ls, cd, mv, cp, grep, find, cat, less, more, head, tail, echo and the everyday commands that power your shell. 15 short tutorials.

15 posts

Swift with Copilot

Swift with Copilot

Learn Swift basics with help from GitHub Copilot — first program in VS Code, manipulate strings, work with dates, sort lists, leap-year checks and small algorithm exercises. 20 episodes.

20 posts

Github Copilot with Kotlin

Github Copilot with Kotlin

Pair-program with GitHub Copilot to learn Kotlin — strings, dates, lists, Jetpack Compose UI, ViewModel and mutableStateListOf, Ktor HTTP client, real-world recipes. 40 episodes.

40 posts

Python AI Tutorial Series

Python AI Tutorial Series

Build AI apps with Python and the Claude API — system prompts and personas, multi-turn chat, streaming, JSON output, vision, function calling and multi-tool agents. 24 hands-on episodes.

24 posts

SQLite with Neovim (Beginner)

SQLite with Neovim (Beginner)

Learn SQLite hands-on inside Neovim — CREATE TABLE, INSERT, SELECT, WHERE, AND/OR/NOT, ORDER BY, LIMIT/OFFSET, data types and typeof(). 12 beginner-friendly episodes.

12 posts

Rust GUI with Neowin

Rust GUI with Neowin

Build native Rust GUIs with egui from Neovim — first window, text widgets, buttons and state, text input, checkboxes, layouts, grids, dashboards and theming. 32 hands-on lessons.

32 posts

Learn Lua with NeoVim

Learn Lua with NeoVim

Learn Lua programming and Neovim at the same time — variables, types, strings, numbers, booleans, conditionals, logical operators, tables, functions and modules. 32-lesson series run inside Neovim.

32 posts

NeoVim Grammar

NeoVim Grammar

Learn Vim and Neovim grammar properly — modes, motions, text objects, search and marks, visual mode, macros, substitution, init.lua keymaps, lazy.nvim plugins and Treesitter.

12 posts

Common Questions in Python

Common Questions in Python

Quick answers to the questions every Python beginner asks — what is a function, arguments vs parameters, scope, and other small concepts that block early progress.

13 posts

LLM Challenges

LLM Challenges

Head-to-head AI coding challenges — Claude Opus, Sonnet and Haiku tackle the same prompt with surprising winners. ASCII art, animated clocks, spinners and other visual code tasks.

6 posts

Where The Game Always Wins

Where The Game Always Wins

Short comedic gaming-life animations — when buffering jumps, gem RNG, alien-abducted cars and a curious crow in Tetris all conspire to make you lose.

4 posts

Clojure for Beginners

Clojure for Beginners

Learn Clojure from the REPL up — atoms, refs and STM, agents, core.async channels, futures and promises, deps.edn workflows, dependencies, immutable data and functional patterns. 30 episodes.

30 posts

C in 100s

C in 100s

Learn C in bite-sized 100-second lessons — variables and types, format specifiers, operators, if/else, switch, loops, functions, pointers, arrays, structs and file I/O. 56-episode beginner series.

56 posts

All Posts

Matrix Digital Rain Effect in JavaScript (Canvas)

Matrix Digital Rain Effect in JavaScript (Canvas)

Video

The falling green code from The Matrix is one of the most recognizable effects on the web — and one of the smallest to build. No library, no shaders. About forty lines of plain Canvas 2D. This build u...

Celest KimCelest Kim
May 24, 2026
Particle Network Background with Canvas (No Library)

Particle Network Background with Canvas (No Library)

Video

The animated “connecting dots” background — points drifting around a hero section, lines snapping between the ones that get close — is one of the most-requested front-end effects. People r...

Celest KimCelest Kim
May 23, 2026
Make a Spinning Particle Galaxy in Three.js (TypeScript)

Make a Spinning Particle Galaxy in Three.js (TypeScript)

Video

A glowing spiral galaxy made of thousands of points looks like a lot of work. It isn’t. The whole thing is one loop that places each star, a material that makes overlapping points glow, and a re...

Celest KimCelest Kim
May 23, 2026
Build a Scroll-Driven 3D Animation with Three.js

Build a Scroll-Driven 3D Animation with Three.js

Video

Scroll-driven 3D is the trick behind a lot of award-winning landing pages: you scroll, and a 3D object responds — rotating, zooming, assembling, dissolving. It looks expensive. It isn’t. The who...

Celest KimCelest Kim
May 23, 2026
Python f-strings — 7 Things You Can Do

Python f-strings — 7 Things You Can Do

Video

An f-string is the modern way to build strings in Python. The f prefix turns the string into a template; anything inside curly braces gets evaluated and dropped in. Most people stop there. But f-strin...

Celest KimCelest Kim
May 23, 2026
Python List Comprehensions — 5 Patterns You'll Actually Use

Python List Comprehensions — 5 Patterns You'll Actually Use

Video

A list comprehension is a one-line for loop that builds a list. Same algorithm, fewer characters, and faster because more of the loop runs in C instead of Python bytecode. This post walks the five pat...

Celest KimCelest Kim
May 23, 2026
What Is a Lambda Function in Python? (5 Real Examples)

What Is a Lambda Function in Python? (5 Real Examples)

Video

A lambda is just an unnamed function. One expression, one line, no def, no name. That’s the whole definition. The reason you see lambdas everywhere in real Python code is that the standard libra...

Celest KimCelest Kim
May 23, 2026
pandas .map vs .apply vs .applymap — Pick the Right One

pandas .map vs .apply vs .applymap — Pick the Right One

Video

Three methods. Three different jobs. And one of them was removed in pandas 3.0 — which is why your copy-pasted Stack Overflow snippet just threw AttributeError. This post walks through .map, .apply, a...

Celest KimCelest Kim
May 23, 2026
Why Is My pandas Loop So Slow? iterrows vs Vectorize

Why Is My pandas Loop So Slow? iterrows vs Vectorize

Video

Because it’s a loop. Pandas was built to operate on whole columns at once — not on one row at a time. New users see a DataFrame, see something that looks like a spreadsheet, and reach for for ro...

Celest KimCelest Kim
May 22, 2026
Inner, Left, Outer — Merging DataFrames in pandas

Inner, Left, Outer — Merging DataFrames in pandas

Video

Real data lives in pieces. A trade blotter on one side, a ticker reference on the other. A users table here, an addresses table there. A sales table, a product catalog. The work of any pandas analysis...

Celest KimCelest Kim
May 22, 2026
3 Ways to Read JSON into a pandas DataFrame

3 Ways to Read JSON into a pandas DataFrame

Video

Every REST API, every webhook, every BigQuery export hands you JSON. The shape varies — sometimes a records array, sometimes one-object-per-line, sometimes deeply nested — but the destination is alway...

Celest KimCelest Kim
May 22, 2026
Excel to DataFrame in Python — pandas Tutorial

Excel to DataFrame in Python — pandas Tutorial

Video

Most finance data lives in spreadsheets. Pricing sheets, contract terms, fund holdings, board decks. Excel is still the lingua franca of business data, and getting it into Python is the most common ha...

Celest KimCelest Kim
May 20, 2026
How to Read SQL into a DataFrame in Python

How to Read SQL into a DataFrame in Python

Video

Three lines. import sqlite3 → conn = sqlite3.connect("prices.db") → pd.read_sql("SELECT * FROM prices WHERE Close > 200", conn). You now have a pandas DataFrame containing every row your SQL query ret...

Celest KimCelest Kim
May 19, 2026
How to Merge CSV Files in Python

How to Merge CSV Files in Python

Video

Three CSVs in a folder, one DataFrame out. pd.concat([pd.read_csv(f) for f in glob.glob("prices_*.csv")]) is two lines. pl.scan_csv("prices_*.csv").collect() is one. Either approach takes 28 thousand ...

Celest KimCelest Kim
May 19, 2026
Polars for Finance: Rolling Windows in Polars — Finance Tutorial

Polars for Finance: Rolling Windows in Polars — Finance Tutorial

Video

pl.col("Close").rolling_mean(window_size=20).over("Ticker") — every twenty-day moving average for every ticker, in one line. Add rolling_std, throw two standard deviations on either side, and you&rsqu...

Celest KimCelest Kim
May 19, 2026
Polars for Finance: Join DataFrames in Polars — Python Tutorial

Polars for Finance: Join DataFrames in Polars — Python Tutorial

Video

prices.join(sectors, on="Ticker", how="left") — the SQL semantics every finance analyst already knows, in Polars’s expression API. One line takes 28 thousand price rows and tags every one with i...

Celest KimCelest Kim
May 19, 2026
Polars for Finance: GroupBy and Aggregate in Polars — Python Tutorial

Polars for Finance: GroupBy and Aggregate in Polars — Python Tutorial

Video

df.group_by("Ticker").agg([...]) — one call, fourteen tickers, four statistics per ticker. The list inside .agg is a small declarative program the Polars engine compiles and runs in parallel. SQL wind...

Celest KimCelest Kim
May 19, 2026
How to Prepare a Parquet File in Python

How to Prepare a Parquet File in Python

Video

Three commands. pip install pyarrow pandas polars, then in a Python file: pl.read_csv("prices.csv").write_parquet("prices.parquet"). That’s the entire operation. The interesting part is why you ...

Celest KimCelest Kim
May 19, 2026
Polars for Finance: Compute Daily Returns in Polars — Finance Tutorial

Polars for Finance: Compute Daily Returns in Polars — Finance Tutorial

Video

pl.col("Close").pct_change().over("Ticker") — one line, fourteen tickers, six years of daily returns computed in parallel. The .over is the window function pattern that replaces every pandas groupby +...

Celest KimCelest Kim
May 19, 2026
Polars for Finance: Filter Rows and Select Columns in Polars — Python Tutorial

Polars for Finance: Filter Rows and Select Columns in Polars — Python Tutorial

Video

The Polars expression API in one image: df.filter(pl.col("Close") > 200).select(["Date", "Ticker", "Close"]). Read it left to right: take the DataFrame, keep rows where Close exceeds 200, then keep on...

Celest KimCelest Kim
May 19, 2026