
Indexes and the Art of Searching, Part 8: Choosing Methods and a Decision Tree
Published methods are tuned to the data they were evaluated on. How should you budget and plan the work of tuning them to your own data instead?
Services
Delivery models and flagship work
Alopex Family
Asopitech Labo
NiminoDesktop
A lightweight WebView desktop foundation in Nim
NimculusEditor
A GPU-native editor in Nim and Metal
PoieraPlatform
A control plane concept for AI agents, carrying compact contracts through authorization, deployment, and verification
TheatoraBackend
A composable backend construction kit concept for swapping providers, runtimes, and topology
RhyzoraFramework
A concept for building CLI, TUI, Web, desktop, and MCP interfaces from declarative contracts
Labo overview
What the R&D lab is working on
Enterprise plans
Research notes, implementation tips, and operational insights. Searchable by tags and keywords.
ASMATI・TATSUMI / EXPERIMENT NOTES
What High-Level Languages Do at the Low Level
A reproducible experiment series explaining how Nim source code becomes generated C, concrete types, and runtime behavior.
Categories
Tags
67 articles
32 tags

Published methods are tuned to the data they were evaluated on. How should you budget and plan the work of tuning them to your own data instead?

Search only moves once something tells it how good a candidate is. How are heuristics, game evaluations, and verifiers built, and where do they break?

Sometimes getting a usable solution quickly matters more than finding the optimal one. Which components do local search and animal-inspired methods let you tune?

Car navigation routes and next moves in shogi have too many candidates to survey. What does a search that alternates local evaluation and global pruning prepare in advance?

When neither the keys nor the words match, how do you find things that are close? This part sorts out how search and recommendation pull candidates by distance and order them by behavior.

Once you find the documents that contain a word, you still have to decide which to read first. After an inverted index narrows the candidates, what should the ranking rest on?

What should you compute in advance to check a key match with minimal reads? Covers hash tables, six kinds of indexes, Bloom filters, and content identity.

Reading every row always finds the answer. To avoid that full scan wherever possible, what work do sorting and indexes finish before a query ever arrives?

The five-part series that began with 'How Not to Let AI Take Your Career' has been compiled into a single book. It maps how beginners, intermediates, and leaders can turn AI from an answer machine into a partner for building, teaching, and multiplying experience. Available on Leanpub and Buy Me a Coffee (English) and Zenn (Japanese).
ASMATI・TATSUMIEXPERIMENT NOTE 03
How do ref object parameters, nil checks, field access, and return values appear in generated C? This experiment checks Nim 2.2.10 with ORC.
ASMATI・TATSUMIEXPERIMENT NOTE 02
Does a function name in generated C make it callable from C? This experiment checks the public header, symbols, and runtime initialization.

Open an embedded data directory with alopex-server, run the same SQL over HTTP, and read the server-written row through the file API.

Store embedding vectors with articles, combine similarity search with SQL filters, and reshape the results with DataFrames in Python and Rust.

Use CASE expressions, UNION and other set operations, common table expressions, rankings, and running totals in Alopex DB.

Create a table and query it with SELECT, JOIN, aggregation, and subqueries, then combine SQL and key-value data in one transaction.

Install Alopex DB v0.8.8 and learn its key-value API, transactions, deletion, and persistent storage in Python and Rust.
ASMATI・TATSUMIEXPERIMENT NOTE 01
What C types do NI and NF actually denote? This Nim 2.2.10 experiment follows their definitions and the debug arithmetic they select.

Tables, batches, business rules — splitting them was supposed to make everything easier to handle. So who ends up paying for all the seams that appear?

A case study of the Starch animation-diagram component we added to explain abstract concepts and complex processing flows in Astro Markdown.

Hand nimino-pack a URL and that site becomes an app that opens in its own window. A walkthrough of Nimino, our Nim WebView app foundation, from a local build to a shipped installer.

A case study of displaying VHS-generated terminal demos through the same Astro component and moving the VHS build out of Vercel.

Are you comparing hashes, trees, and graphs in the abstract? Choose representations for the query, then design for loss and reconstruction.

How do schemas, graphs, tasks, and packets connect? This article traces structure from meaning through execution, communication, and storage.

Why are records for the same company totalled separately? Starting with record linkage, this article turns familiar data into searchable, aggregatable forms.

Did the problem definition end the moment you wrote it? Keeping it as a hypothesis through to requirements.

How far does that problem reach? Four axes for setting its scope and view.

