S
Saurav Danej
90-Day AI/ML LinkedIn Content System
90-Day AI/ML Content System

Saurav Danej · 90 days. 450 posts. 450 unique tech images. Ready to ship.

A daily content engine on AI/ML, Python, RAG, DSA, Automation and Agents — built for LinkedIn (in/sauravdnj) and Instagram (@saurav_dnj_24). Every post: copy, hashtags, an SVG/PNG image you can download, an AI prompt for Midjourney/DALL-E, and a Canva design brief.

90
Days planned
450
Posts
450
Unique images
7
Pillars covered

The 90-day plan

Click any day to view 5 posts & images
1
Day 1
Career
5 posts →

Why I'm starting 90 days of AI/ML in public

  • 1.Day 1 of 90 — building AI/ML in public
  • 2.What 'AI', 'ML' and 'DL' actually mean
  • 3.Your first ML model in 6 lines
  • 4.The single best AI/ML learning hack
  • 5.Day 1 recap — and what's tomorrow
2
Day 2
Python
5 posts →

Set up Python so it never fights you again

  • 1.Why your Python setup keeps breaking
  • 2.uv — the Python installer that's actually fast
  • 3.Project setup in 4 commands
  • 4.One pyproject.toml beats five config files
  • 5.Day 2 — your environment will never fight you again
3
Day 3
Python
5 posts →

Python variables & types — the parts that matter

  • 1.Python isn't typeless — you just can't see them
  • 2.The 7 built-in types you'll touch every day
  • 3.Mutable vs immutable — the bug everyone meets once
  • 4.f-strings beat every other formatting in Python
  • 5.Day 3 — types are values, not labels
4
Day 4
Python
5 posts →

Lists & dicts — the workhorses of every Python program

  • 1.Lists are arrays. Dicts are hash maps. That's it.
  • 2.Slicing — the most underused superpower
  • 3.List & dict comprehensions — the loops you don't write
  • 4.Three dict moves you probably don't know
  • 5.Day 4 — pick the right container, win the day
5
Day 5
Python
5 posts →

Loops & control flow — the Python way

  • 1.Stop writing C-style loops in Python
  • 2.The loop-else clause — Python's best-kept secret
  • 3.match-case — better than a chain of ifs
  • 4.The walrus operator — when it earns its keep
  • 5.Day 5 — loops you don't manage by hand
6
Day 6
Python
5 posts →

Functions — the building block you'll write a million times

  • 1.A function is a value in Python
  • 2.Args, kwargs, and the order that matters
  • 3.*args, **kwargs — what they actually do
  • 4.Lambdas — short but rarely the right answer
  • 5.Day 6 — functions are values
7
Day 7
Career
5 posts →

Week 1 recap + the reading list I'm following

  • 1.Week 1 in 7 lessons
  • 2.The exact AI/ML reading list I'm following
  • 3.A 12-line pyproject.toml for any AI/ML project
  • 4.How I avoid the 'tutorial trap'
  • 5.Week 1 done. 12 weeks to go.
8
Day 8
Python
5 posts →

OOP — when (and when not) to use classes

  • 1.What a Python class actually is
  • 2.When to use a class — and when not
  • 3.A minimal class, the right way
  • 4.Always write __repr__ first
  • 5.Day 8 — class with intent, not by reflex
9
Day 9
Python
5 posts →

Inheritance & dunder methods

  • 1.Composition over inheritance — read this once
  • 2.The dunder methods that matter
  • 3.A class that behaves like a native type
  • 4.If you override __eq__, override __hash__
  • 5.Day 9 — your classes can speak Python's protocols
10
Day 10
Python
5 posts →

Decorators — finally explained

  • 1.A decorator is just a function that returns a function
  • 2.Three decorator shapes you'll meet
  • 3.A timing decorator in 10 lines
  • 4.Always wrap your decorators in @functools.wraps
  • 5.Day 10 — decorators demystified
11
Day 11
Python
5 posts →

Generators & lazy evaluation

  • 1.A generator is a function that pauses
  • 2.Generator expressions — list comp's lazy cousin
  • 3.Stream a huge file in 6 lines
  • 4.yield from — chain generators in one line
  • 5.Day 11 — lazy beats eager when memory is finite
12
Day 12
Python
5 posts →

