Archive

1290 posts · Page 56 of 108. ← Blog

Pratik Dhanave · ·7 min read

Building for Instant Payments: RTP, FedNow, and Request-for-Payment

How to engineer for 24x7 irrevocable instant credit — synchronous ISO 20022 messaging, request-for-payment flows, and idempotent liquidity checks with no batch cutoff.

Teaches how to build for 24x7 irrevocable instant credit: synchronous ISO 20022 request/response, request-for-payment (RfP) flows, credit-transfer timeouts, and idempotent liquidity checks at the rail with no batch cutoff.

Pratik Dhanave · ·7 min read

Applications and When to Use GNNs

Graph neural networks are genuinely transformative for the right problems and needless complexity for the wrong ones. This closing post surveys where GNNs deliver real value — drug discovery, recommendation, fraud detection, knowledge graphs — and, just as importantly, gives the honest decision framework for when a GNN is worth its cost versus when a simpler approach wins. It turns the series into a judgment you can apply.

GNNs are transformative for the right problems (drug discovery, recommendation, fraud rings, knowledge graphs) and needless complexity for the wrong ones. The honest decision framework: use a GNN when structure carries signal and it beats a structure-ignorant baseline — and reach for something simpler when it doesn't.

Pratik Dhanave · ·6 min read

Utility and Mapped Types

TypeScript's type system is itself a small programming language — you can compute new types from existing ones. The built-in utility types (`Partial`, `Pick`, `Omit`, `Record`) are the everyday face of this; underneath, `keyof`, mapped types, conditional types, and template literal types are the primitives that make them possible. Learning to derive types instead of hand-writing them is what separates fluent TypeScript from annotation-copying.

TypeScript's type system is itself a small programming language — you can compute new types from existing ones. The built-in utility types (Partial, Pick, Omit, Record) are the everyday face; underneath, keyof, mapped types, conditional types, and template literals are the primitives. Learning to derive types instead of hand-writing them is what separates fluent TypeScript.

Pratik Dhanave · ·8 min read

Difficult Conversations and Feedback

The conversations we most want to avoid are usually the ones that matter most — telling a colleague their work isn't good enough, raising a concern with your manager, addressing a conflict that's festering, giving feedback that might not be welcome. Avoiding them feels safer in the moment and is almost always worse over time: problems grow, resentment builds, and the unsaid thing poisons the working relationship. Emotional intelligence doesn't make hard conversations easy, but it makes them possible to have well — which is a learnable skill that changes everything downstream.

The conversations we most want to avoid are usually the ones that matter most — telling a colleague their work isn't good enough, addressing a festering conflict, giving unwelcome feedback. EQ doesn't make hard conversations easy, but it makes them possible to have well — a learnable skill that changes everything downstream.

Pratik Dhanave · ·13 min read

Structured Output and Tool Calling

From-scratch Go for the two mechanisms that turn an LLM from a text generator into a component you can wire into real software — schema-constrained JSON and function calling — both spoken over the same OpenAI-compatible chat JSON.

Getting reliable machine-readable output from an LLM in Go: structured output (json-schema mode, decode into a typed struct, validate with a bounded retry) and tool/function calling (the full round-trip loop, decoding tool arguments, returning results tied to the call id).

Pratik Dhanave · ·7 min read

LLM-Guided Portfolio Allocation

A hybrid allocator where a quantitative core owns the money, a language model only whispers tilts, and hard constraints plus a human bound everything before a single order goes out.

A hybrid allocator: quantitative signals set the baseline (mean-variance / risk parity) while an LLM proposes tilts from qualitative context, constrained by risk limits and human review.

Pratik Dhanave · ·8 min read

The FIX Protocol: Engineering a Session and Order Gateway

The 40-year-old tag=value protocol still carrying most of the world's equity orders — and how to build an engine that survives a dropped connection.

How FIX session layer (logon, heartbeat, sequence-number gap-fill, resend) and application layer (NewOrderSingle, ExecutionReport) actually work, and how to build a resilient FIX engine.

Pratik Dhanave · ·7 min read

Modeling ISO 20022 Payment Messages Without Losing Your Mind

How to treat pain, pacs, and camt as one typed, schema-driven domain instead of a pile of XML you concatenate by hand.

Teaches how to model, validate, and generate ISO 20022 XML payment messages (pain.001 initiation, pacs.008 interbank, camt.053 statements) with schema-driven typing, structured references, and idempotent message identifiers.

Pratik Dhanave · ·7 min read

Building a Byte-Level ISO 8583 Codec for Card Authorization

A field-by-field guide to decoding bitmaps, data elements, and MTI so a raw TCP frame becomes a typed auth request you can trust.

Teaches how to build a byte-level ISO 8583 encoder/decoder: primary/secondary bitmaps, data-element (DE) field definitions, MTI parsing, and stan/RRN correlation for card authorization messaging.

Pratik Dhanave · ·8 min read

Building a NACHA ACH File Processor: Records, Hash Totals, and Return Codes

Model the fixed-width record hierarchy, warehouse entries until their effective date, and turn R-series returns into automated re-presentment.

Teaches how to build a NACHA file processor: fixed-width file/batch/entry/addenda record hierarchy, hash totals, effective-entry-date windows, and handling R-series return/NOC codes with automated re-presentment logic.

Pratik Dhanave · ·8 min read

Controls, Access, and Testing a System That Moves Money

The last mile of a financial system isn't code — it's who can do what, who approves it, and how you prove the whole thing is correct.

The last mile isn't code — it's who can do what, who approves it, and how you prove it's correct. Segregation of duties, four-eyes, an auditable change trail, and property tests that assert ledger invariants over thousands of scenarios.