Blog
Articles and tutorials about programming
Series
Curated series of programming articles. Each series walks you through a topic, post by post.
37 series

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
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
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
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
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)
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)
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)
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)
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
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
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
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 fundamentals explained with C# code examples — arrays, data structures and core concepts every beginner needs before writing real apps.
1 post

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
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
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
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
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
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
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
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
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
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
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
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
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
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
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)
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
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 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
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
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
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
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
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
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)
VideoThe 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...

Particle Network Background with Canvas (No Library)
VideoThe 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...

Make a Spinning Particle Galaxy in Three.js (TypeScript)
VideoA 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...

Build a Scroll-Driven 3D Animation with Three.js
VideoScroll-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...

Python f-strings — 7 Things You Can Do
VideoAn 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...

Python List Comprehensions — 5 Patterns You'll Actually Use
VideoA 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...

What Is a Lambda Function in Python? (5 Real Examples)
VideoA 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...

pandas .map vs .apply vs .applymap — Pick the Right One
VideoThree 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...

Why Is My pandas Loop So Slow? iterrows vs Vectorize
VideoBecause 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...

Inner, Left, Outer — Merging DataFrames in pandas
VideoReal 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...

3 Ways to Read JSON into a pandas DataFrame
VideoEvery 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...

Excel to DataFrame in Python — pandas Tutorial
VideoMost 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...

How to Read SQL into a DataFrame in Python
VideoThree 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...

How to Merge CSV Files in Python
VideoThree 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 ...

Polars for Finance: Rolling Windows in Polars — Finance Tutorial
Videopl.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...

Polars for Finance: Join DataFrames in Polars — Python Tutorial
Videoprices.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...

Polars for Finance: GroupBy and Aggregate in Polars — Python Tutorial
Videodf.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...

How to Prepare a Parquet File in Python
VideoThree 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 ...

Polars for Finance: Compute Daily Returns in Polars — Finance Tutorial
Videopl.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 +...

Polars for Finance: Filter Rows and Select Columns in Polars — Python Tutorial
VideoThe 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...