Context managers — the with-statement, demystified

  • 1.with-statements never leak resources
  • 2.Two ways to write a context manager
  • 3.Time any block of code with a context manager
  • 4.ExitStack — composing many context managers
  • 5.Day 12 — never write try/finally by hand again
13
Day 13
Python
5 posts →

Type hints + dataclasses — Python at scale

  • 1.Type hints — Python's safety net
  • 2.The type hints you'll actually use
  • 3.@dataclass — kill the boilerplate
  • 4.Run mypy in CI from day one
  • 5.Day 13 — types make Python serious
14
Day 14
Python
5 posts →

Errors, exceptions & week 2 wrap

  • 1.Fail loud, fail fast — never silently
  • 2.Custom exceptions — when and how
  • 3.raise from — keep the original error visible
  • 4.Use ExceptionGroup for parallel failures
  • 5.Week 2 done — Python that scales
15
Day 15
DSA
5 posts →

Big-O — the only complexity vocab you need

  • 1.Big-O isn't math. It's a label for growth.
  • 2.How to estimate Big-O in 30 seconds
  • 3.O(n²) → O(n) — the dedup pattern
  • 4.Don't optimise without measuring
  • 5.Day 15 — see the family, pick the structure
16
Day 16
DSA
5 posts →

Arrays — the workhorse in disguise

  • 1.Python list = dynamic array
  • 2.The two-pointer pattern in one diagram
  • 3.Two-sum in two pointers (sorted)
  • 4.Prefix sum — O(1) range queries
  • 5.Day 16 — arrays + 2 pointers = half of leetcode
17
Day 17
DSA
5 posts →

Strings — the most underestimated DSA topic

  • 1.Strings are immutable arrays of code points
  • 2.Anagram & character counting tricks
  • 3.Longest substring without repeating characters
  • 4.str.translate beats regex for char-replacements
  • 5.Day 17 — strings done right
18
Day 18
DSA
5 posts →

Linked lists — fewer than you think, harder than they look

  • 1.Linked lists exist for one reason
  • 2.Reverse a linked list — the universal warmup
  • 3.Linked list, in 16 lines
  • 4.Floyd's cycle detection — the slow/fast trick
  • 5.Day 18 — pointers, not nodes
19
Day 19
DSA
5 posts →

Hash maps & sets — your O(1) superpower

  • 1.If your loop has 'in list', think 'in set'
  • 2.Group-by patterns with defaultdict
  • 3.Two-sum — the original O(n) interview answer
  • 4.Set operations beat manual loops
  • 5.Day 19 — hash everything you can
20
Day 20
DSA
5 posts →

Stacks & queues — small structures, huge reach

  • 1.Stack vs queue — LIFO vs FIFO
  • 2.Valid parentheses — the classic stack problem
  • 3.BFS template every interviewer expects
  • 4.Use deque, not list, as a queue
  • 5.Day 20 — stacks and queues, by access pattern
21
Day 21
DSA
5 posts →

Sliding window + week 3 wrap

  • 1.Sliding window — the pattern for 'best subrange'
  • 2.How to recognise a window problem
  • 3.Min subarray sum ≥ target
  • 4.Practice these 5 problems first
  • 5.Week 3 done — DSA fundamentals locked
22
Day 22
DSA
5 posts →

Recursion — when (and how) to use it

  • 1.Recursion is just a function calling itself
  • 2.Memoise to turn O(2ⁿ) into O(n)
  • 3.Tree traversals — recursive in 3 lines each
  • 4.Watch the Python recursion limit
  • 5.Day 22 — recursion, framed correctly
23
Day 23
DSA
5 posts →

Binary search — beyond find-an-element

  • 1.Binary search isn't only for sorted arrays
  • 2.bisect — Python's built-in binary search
  • 3.Binary search on the answer
  • 4.Off-by-one — the binary search killer
  • 5.Day 23 — log n on any monotonic answer
24
Day 24
DSA
5 posts →

Sorting — knowing what Python actually does

  • 1.Python's sort is timsort. It's stable.
  • 2.Sort by anything with key=
  • 3.Top-k with heapq, not full sort
  • 4.Don't sort to find the median
  • 5.Day 24 — sort smart, not big
25
Day 25
DSA
5 posts →

Trees — BFS, DFS, and why ML loves them

  • 1.A tree is a graph without cycles
  • 2.DFS recursion vs iteration
  • 3.Level-order traversal in 12 lines
  • 4.Tries — the data structure for prefix searches
  • 5.Day 25 — trees, taught by traversal
