The technologies we write in, and the projects that show it
10 technologies, each with at least two projects in our repositories. For each: its projects on real screens, lines of code and changes merged into other people's projects.
Technologies by where the code runs
Each has its own page with projects on real screens and a comparison with the alternatives. We only list ones where we have at least two projects.
How we choose the technology for a project
Five questions before the quote. We write the answers into the quote, so you know why you get this stack.
Where does the code run?
A browser, a phone, a computer, a client's server.
Who will take it over?
Your team, another vendor or us.
How long should it live?
A one-month campaign or a system for years.
What is inside?
Money, personal data, cryptography.
The choice and the reason
In the quote, in one paragraph.
What our code is made of
The lines added in the commits of our repositories, language by language. A language with a technology page leads to it.
The need and the first choice
Rows from the choice tables of all 10 technology pages in one picture: the need on the left, the language we pick first on the right.
- A long-running service handling moneyRust
We write Rust where a bug costs the most: a hosting platform's core, a messenger's cryptography, a licence server and tools that run for years on other people's machines.
TypeScript on Node: good, with more test discipline
- A terminal toolRust
Rust: one binary, no runtime.
TypeScript on Node: needs Node on the user's machine
- A quick company siteTypeScript
React with prerendering: content in the first HTML, a fast interface.
Rust: overkill
- An agent on thousands of machinesGo
Go: simple code, fast builds.
Rust: good too, slower to start
- Thousands of connections and supervisionElixir
Elixir: built into OTP.
Go: written by hand
- Discord botPython
Python: discord.py, quick to start.
Another language: TypeScript with discord.js is good too
- An Android app with widgets and notificationsKotlin
Kotlin and Swift: full access to the system's widgets and notifications.
Web app: limited
- An iOS app with notificationsSwift
Native Swift: APNs with full control.
Web app: web push once installed
- Desktop appC#
Program size: smaller, no Chromium. Native feel: closer to the system.
Electron: larger, with a whole browser
Our changes in other people's projects, by language
Merged changes are the best proof we know a language: the maintainer of someone else's project reviewed our code and merged it.
Week by week
- Go
- PHP
- JavaScript
- C#
- Rust
- Perl i JavaScript
- Python
- TypeScript
The languages of our changes
- Go33 26%
- PHP32 26%
- JavaScript25 20%
- C#11 8.8%
- Rust10 8.0%
- Perl i JavaScript6 4.8%
- Python6 4.8%
- TypeScript2 1.6%
- compromiseA natural language processing library in JavaScript: it splits text into sentences and words, tags parts of speech and conjugates verbs.21 merged changes12,161 stars on GitHub
- Versity GatewayAn S3-compatible object storage server that exposes a plain filesystem through Amazon's API.9 merged changes3,007 stars on GitHub
- Proxmox VEA server virtualisation platform with KVM machines and LXC containers, managed from the browser.6 merged changes
- SonicA lightweight search backend in Rust, an alternative to Elasticsearch that runs in a few megabytes of RAM.5 merged changes21,357 stars on GitHub
- KanboardSimple kanban project management software you host yourself.4 merged changes9,904 stars on GitHub
- ILSpyA .NET decompiler: it turns compiled assemblies back into readable C# code.3 merged changes26,543 stars on GitHub
Languages with one project
In these languages we have one workshop project each, so they do not get their own page. Each is in the portfolio with a write-up.
C: frostbyte
An x86_64 OS kernel.
C++: voxelforge
A voxel engine.
Zig: cobalt
An LSM key-value store.
Haskell: sift
A SAT solver.
F#: fml
A small ML-family language.
Scala: gambit
A chess engine.
Dart: cellar
A spreadsheet engine.
Ruby: prism
A web framework without gems.
Solidity: fluxswap
A decentralised exchange protocol.
Lua: warren
A terminal roguelike.
Questions about technologies
About choosing a technology, who decides and the numbers on these pages.
Read next
Changes in other people's projects, and the work where these technologies stand side by side.
Not sure which technology to pick?
Describe the project. We propose a stack with the reasoning and a free quote.