-
Distributions in practice: histograms, KDEs, and when the mean deceives
Statistics often starts with a simple question:
-
Probability for ML: Bayes’ rule, likelihood, and why models output logits
Machine learning models often appear mysterious at the point where they produce an answer. A classifier receives an input, performs millions or billions of calculations, and returns something like “sp
-
Optimizers beyond SGD: Adam, AdamW, and the learning-rate schedule that matters more
Training a neural network is an optimization problem disguised as an engineering project. We choose an architecture, prepare data, define a loss function, and then repeatedly update millions of parame
-
Giving your chatbot memory and personality without prompt bloat
A common first attempt at building a useful chatbot is to place everything inside the system prompt: the assistant’s personality, company rules, user preferences, previous conversations, examples, and
-
Deploying vision models to the edge: quantization and latency
Training a computer vision model and deploying that model on a real device are two different engineering disciplines. A network that achieves excellent accuracy in a cloud notebook with a powerful GPU
-
The Model Context Protocol (MCP): connecting agents to real tools
Large language models are good at reasoning over text, but real-world software systems rarely live inside text alone. A useful AI agent needs to interact with calendars, databases, ticketing systems,
-
Quantization in practice: running a capable model on one consumer GPU
Running a capable language model locally is mostly a memory-management problem.
-
Rule-based NLP that still wins: regex, spaCy Matcher, and hybrid rule+ML pipelines
Large language models have changed what is possible in natural-language processing, but they have not changed a more basic engineering fact: when a text pattern is narrow, stable, and precisely specif
-
Living with pyspark.pandas: interop, performance traps, and a pandas-to-Spark migration checklist
Lesson 11 mapped what the pandas API on Spark implements; lesson 12 proved on 103 million rows that the port can be a handful of changed lines. This closing lesson is about operating it: moving data b
-
One dataset, two engines: scaling California housing until pandas gives up, then rerunning it on pyspark.pandas
Lesson 11 mapped what the pandas API on Spark implements. This lesson measures. We take a dataset every DS course uses — scikit-learn’s California housing, 20,640 rows — and multiply it with jitter un