26
Day 26
DSA
5 posts →

Graphs — the universal data model

  • 1.Adjacency list — the only graph rep you need most days
  • 2.BFS gives shortest path on unweighted graphs
  • 3.Dijkstra in 16 lines
  • 4.Topological sort — the dependency-order algorithm
  • 5.Day 26 — graphs are universal
27
Day 27
DSA
5 posts →

Dynamic programming — patterns over magic

  • 1.DP is recursion + memoisation
  • 2.Top-down vs bottom-up — same answer, different shape
  • 3.Coin change — the DP gateway problem
  • 4.Define the state in one English sentence first
  • 5.Day 27 — DP is just disciplined recursion
28
Day 28
Career
5 posts →

DSA wrap — patterns, study plan, interview prep

  • 1.8 patterns that solve 80% of interview problems
  • 2.The 20-problem study list
  • 3.The DSA cheatsheet I keep open
  • 4.How I think during a coding interview
  • 5.Week 4 done — DSA wrapped
29
Day 29
AI/ML
5 posts →

NumPy — vectorise everything

  • 1.NumPy is C with a Python skin
  • 2.5 NumPy ops that replace 50 lines of loops
  • 3.Pure Python vs NumPy — same problem, two speeds
  • 4.If you're appending to a NumPy array in a loop, stop
  • 5.Day 29 — vectorise everything
30
Day 30
AI/ML
5 posts →

Broadcasting — the deep-learning mental model

  • 1.Broadcasting in one rule
  • 2.Why broadcasting is a memory win, not just syntax
  • 3.Cosine similarity as a one-liner
  • 4.Always print .shape during shape bugs
  • 5.Day 30 — broadcasting clicks once, forever
31
Day 31
AI/ML
5 posts →

Pandas — DataFrames you'll actually use

  • 1.A DataFrame is a dict of NumPy arrays
  • 2.5 pandas methods that cover 80% of work
  • 3.A real pandas pipeline in 8 lines
  • 4.Drop iterrows from your vocabulary
  • 5.Day 31 — pandas, demystified
32
Day 32
AI/ML
5 posts →

groupby & merge — the SQL of pandas

  • 1.groupby is split-apply-combine
  • 2.merge — pandas joins, with the right defaults
  • 3.Multi-key groupby with named aggs
  • 4.Polars when pandas struggles
  • 5.Day 32 — groupby and merge, mastered
33
Day 33
AI/ML
5 posts →

Plotting — the chart that ends every EDA

  • 1.matplotlib is the engine. Everything else is a wrapper.
  • 2.Pair plot — the chart I make first, every dataset
  • 3.Three plots, one matplotlib pattern
  • 4.If you're plotting more than 100k points, sample first
  • 5.Day 33 — plot to think, not to publish
34
Day 34
AI/ML
5 posts →

EDA — 7 questions before you open a model

  • 1.Models can't fix data you haven't looked at
  • 2.df.info(), df.describe(), df.isna().sum() — the holy trio
  • 3.Spot leakage in 4 lines
  • 4.Save EDA as a notebook AND a markdown
  • 5.Day 34 — EDA is half the work
35
Day 35
AI/ML
5 posts →

Cleaning real data + week 5 wrap

  • 1.Real data is messy. Plan for that.
  • 2.5 cleaning patterns I run on every dataset
  • 3.A reusable cleaning function
  • 4.Always log row count before/after every step
  • 5.Week 5 done — the data stack
36
Day 36
AI/ML
5 posts →

ML problem framing — supervised, unsupervised, RL

  • 1.ML, framed in 3 boxes
  • 2.The ML loop in 6 steps
  • 3.Train/validation/test split — never skip val
  • 4.Pick the metric BEFORE training
  • 5.Day 36 — frame before you fit
37
Day 37
AI/ML
5 posts →

Linear regression — the model you must understand

  • 1.Linear regression in one sentence
  • 2.MSE, RMSE, MAE — pick by error shape
  • 3.Linear regression — sklearn vs from scratch
  • 4.Always compare against a dumb baseline
  • 5.Day 37 — the baseline that doesn't lie
38
Day 38
AI/ML
5 posts →

Logistic regression — classification, framed simply

  • 1.Logistic regression is linear regression in disguise
  • 2.Class imbalance — the silent metric killer
  • 3.Logistic regression with proper diagnostics
  • 4.Threshold ≠ 0.5
  • 5.Day 38 — classification, framed cleanly
