Skip to main content

Programming Languages

Which language for which job? Every hex layer has a different answer.

Selection Criteria

CriteriaWhy It MattersWeight
Type safetyCatch errors at compile time, not productionMust have
Ecosystem fitLibraries, frameworks, hiring pool for the jobMust have
DXSpeed of iteration, tooling, debuggingMust have
PerformanceLatency, throughput, resource consumption for the domainDepends on layer
InteropPlays well with adjacent layers in the stackShould have

Language by Purpose

PurposeLanguageWhy This One
App + APITypeScriptNext.js, Nx monorepo, shared types across client/server/domain
Smart contracts (EVM)SolidityEthereum ecosystem, largest audit tooling, Foundry
Smart contracts (SVM)RustSolana's native language, memory safety, performance
Smart contracts (SUI)MoveObject-centric model, parallel execution
ML / Data pipelinesPythonPyTorch, pandas, scikit-learn — no viable alternative
Infrastructure / CLIsGoFast compilation, single binary, concurrency
Systems / PerformanceRustZero-cost abstractions, memory safety without GC

Hex Layer Mapping

Hex LayerPrimaryWhy
Domain (types, interfaces)TypeScriptShared across all consumers
Application (use-cases)TypeScriptSame runtime as domain
Agency (algorithms)TypeScriptCo-located with application
Data repositoriesTypeScript + SQL (Drizzle)Type-safe queries
Infrastructure adaptersTypeScriptAPI clients, LLM adapters
Smart contractsSolidity / Rust / MovePer-chain requirement
Data sciencePythonEcosystem 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