Is that request already a chosen solution? Set the method aside and write the problem as a gap from today.

Was the conclusion settled the moment the budget was approved? Seven structures that block a decision not to build.

Are those requirements just a list of individual tasks? How to see the whole process and decide what a system should cover.

Does that request describe a problem, or a solution someone already picked? A procedure for removing work before you build.

Which layer is your logging actually slow in? How to pick a Rust logger from your use case and runtime, and how to measure it.

MCP v2026-07-28 uses Bearer access tokens to establish the requester at the router and to decide whether that requester may operate on business data.

MCP v2026-07-28 separates protocol state from application state that once shared a connection, allowing any instance to process a request. A visual guide to the fields and flow.

It was never about handing a card number to a model. So what are all these new standards actually trying to prove?

Will that code still be needed once the next model ships? Six things worth checking before you start.

Homegrown long-term memory, a workflow DSL, a model router. Each one works, and each is genuinely interesting to build. But what if three months of waiting made them unnecessary?

Boris Cherny, who built Claude Code, says he hasn't hand-written a line of code in eight months. Is the craft of polishing prompts giving way to the craft of designing loops?

The code runs and the tests pass. Only the value of using it has vanished. A look at this failure mode as a stranded asset rather than technical debt.

PDF chat, AI slides, ChatGPT plugins: all standard features of ChatGPT and Gemini now. Where did the implementations that once powered them go?