39
Day 39
AI/ML
5 posts →

Decision trees — the interpretable workhorse

  • 1.A decision tree is a flowchart you trained
  • 2.Gini, entropy, info gain — same idea, different formulas
  • 3.Visualise a decision tree in 4 lines
  • 4.max_depth and min_samples_leaf — your overfit defenders
  • 5.Day 39 — trees, framed
40
Day 40
AI/ML
5 posts →

Random forests + gradient boosting — tabular kings

  • 1.Bagging vs boosting in one slide
  • 2.LightGBM > XGBoost for most things
  • 3.LightGBM with sane defaults
  • 4.feature_importances_ — the cheapest insight
  • 5.Day 40 — boosting wins on tabular
41
Day 41
AI/ML
5 posts →

K-means + clustering — finding structure

  • 1.K-means in 4 steps
  • 2.Choosing k — elbow vs silhouette
  • 3.K-means + silhouette in 12 lines
  • 4.Always StandardScaler before clustering
  • 5.Day 41 — clustering, framed
42
Day 42
AI/ML
5 posts →

SVMs + week 6 wrap

  • 1.SVMs — find the widest margin
  • 2.Classical ML vs deep learning — when to pick what
  • 3.Pipeline — wrap everything in one object
  • 4.Save the pipeline with joblib, not pickle
  • 5.Week 6 done — classical ML mastered
43
Day 43
AI/ML
5 posts →

Neurons & perceptrons — DL from first principles

  • 1.A neuron is a weighted sum + activation
  • 2.Activation functions — the quick guide
  • 3.A 2-layer network in 12 lines (PyTorch)
  • 4.Initialise weights well, or training stalls
  • 5.Day 43 — neurons, framed
44
Day 44
AI/ML
5 posts →

Backpropagation — the chain rule, applied

  • 1.Backprop = chain rule + smart caching
  • 2.Optimisers — Adam, SGD, AdamW
  • 3.The PyTorch training loop you'll write 100 times
  • 4.If loss is NaN, check learning rate first
  • 5.Day 44 — backprop, demystified
45
Day 45
AI/ML
5 posts →

PyTorch — DataLoader, GPU, save/load

  • 1.Dataset + DataLoader = the PyTorch data pipeline
  • 2.Move model and data to GPU correctly
  • 3.Save and load — the right way
  • 4.Always model.eval() and torch.no_grad() at inference
  • 5.Day 45 — PyTorch hygiene
46
Day 46
AI/ML
5 posts →

CNNs — convolutions for vision

  • 1.A convolution is a sliding dot product
  • 2.ResNet — the architecture that survived
  • 3.Tiny CNN for MNIST in 14 lines
  • 4.Always start from a pretrained model
  • 5.Day 46 — CNNs in one breath
47
Day 47
AI/ML
5 posts →

RNNs & LSTMs — the predecessor to transformers

  • 1.An RNN keeps a hidden state
  • 2.Why transformers replaced RNNs
  • 3.Tiny LSTM in PyTorch
  • 4.Use packed sequences for variable-length
  • 5.Day 47 — sequential models, framed
48
Day 48
AI/ML
5 posts →

Regularisation — stop memorising, start generalising

  • 1.Overfitting in one chart
  • 2.Dropout — the trick that almost magically works
  • 3.Early stopping in 8 lines
  • 4.Weight decay ≠ L2 reg in Adam
  • 5.Day 48 — generalise, don't memorise
49
Day 49
AI/ML
5 posts →

Production training tricks + week 7 wrap

  • 1.Learning-rate schedule beats fixed lr
  • 2.Mixed precision (AMP) — free 2x speedup
  • 3.Production training loop — every trick
  • 4.Use Lightning or HF Trainer instead of writing your own
  • 5.Week 7 done — deep learning fundamentals
50
Day 50
AI/ML
5 posts →

Tokenisation — the unsung hero of NLP

  • 1.Tokens are not words
  • 2.BPE in 4 sentences
  • 3.Use a tokenizer in 3 lines (HuggingFace)
  • 4.Always check token counts before sending an API call
  • 5.Day 50 — tokens decoded
51
Day 51
AI/ML
5 posts →

Word embeddings — meaning as a vector

  • 1.Embeddings are learned coordinates of meaning
  • 2.Pick an embedding model — 3 questions
  • 3.Local embeddings with sentence-transformers
  • 4.Always normalise embeddings before cosine similarity
  • 5.Day 51 — meaning as coordinates
