Programming Languages
Which language for which job? Every hex layer has a different answer.
📄️ C#
- C#
📄️ Go
📄️ Move
Website
📄️ Python
Python on Vercel.
📄️ Rust
Feedback Loops
📄️ Solidity
Solidity for EVM compatible smart contracts.
🗃️ Typescript
7 items
Selection Criteria
| Criteria | Why It Matters | Weight |
|---|---|---|
| Type safety | Catch errors at compile time, not production | Must have |
| Ecosystem fit | Libraries, frameworks, hiring pool for the job | Must have |
| DX | Speed of iteration, tooling, debugging | Must have |
| Performance | Latency, throughput, resource consumption for the domain | Depends on layer |
| Interop | Plays well with adjacent layers in the stack | Should have |
Language by Purpose
| Purpose | Language | Why This One |
|---|---|---|
| App + API | TypeScript | Next.js, Nx monorepo, shared types across client/server/domain |
| Smart contracts (EVM) | Solidity | Ethereum ecosystem, largest audit tooling, Foundry |
| Smart contracts (SVM) | Rust | Solana's native language, memory safety, performance |
| Smart contracts (SUI) | Move | Object-centric model, parallel execution |
| ML / Data pipelines | Python | PyTorch, pandas, scikit-learn — no viable alternative |
| Infrastructure / CLIs | Go | Fast compilation, single binary, concurrency |
| Systems / Performance | Rust | Zero-cost abstractions, memory safety without GC |
Hex Layer Mapping
| Hex Layer | Primary | Why |
|---|---|---|
| Domain (types, interfaces) | TypeScript | Shared across all consumers |
| Application (use-cases) | TypeScript | Same runtime as domain |
| Agency (algorithms) | TypeScript | Co-located with application |
| Data repositories | TypeScript + SQL (Drizzle) | Type-safe queries |
| Infrastructure adapters | TypeScript | API clients, LLM adapters |
| Smart contracts | Solidity / Rust / Move | Per-chain requirement |
| Data science | Python | Ecosystem lock-in, acceptable |
The Polyglot Principle
Minimise languages, maximise coverage. Every additional language adds hiring cost, context-switching friction, and toolchain overhead. The bar for introducing a new language: no viable alternative in an existing stack language.
TypeScript covers 5 of 7 hex layers. That's the point — one language from UI to database, with specialists only where the domain demands it.
Context
- Tech Decisions — the process for evaluating stack choices
- Which Blockchain — chain choice determines smart contract language
- Hexagonal Architecture — the layer pattern that maps to language choice
- AI Coding — language choice affects AI tooling quality