Archive

1290 posts · Page 59 of 108. ← Blog

Pratik Dhanave · ·5 min read

Message Passing — The Core Mechanism of Every GNN

Strip away the variations and every graph neural network does the same fundamental thing: each node repeatedly gathers information from its neighbors and updates itself. This is message passing, and it's the single idea you need to understand GNNs — GCN, GraphSAGE, GAT, and the rest are all just different choices for how a node listens to its neighbors. This post builds message passing from scratch and shows why it elegantly satisfies everything a graph architecture must.

Strip away the variations and every GNN does the same thing: each node repeatedly aggregates information from its neighbors and updates itself. Message passing, why stacking layers widens a node's view to its k-hop neighborhood (convolution generalized to graphs), and the failure modes (over-smoothing, over-squashing) that shape real GNNs.

Pratik Dhanave · ·7 min read

The Preprocessor, Undefined Behavior, and Safe C

Two things separate C programmers who ship reliable code from those who ship time bombs: understanding the preprocessor (the text-substitution pass that runs before compilation) and respecting undefined behavior (the operations C says have no defined meaning at all). This closing post covers both, plus the multi-file structure of real programs and the idioms that keep C safe — turning the whole series into a working discipline.

Two things separate C programmers who ship reliable code from those who ship time bombs: understanding the preprocessor (the text-substitution pass before compilation) and respecting undefined behavior (operations C says have no meaning at all). This closing post covers both, multi-file programs, and the idioms that keep C safe.

Pratik Dhanave · ·7 min read

What Emotional Intelligence Is

Most engineers hit a ceiling that has nothing to do with their technical ability. They can design the system, write the code, solve the hard problem — and then stall, because the next level of impact runs entirely through other people: persuading, collaborating, leading, handling conflict, staying steady under pressure. That ceiling is emotional intelligence, and the good news is it's not a fixed trait you either have or don't. It's a set of skills, and skills can be learned.

Most engineers hit a ceiling that has nothing to do with their technical ability — the next level of impact runs entirely through other people. That ceiling is emotional intelligence, and the good news is it's not a fixed trait you either have or don't. It's a set of skills, and skills can be learned.

Pratik Dhanave · ·8 min read

Reject Inference: Modeling the Applicants You Declined

Why a scorecard trained only on funded loans quietly overstates its own accuracy, and the inference techniques that pull the declined population back into view.

Why credit models trained only on approved-and-funded loans are biased, and the reject-inference techniques (reclassification, parceling, augmentation) that correct for the applicants you never observed.

Pratik Dhanave · ·8 min read

Audit Trails, Event Sourcing, and the GDPR Problem

In finance you never update and never delete — you only append. Event sourcing gives you a perfect audit trail; the right to be forgotten is where it fights back.

In finance you append, never update or delete. Event sourcing gives a perfect audit trail; the right to be forgotten is where it fights back — and crypto-shredding is how you reconcile the two.

Pratik Dhanave · ·6 min read

Node Embeddings and Graph Learning Tasks

Before diving into how graph neural networks work, it's worth being precise about what they produce and what problems they solve. The output is embeddings — vectors that place each node (or edge, or whole graph) in a meaningful space — and the problems come in three flavors that cover almost every graph application. Getting this vocabulary straight makes the architectures in the rest of the series click into place.

A GNN produces embeddings that fuse what a node is (features) with where it sits (structure), and graph problems come in three levels: node-level (classification), edge-level (link prediction — recommendation, knowledge-graph completion), and graph-level (molecule classification). Plus the decisive transductive vs inductive distinction.

Pratik Dhanave · ·7 min read

Structs, Unions, and Data Structures

Structs let you bundle related data into a single named type — the closest C gets to an object. Combined with pointers and heap allocation, they're how you build every data structure C is famous for: linked lists, trees, hash tables. This post covers structs, their cousins unions and enums, the memory-layout details that bite (padding), and puts it all together to build a linked list from scratch.

Structs let you bundle related data into a single named type — the closest C gets to an object. Combined with pointers and heap allocation, they're how you build every data structure C is famous for: linked lists, trees, hash tables. This post covers structs, unions, enums, the padding that bites, and builds a linked list from scratch.

Pratik Dhanave · ·8 min read

The Raise and Investor Relations

Fundraising, stripped of mystique, is a sales process — you're selling equity to investors — and it runs on the same fundamentals as any sale: a compelling pitch, momentum, and the leverage that comes from having options. Most founders approach it as supplication (please fund me) rather than as a mutual evaluation between parties choosing each other, and that framing costs them. And the relationship doesn't end at the wire transfer: your investors are your partners for years, so how you choose and work with them matters long after the round closes.

Fundraising, stripped of mystique, is a sales process — you're selling equity — and it runs on a compelling pitch, momentum, and the leverage of having options. Most founders approach it as supplication rather than mutual evaluation, and that framing costs them. And the relationship doesn't end at the wire transfer.

Pratik Dhanave · ·8 min read

Explaining Credit Decisions: SHAP and Adverse-Action Reason Codes

How lenders turn a model's raw probability into the specific, legally required reasons a declined applicant must receive.

Turning model outputs into legally-required adverse-action reason codes. Global vs local explainability, SHAP values, mapping contributions to reason codes, and fairness checks (disparate impact) that regulators expect.

Pratik Dhanave · ·7 min read

The Ledger: Double-Entry Bookkeeping

Every movement of money touches at least two accounts, and the entries always sum to zero. That one invariant is the backbone of a correct financial system.

Every transaction is balanced postings that sum to zero — enforce it at write time. The ledger is append-only, and booking, value, and settlement time are three different clocks you must not conflate.

Pratik Dhanave · ·6 min read

Why Graphs Need Their Own Deep Learning

Neural networks conquered images, text, and audio — but a huge amount of the world's most valuable data isn't any of those. It's graphs: social networks, molecules, knowledge graphs, payment networks, supply chains. Standard deep learning can't handle them, because graphs break the assumptions CNNs and transformers are built on. Graph neural networks are the architecture built for data whose meaning lives in its connections, and this series builds them from first principles.

Neural networks conquered images, text, and audio — but much of the world's most valuable data is graphs: social networks, molecules, knowledge graphs, payment networks. Why standard deep learning can't handle them, the two properties a graph architecture must have, and what a GNN learns instead.

Pratik Dhanave · ·7 min read

Dynamic Memory Management

Stack memory is automatic but rigid — sized at compile time and gone when a function returns. For data whose size you only know at runtime, or that must outlive the function that created it, C gives you the heap and four functions to manage it: `malloc`, `calloc`, `realloc`, and `free`. With that power comes C's heaviest responsibility: every allocation you make, you must free — exactly once, and never use again.

Stack memory is automatic but rigid. For data whose size you only know at runtime, or that must outlive its function, C gives you the heap and four functions: malloc, calloc, realloc, and free. With that power comes C's heaviest responsibility: every allocation you make, you must free — exactly once, and never use again.