52
Day 52
AI/ML
5 posts →

Attention — the mechanism that ate ML

  • 1.Attention in three letters: Q, K, V
  • 2.Multi-head attention — parallel perspectives
  • 3.Self-attention in 14 lines
  • 4.Use F.scaled_dot_product_attention
  • 5.Day 52 — attention, framed cleanly
53
Day 53
AI/ML
5 posts →

Transformer block — the architectural Lego

  • 1.A transformer block is two sublayers
  • 2.Encoder vs decoder — same block, different mask
  • 3.A transformer block in PyTorch (compact)
  • 4.Don't write your own transformer in 2026
  • 5.Day 53 — the block that ate ML
54
Day 54
AI/ML
5 posts →

BERT — encoders that still matter

  • 1.BERT — bidirectional, pre-trained, fine-tuned
  • 2.When to use BERT (or its descendants) in 2026
  • 3.Fine-tune BERT for classification in 20 lines
  • 4.Use distilled / small variants for production
  • 5.Day 54 — encoders still matter
55
Day 55
AI/ML
5 posts →

GPT-style decoders — autoregressive generation

  • 1.Decoder LLMs predict the next token, repeatedly
  • 2.Sampling — how the model picks the next token
  • 3.Generate text with a small open LLM
  • 4.Use vLLM for any serious local inference
  • 5.Day 55 — generation, framed
56
Day 56
AI/ML
5 posts →

Fine-tune or prompt? + week 8 wrap

  • 1.Prompt > RAG > Fine-tune (in that order)
  • 2.LoRA — fine-tune big models with small budgets
  • 3.QLoRA fine-tune in 20 lines
  • 4.Evaluate fine-tunes against the base, not against your hopes
  • 5.Week 8 done — NLP and transformers
57
Day 57
RAG
5 posts →

Why RAG — and why it's not just 'context-stuffing'

  • 1.RAG = Retrieval Augmented Generation
  • 2.RAG isn't 'just embeddings + LLM'
  • 3.Naive RAG in 30 lines (the starting point)
  • 4.Always pass the source back to the user
  • 5.Day 57 — RAG, framed honestly
58
Day 58
RAG
5 posts →

Chunking — the deceptively hard step

  • 1.Bad chunks = bad RAG, no exceptions
  • 2.Chunk size & overlap — the two knobs
  • 3.RecursiveCharacterTextSplitter — the safe default
  • 4.Add metadata to every chunk
  • 5.Day 58 — chunking is half the battle
59
Day 59
RAG
5 posts →

Embedding choice — the silent quality lever

  • 1.Your embedding model decides what 'similar' means
  • 2.MTEB — the embedding benchmark + its caveats
  • 3.Build a tiny eval set in 10 minutes
  • 4.Don't change embedding models without re-indexing
  • 5.Day 59 — embeddings define quality
60
Day 60
RAG
5 posts →

Vector databases — pick by load, not hype

  • 1.A vector DB is an ANN index + storage + filters
  • 2.Pick a vector DB by load + ops fit
  • 3.Qdrant in 15 lines
  • 4.Profile p99 latency, not average
  • 5.Day 60 — vector DBs without hype
61
Day 61
RAG
5 posts →

Top-k retrieval — the parameters that matter

  • 1.k = how much context the LLM gets
  • 2.Cosine vs dot vs Euclidean — pick by training
  • 3.Filter before ANN — speed + relevance win
  • 4.Hybrid search beats pure semantic
  • 5.Day 61 — retrieval, tuned
62
Day 62
RAG
5 posts →

Augmenting the prompt — the most overlooked step

  • 1.How you stuff context into the prompt matters
  • 2.A robust RAG prompt template
  • 3.RAG prompt builder — the function I keep around
  • 4.Lower temperature for RAG — usually 0
  • 5.Day 62 — the prompt is half the system
63
Day 63
RAG
5 posts →

Evaluating RAG + week 9 wrap

  • 1.Evaluate retrieval + generation separately
  • 2.Ragas / TruLens — RAG eval frameworks
  • 3.ragas — minimum eval setup
  • 4.Track eval scores per release like CI tests
  • 5.Week 9 done — RAG fundamentals
64
Day 64
RAG
5 posts →