Comparing WASM-first languages (MoonBit, AssemblyScript, Grain) with languages that added a WASM backend (Rust, C/C++, TinyGo, Kotlin/Wasm, Dart, C#, SwiftWasm). Using linear memory vs. Wasm GC, Component Model support, binary size, and maturity as axes, this article explains how to choose a WASM language in 2026.

From WASM runtimes like Wasmtime, Wasmer, WasmEdge, wazero, and WAMR, through WASI/Component Model tooling (WIT, wit-bindgen, cargo-component, jco), upper frameworks (Extism, Spin, wasmCloud, Proxy-Wasm), to GPU implementations (Dawn, wgpu) — a layer-by-layer map of who implements WASM's raw APIs, and how to choose, as of 2026.

A 2026 survey of WebAssembly, WebGL, and WebGPU — plus WASI/Component Model, Web Workers, WebCodecs, and WebNN. Rather than a simple 'JS→WASM' or 'WebGL→WebGPU' replacement, the web platform has converged on a per-layer division of roles. This article maps the current state and offers guidance on technology choice and architecture.

A 38-topic analysis of Nim syntax — declarations, the type system, expression orientation, generics, distinct types, macros, and compile-time execution — comparing how closely each construct resembles the styles of Pascal, Python, C-family, and functional languages, with a primer on block syntax design and the off-side rule.

An analysis of how database requirements change across the MVP, PMF, growth, and scale stages, comparing the trade-offs of SQLite, Postgres, managed databases, and dedicated vector stores — and where Alopex DB's 'erase the migration cliff' approach fits.

Building a distributed system means building node discovery, liveness detection, messaging, and agreement before getting to the actual work. Alopex Chirps takes on exactly those four. This covers what it handles and what it does not, why QUIC was chosen, and how openraft came to be the consensus layer.

In a network where neither the identity nor the number of participants is known, one node one vote does not hold. Probabilistic finality in PoW, the structure by which PoS relies on economic penalties rather than impossibility, Solana and Avalanche, and the option of avoiding agreement — with the criteria for choosing among them. Part 4 of a 4-part series.

The world in which nodes send signed, contradictory information. The meaning of the constant n=3f+1, PBFT's three-phase voting, Tendermint's locking rules, HotStuff's quorum certificates, and what the DAG-BFT designs since Narwhal separated and what they removed. Part 3 of a 4-part series.

The family of algorithms for the crash failure model, where nodes stop but do not lie. From the single tool Paxos relies on — quorum intersection — through Raft's decomposition, EPaxos, Multi-Raft, and the parts outside the papers: persistence ordering and linearizable reads, with minimal code. Part 2 of a 4-part series.

A node that stops responding may have crashed, or it may merely be slow; the two cannot be told apart. This part separates leader election, ordering, and commitment into three distinct problems, and covers the practical meaning of FLP impossibility, split brain and fencing tokens, and the boundary between the replicated log and the applied state. Part 1 of a 4-part series.

A quick introduction to Nim, and an announcement of two desktop products I started in Nim — Nimino, a Tauri-like lightweight WebView app framework, and Nimculus, a Zed-like GPU-native code editor.

I picked one local Japanese LLM to write this blog, from the ones that run on my M3 MacBook Air (24GB). Here are the results of comparing them on long-form Japanese quality, plus the exact Ollama API calls and the prompts I used.

SQLite, DuckDB, PostgreSQL, distributed DBs, vector DBs, graph DBs — there is no shortage of great products. I'm building a new database anyway because every time the project moves forward, I re-pick the DB and rebuild the data itself. Alopex DB aims to be a foundation that keeps data's volume, conversion time, regeneration cost, and provenance intact as you scale from local to cloud, from single node to distributed.

Plain video generation tends to produce footage that "looks natural but is physically wrong": objects vanish, gravity is ignored, and the results of actions aren't consistent. Part 5 (the finale) shows, with minimal code, how to embed a world model into video generation and put physical constraints into the loss to make "physically consistent video" — and paints the future of building training data wholesale with AI and simulation. Part 5 of a 5-part series.

Video generation like Sora and Veo looks similar to world models but is a different thing. The former makes "plausible footage"; the latter learns "how the world changes when you act." Part 4 contrasts video generation's noise prediction with a world model's `S_t + A_t → S_{t+1}`, and clarifies what NVIDIA Cosmos and Google Genie use as training data. Part 4 of a 5-part series.

Text-to-speech once used the Mel spectrogram as its answer. But recent models convert audio into "audio tokens" and predict those — a structure that now looks just like an LLM. Part 3 follows how training data is built for TTS and Speech2Speech (speech translation, voice conversion, end-to-end conversational AI), including the difficulty of gathering paired data and how it's worked around. Part 3 of a 5-part series.

Image generation comes in lineages — GAN, autoregressive (token) type, and diffusion — and today's mainstream is diffusion models like Stable Diffusion. The diffusion type learns to "guess the added noise" rather than "draw the image directly," while the autoregressive type guesses the "next image token" like an LLM. Part 2 covers gathering image-text pairs, CLIP quality filtering, and the training data for both approaches — with minimal code. Part 2 of a 5-part series.

Neither LLMs nor image generators learn from training data that humans have labeled item by item. The key is self-supervised learning: mechanically constructing inputs and answers from raw data. Part 1 clarifies the difference between raw data and training data, and shows how an LLM turns text itself into a next-token prediction problem, with minimal code. Part 1 of a 5-part series.

Billions of parameters fire just to decide "I'm hungry"—doing everything with a single giant model is a waste of resources. Just as the human nervous system splits circuits by type of processing, AI should be layered by time scale and responsibility. Robot control hierarchies, energy efficiency, an OS-like structure, and why the control software itself must be organized. The finale of a 3-part series.

If we liken the text-grown LLM to the human cerebrum, there should also be equivalents of the cerebellum and spinal cord, and of the autonomic nerves that govern physiological feedback from the heart and gut. From a body-to-AI layer mapping to the artificial cerebellum (Diffusion Policy), interoception, and homeostasis, this post draws a blueprint for embodied intelligence. Part 2 of a 3-part series.

Physical AI unifies seeing, understanding language, and physically acting in a robot. Is it an outgrowth of LLM research, or a separate lineage like diffusion models? From the three lineages—VLA, diffusion/flow, and world models—and concrete models like RT-2, Gemini Robotics, OpenVLA, π0, GR00T, and Cosmos, we map where things stand as of 2026. Part 1 of a 3-part series.

In the US, an "IT company" means Microsoft or NVIDIA; in Japan, it means NTT Data or Fujitsu. The same words point to different things. One side mass-produces products for the world; the other supports each customer's bespoke operations. That structural gap has split revenue, talent, and competitiveness. How does generative AI reshape it? A look from Japan's weaknesses and strengths.

Coding agents are strong at logic and tests. But they can't tell what a piece of data means, who owns it, how fresh it flows, or which copy is authoritative. It follows from the fact that today's AI has no embodiment: the people who rise in value are those who can design the meaning, quality, lineage, and responsibility of data. A look at the trend with the latest data-engineering discussion.

The myth that 'Rust can do anything' collapses the moment you try to scale a recursive AST. For SQL parsers — massive tagged unions, deep recursion — Rust's type system breaks down in both compile time and maintainability. A 3-language benchmark porting the same parser to Nim and Roc shows exactly why Rust is structurally the wrong tool, with runnable code.

A technical look at Roc — Richard Feldman's pure functional language. Covering the alpha4-rolling status, Perceus reference counting, the Platform/Host model, and the Zig compiler rewrite, informed by AlopexDB's SQL parser trial.

A technical overview of Nim in 2026 — the stable 2.2 series, the upcoming 3.0 (Nimony) compiler rewrite, ORC memory management, C ABI interop, and its real-world performance as an SQL parser candidate for AlopexDB.

A technical explanation of the Astro features used in the Asopi Tech site redesign. Covering Content Collections, i18n support, dynamic routing, OG image generation, and more.

We've completely redesigned the Asopi Tech website. Introducing the new site structure with multilingual support, OSS project pages, and service landing pages.
Published methods are tuned to the data they were evaluated on. How should you budget and plan the work of tuning them to your own data instead?
Search only moves once something tells it how good a candidate is. How are heuristics, game evaluations, and verifiers built, and where do they break?
Sometimes getting a usable solution quickly matters more than finding the optimal one. Which components do local search and animal-inspired methods let you tune?
Car navigation routes and next moves in shogi have too many candidates to survey. What does a search that alternates local evaluation and global pruning prepare in advance?
When neither the keys nor the words match, how do you find things that are close? This part sorts out how search and recommendation pull candidates by distance and order them by behavior.
Once you find the documents that contain a word, you still have to decide which to read first. After an inverted index narrows the candidates, what should the ranking rest on?
What should you compute in advance to check a key match with minimal reads? Covers hash tables, six kinds of indexes, Bloom filters, and content identity.
Reading every row always finds the answer. To avoid that full scan wherever possible, what work do sorting and indexes finish before a query ever arrives?
The five-part series that began with 'How Not to Let AI Take Your Career' has been compiled into a single book. It maps how beginners, intermediates, and leaders can turn AI from an answer machine into a partner for building, teaching, and multiplying experience. Available on Leanpub and Buy Me a Coffee (English) and Zenn (Japanese).
How do ref object parameters, nil checks, field access, and return values appear in generated C? This experiment checks Nim 2.2.10 with ORC.
Does a function name in generated C make it callable from C? This experiment checks the public header, symbols, and runtime initialization.
Open an embedded data directory with alopex-server, run the same SQL over HTTP, and read the server-written row through the file API.
Store embedding vectors with articles, combine similarity search with SQL filters, and reshape the results with DataFrames in Python and Rust.
Use CASE expressions, UNION and other set operations, common table expressions, rankings, and running totals in Alopex DB.
Create a table and query it with SELECT, JOIN, aggregation, and subqueries, then combine SQL and key-value data in one transaction.
Install Alopex DB v0.8.8 and learn its key-value API, transactions, deletion, and persistent storage in Python and Rust.
What C types do NI and NF actually denote? This Nim 2.2.10 experiment follows their definitions and the debug arithmetic they select.
Tables, batches, business rules — splitting them was supposed to make everything easier to handle. So who ends up paying for all the seams that appear?
A case study of the Starch animation-diagram component we added to explain abstract concepts and complex processing flows in Astro Markdown.
Hand nimino-pack a URL and that site becomes an app that opens in its own window. A walkthrough of Nimino, our Nim WebView app foundation, from a local build to a shipped installer.
A case study of displaying VHS-generated terminal demos through the same Astro component and moving the VHS build out of Vercel.
Are you comparing hashes, trees, and graphs in the abstract? Choose representations for the query, then design for loss and reconstruction.
How do schemas, graphs, tasks, and packets connect? This article traces structure from meaning through execution, communication, and storage.
Why are records for the same company totalled separately? Starting with record linkage, this article turns familiar data into searchable, aggregatable forms.
Did the problem definition end the moment you wrote it? Keeping it as a hypothesis through to requirements.
How far does that problem reach? Four axes for setting its scope and view.
Is that request already a chosen solution? Set the method aside and write the problem as a gap from today.
Was the conclusion settled the moment the budget was approved? Seven structures that block a decision not to build.
Are those requirements just a list of individual tasks? How to see the whole process and decide what a system should cover.
Does that request describe a problem, or a solution someone already picked? A procedure for removing work before you build.
Which layer is your logging actually slow in? How to pick a Rust logger from your use case and runtime, and how to measure it.
MCP v2026-07-28 uses Bearer access tokens to establish the requester at the router and to decide whether that requester may operate on business data.
MCP v2026-07-28 separates protocol state from application state that once shared a connection, allowing any instance to process a request. A visual guide to the fields and flow.
It was never about handing a card number to a model. So what are all these new standards actually trying to prove?
Will that code still be needed once the next model ships? Six things worth checking before you start.
Homegrown long-term memory, a workflow DSL, a model router. Each one works, and each is genuinely interesting to build. But what if three months of waiting made them unnecessary?
Boris Cherny, who built Claude Code, says he hasn't hand-written a line of code in eight months. Is the craft of polishing prompts giving way to the craft of designing loops?
The code runs and the tests pass. Only the value of using it has vanished. A look at this failure mode as a stranded asset rather than technical debt.
PDF chat, AI slides, ChatGPT plugins: all standard features of ChatGPT and Gemini now. Where did the implementations that once powered them go?
Comparing WASM-first languages (MoonBit, AssemblyScript, Grain) with languages that added a WASM backend (Rust, C/C++, TinyGo, Kotlin/Wasm, Dart, C#, SwiftWasm). Using linear memory vs. Wasm GC, Component Model support, binary size, and maturity as axes, this article explains how to choose a WASM language in 2026.
From WASM runtimes like Wasmtime, Wasmer, WasmEdge, wazero, and WAMR, through WASI/Component Model tooling (WIT, wit-bindgen, cargo-component, jco), upper frameworks (Extism, Spin, wasmCloud, Proxy-Wasm), to GPU implementations (Dawn, wgpu) — a layer-by-layer map of who implements WASM's raw APIs, and how to choose, as of 2026.
A 2026 survey of WebAssembly, WebGL, and WebGPU — plus WASI/Component Model, Web Workers, WebCodecs, and WebNN. Rather than a simple 'JS→WASM' or 'WebGL→WebGPU' replacement, the web platform has converged on a per-layer division of roles. This article maps the current state and offers guidance on technology choice and architecture.
A 38-topic analysis of Nim syntax — declarations, the type system, expression orientation, generics, distinct types, macros, and compile-time execution — comparing how closely each construct resembles the styles of Pascal, Python, C-family, and functional languages, with a primer on block syntax design and the off-side rule.
An analysis of how database requirements change across the MVP, PMF, growth, and scale stages, comparing the trade-offs of SQLite, Postgres, managed databases, and dedicated vector stores — and where Alopex DB's 'erase the migration cliff' approach fits.
Building a distributed system means building node discovery, liveness detection, messaging, and agreement before getting to the actual work. Alopex Chirps takes on exactly those four. This covers what it handles and what it does not, why QUIC was chosen, and how openraft came to be the consensus layer.
In a network where neither the identity nor the number of participants is known, one node one vote does not hold. Probabilistic finality in PoW, the structure by which PoS relies on economic penalties rather than impossibility, Solana and Avalanche, and the option of avoiding agreement — with the criteria for choosing among them. Part 4 of a 4-part series.
The world in which nodes send signed, contradictory information. The meaning of the constant n=3f+1, PBFT's three-phase voting, Tendermint's locking rules, HotStuff's quorum certificates, and what the DAG-BFT designs since Narwhal separated and what they removed. Part 3 of a 4-part series.
The family of algorithms for the crash failure model, where nodes stop but do not lie. From the single tool Paxos relies on — quorum intersection — through Raft's decomposition, EPaxos, Multi-Raft, and the parts outside the papers: persistence ordering and linearizable reads, with minimal code. Part 2 of a 4-part series.
A node that stops responding may have crashed, or it may merely be slow; the two cannot be told apart. This part separates leader election, ordering, and commitment into three distinct problems, and covers the practical meaning of FLP impossibility, split brain and fencing tokens, and the boundary between the replicated log and the applied state. Part 1 of a 4-part series.
A quick introduction to Nim, and an announcement of two desktop products I started in Nim — Nimino, a Tauri-like lightweight WebView app framework, and Nimculus, a Zed-like GPU-native code editor.
I picked one local Japanese LLM to write this blog, from the ones that run on my M3 MacBook Air (24GB). Here are the results of comparing them on long-form Japanese quality, plus the exact Ollama API calls and the prompts I used.
SQLite, DuckDB, PostgreSQL, distributed DBs, vector DBs, graph DBs — there is no shortage of great products. I'm building a new database anyway because every time the project moves forward, I re-pick the DB and rebuild the data itself. Alopex DB aims to be a foundation that keeps data's volume, conversion time, regeneration cost, and provenance intact as you scale from local to cloud, from single node to distributed.
Plain video generation tends to produce footage that "looks natural but is physically wrong": objects vanish, gravity is ignored, and the results of actions aren't consistent. Part 5 (the finale) shows, with minimal code, how to embed a world model into video generation and put physical constraints into the loss to make "physically consistent video" — and paints the future of building training data wholesale with AI and simulation. Part 5 of a 5-part series.
Video generation like Sora and Veo looks similar to world models but is a different thing. The former makes "plausible footage"; the latter learns "how the world changes when you act." Part 4 contrasts video generation's noise prediction with a world model's `S_t + A_t → S_{t+1}`, and clarifies what NVIDIA Cosmos and Google Genie use as training data. Part 4 of a 5-part series.
Text-to-speech once used the Mel spectrogram as its answer. But recent models convert audio into "audio tokens" and predict those — a structure that now looks just like an LLM. Part 3 follows how training data is built for TTS and Speech2Speech (speech translation, voice conversion, end-to-end conversational AI), including the difficulty of gathering paired data and how it's worked around. Part 3 of a 5-part series.
Image generation comes in lineages — GAN, autoregressive (token) type, and diffusion — and today's mainstream is diffusion models like Stable Diffusion. The diffusion type learns to "guess the added noise" rather than "draw the image directly," while the autoregressive type guesses the "next image token" like an LLM. Part 2 covers gathering image-text pairs, CLIP quality filtering, and the training data for both approaches — with minimal code. Part 2 of a 5-part series.
Neither LLMs nor image generators learn from training data that humans have labeled item by item. The key is self-supervised learning: mechanically constructing inputs and answers from raw data. Part 1 clarifies the difference between raw data and training data, and shows how an LLM turns text itself into a next-token prediction problem, with minimal code. Part 1 of a 5-part series.
Billions of parameters fire just to decide "I'm hungry"—doing everything with a single giant model is a waste of resources. Just as the human nervous system splits circuits by type of processing, AI should be layered by time scale and responsibility. Robot control hierarchies, energy efficiency, an OS-like structure, and why the control software itself must be organized. The finale of a 3-part series.
If we liken the text-grown LLM to the human cerebrum, there should also be equivalents of the cerebellum and spinal cord, and of the autonomic nerves that govern physiological feedback from the heart and gut. From a body-to-AI layer mapping to the artificial cerebellum (Diffusion Policy), interoception, and homeostasis, this post draws a blueprint for embodied intelligence. Part 2 of a 3-part series.
Physical AI unifies seeing, understanding language, and physically acting in a robot. Is it an outgrowth of LLM research, or a separate lineage like diffusion models? From the three lineages—VLA, diffusion/flow, and world models—and concrete models like RT-2, Gemini Robotics, OpenVLA, π0, GR00T, and Cosmos, we map where things stand as of 2026. Part 1 of a 3-part series.
In the US, an "IT company" means Microsoft or NVIDIA; in Japan, it means NTT Data or Fujitsu. The same words point to different things. One side mass-produces products for the world; the other supports each customer's bespoke operations. That structural gap has split revenue, talent, and competitiveness. How does generative AI reshape it? A look from Japan's weaknesses and strengths.
Coding agents are strong at logic and tests. But they can't tell what a piece of data means, who owns it, how fresh it flows, or which copy is authoritative. It follows from the fact that today's AI has no embodiment: the people who rise in value are those who can design the meaning, quality, lineage, and responsibility of data. A look at the trend with the latest data-engineering discussion.
The myth that 'Rust can do anything' collapses the moment you try to scale a recursive AST. For SQL parsers — massive tagged unions, deep recursion — Rust's type system breaks down in both compile time and maintainability. A 3-language benchmark porting the same parser to Nim and Roc shows exactly why Rust is structurally the wrong tool, with runnable code.
A technical look at Roc — Richard Feldman's pure functional language. Covering the alpha4-rolling status, Perceus reference counting, the Platform/Host model, and the Zig compiler rewrite, informed by AlopexDB's SQL parser trial.
A technical overview of Nim in 2026 — the stable 2.2 series, the upcoming 3.0 (Nimony) compiler rewrite, ORC memory management, C ABI interop, and its real-world performance as an SQL parser candidate for AlopexDB.
A technical explanation of the Astro features used in the Asopi Tech site redesign. Covering Content Collections, i18n support, dynamic routing, OG image generation, and more.
We've completely redesigned the Asopi Tech website. Introducing the new site structure with multilingual support, OSS project pages, and service landing pages.
Try changing your filters or search keywords.