Hybrid search — BM25 + dense, the right way

  • 1.BM25 isn't legacy. It's complementary.
  • 2.When hybrid gives the biggest lift
  • 3.RRF in 8 lines
  • 4.Use the same chunks for both indexes
  • 5.Day 64 — hybrid search, demystified
65
Day 65
RAG
5 posts →

Rerankers — the second pass that fixes everything

  • 1.Retrieve fast → rerank slow
  • 2.Pick a reranker — open vs API
  • 3.Add a reranker in 12 lines
  • 4.Cap the reranker at 50 candidates
  • 5.Day 65 — the second pass that pays for itself
66
Day 66
RAG
5 posts →

Query rewriting — fix the input before the search

  • 1.Bad queries can't be fixed by good retrievers
  • 2.HyDE — the trick that surprised everyone
  • 3.Multi-query rewrite + union
  • 4.Cache rewrites — they repeat
  • 5.Day 66 — fix the input first
67
Day 67
RAG
5 posts →

Multi-step retrieval — when one query isn't enough

  • 1.Some questions need multi-hop retrieval
  • 2.Sub-question decomposition
  • 3.Async sub-question RAG
  • 4.Don't multi-hop everything
  • 5.Day 67 — multi-hop, used wisely
68
Day 68
Agents
5 posts →

Agentic RAG — let the LLM decide

  • 1.Agentic RAG = retrieval as a tool
  • 2.Tool-calling makes agentic RAG trivial
  • 3.Tool-calling RAG with OpenAI
  • 4.Cap tool calls — agents will spin
  • 5.Day 68 — agentic RAG, demystified
69
Day 69
RAG
5 posts →

GraphRAG — when relationships matter

  • 1.GraphRAG models entities + relationships
  • 2.GraphRAG isn't always the answer
  • 3.Tiny entity-graph extraction in 18 lines
  • 4.Use neo4j or memgraph for production graphs
  • 5.Day 69 — graphs when chunks aren't enough
70
Day 70
RAG
5 posts →

Production RAG checklist + week 10 wrap

  • 1.Production RAG checklist — 12 items
  • 2.Cost & latency budgets — the real constraints
  • 3.Trace every RAG call — the one log line that matters
  • 4.Cache aggressively. Then cache more.
  • 5.Week 10 done — production RAG
71
Day 71
Agents
5 posts →

What is an LLM agent — the honest definition

  • 1.An agent is an LLM in a loop, with tools
  • 2.ReAct — the agent pattern
  • 3.Minimal ReAct loop in 30 lines
  • 4.Don't reach for an agent until you must
  • 5.Day 71 — agents, defined honestly
72
Day 72
Agents
5 posts →

Tool design — the most important agent skill

  • 1.A tool is a contract — name, schema, behaviour
  • 2.Tool error handling — fail informatively
  • 3.Tool definition that actually works
  • 4.Test tools without an LLM first
  • 5.Day 72 — tools first, prompts second
73
Day 73
Agents
5 posts →

Planning agents — decompose, then execute

  • 1.Plan-then-execute beats step-by-step on hard tasks
  • 2.Two-LLM pattern: cheap executor, smart planner
  • 3.Plan + execute split — minimal code
  • 4.Allow replanning after surprises
  • 5.Day 73 — plan, execute, replan
74
Day 74
Agents
5 posts →

Multi-agent — when one isn't enough

  • 1.Multi-agent = specialisation + handoff
  • 2.Topology — pipeline vs network
  • 3.Two-agent pipeline in 30 lines
  • 4.Cap network agents with a turn limit
  • 5.Day 74 — multi-agent, with caps
75
Day 75
Agents
5 posts →

Agent frameworks — LangGraph, AutoGen, CrewAI

  • 1.Pick by abstraction, not by stars
  • 2.LangGraph — my default in production
  • 3.Tiny LangGraph agent
  • 4.Always add tracing (LangSmith / Langfuse)
  • 5.Day 75 — frameworks, with intent
76
Day 76
Agents
5 posts →

Memory in agents — short, long, working

  • 1.Three kinds of agent memory
  • 2.Summarise as you go — survive token limits
  • 3.Rolling-summary memory in 20 lines
  • 4.Don't store secrets in long-term memory
  • 5.Day 76 — agents that remember (sensibly)
77
Day 77
Agents
5 posts →

Agent failure modes + week 11 wrap

  • 1.5 agent failure modes I've shipped (and learned)
  • 2.Eval agents on completion + cost + safety
  • 3.Hard cost + step caps
  • 4.Ship a kill-switch endpoint
  • 5.Week 11 done — agents, with intent
78
Day 78
Automation
5 posts →

Web scraping with requests + BeautifulSoup

  • 1.Most scraping is HTTP + parse, not browsers
  • 2.Scrape ethically — robots, rate, identify
  • 3.A polite scraper template
  • 4.Cache responses while developing
  • 5.Day 78 — scraping, done politely
79
Day 79
Automation
5 posts →

Playwright — when JS rendering is required

  • 1.Playwright > Selenium in 2026
  • 2.Headless vs headed — debug visually
  • 3.Playwright async script
  • 4.Use page.codegen — let Playwright write the script
  • 5.Day 79 — browsers, when needed
80
Day 80
Automation
5 posts →

Scheduling — cron, APScheduler, Airflow

  • 1.Pick a scheduler by ops complexity
  • 2.Cron syntax in 30 seconds
  • 3.APScheduler in 12 lines
  • 4.Always send a heartbeat alert when a job DOESN'T run
  • 5.Day 80 — scheduled, monitored, alive
81
Day 81
Automation
5 posts →

Slack & email — close the loop

  • 1.Automation without notification is invisible
  • 2.Slack incoming webhooks — 5-minute setup
  • 3.Slack notifier in 10 lines
  • 4.Use Postmark or Resend for transactional email
  • 5.Day 81 — close the loop
82
Day 82
Automation
5 posts →

PDF & Excel — the boring automations that pay

  • 1.PDFs aren't text. Pick the right tool.
  • 2.Excel: openpyxl for read/write, polars for crunch
  • 3.Extract a table from a PDF in 8 lines
  • 4.For invoice / receipt OCR, use a service
  • 5.Day 82 — file automations
83
Day 83
Automation
5 posts →

API integrations — retries, timeouts, idempotency

  • 1.httpx > requests for new code
  • 2.Retries that don't make things worse
  • 3.Production-grade API client
  • 4.Idempotency keys for any state-changing call
  • 5.Day 83 — APIs that don't lie
84
Day 84
Automation
5 posts →

Serverless automation + week 12 wrap

  • 1.Lambda + EventBridge = a serverless cron
  • 2.Deploy with SAM, AWS CDK, or Serverless Framework
  • 3.Lambda handler — minimum viable
  • 4.Watch for Lambda's hidden costs
  • 5.Week 12 done — automation that runs itself
85
Day 85
Career
5 posts →

Build a portfolio that lands jobs

  • 1.Three projects > 30 tutorials
  • 2.What every README must have
  • 3.A README template I reuse for AI/ML projects
  • 4.Pin your three best repos on GitHub
  • 5.Day 85 — portfolio first
86
Day 86
Career
5 posts →

Open source — start small, ship often

  • 1.Your first OSS PR doesn't need to be code
  • 2.Pick a repo where the maintainers actually merge
  • 3.A clean OSS contribution workflow
  • 4.Write the PR description like a story
  • 5.Day 86 — open source, started
87
Day 87
Career
5 posts →

Resume + LinkedIn — recruiter-ready

  • 1.Resume is a 30-second highlight reel
  • 2.LinkedIn — the headline + about section
  • 3.A LaTeX resume template (small repo)
  • 4.Tailor resume per job — change ONE thing
  • 5.Day 87 — recruiter-ready
88
Day 88
Career
5 posts →

ML interview prep — the focused 30-day plan

  • 1.ML interview = 4 rounds (usually)
  • 2.30-day prep — 1 hour a day
  • 3.ML system design — the canvas I draw every time
  • 4.Talk MORE than you think you should
  • 5.Day 88 — interview ready
89
Day 89
Career
5 posts →

The learning loop — staying sharp

  • 1.Three habits separate growing engineers from stuck ones
  • 2.How to read AI papers without burning out
  • 3.A 'learning log' template I keep in a file
  • 4.One newsletter, one podcast, one Twitter list
  • 5.Day 89 — the loop that lasts
90
Day 90
Career
5 posts →

Day 90 — the wrap-up

  • 1.90 days. 450 posts. What I actually learned.
  • 2.The 90-day index — every topic, in one post
  • 3.What I'm building next — a public repo of every snippet
  • 4.The next 90 — what I want from YOU
  • 5.Day 90 — thank you. Genuinely.