Des logicielsqui tiennent

De la conception à la livraison — des applications web progressives aux systèmes d'entreprise, construits par des ingénieurs seniors qui les ont exploités en production.

  • Conception de produits et de plateformes

    UX, prototypes, systèmes de conception

  • Développement d'applications sur mesure

    PWA, mobile, entreprise

  • Ingénierie de l'IA

    dans votre produit et dans votre SDLC

  • Conseil infonuagique et SDLC

    sélection, déploiement, coûts

  • Énergie et matières premières
  • Aviation et transport
  • Assurance et paiements

Waterloo BMath, 1997 · Waterloo MMath, Symbolic Computation, 1998 · Concordia MEng, Software Engineering, 2016 · ThoughtWorks Architect · CFA Level 2 candidate · SR&ED Approved engineering work

[ 02 / CASE STUDIES ]

Études de cas sélectionnées.

Un producteur énergétique intégré canadien · 2006–2016

Une décennie de mélange, de planification et de règlement pétrolier sur une seule plateforme.

évaluations d'expressions par seconde
250K/sec
mandat
10 yrs
RS&DE approuvé
SR&ED

L'économie du mélange, l'équilibrage contractuel et physique, le règlement tarifaire et de péréquation, ainsi que la planification des flux devaient tous reposer sur un seul modèle, intégré à SAP à l'échelle de l'entreprise, et assez rapide pour converger au cours d'une séance de planification interactive.

  • c#
  • .net
  • wcf
  • asp.net mvc
  • winforms
  • oracle
  • ibatis.net
  • msil
  • microsoft solver foundation
  • quickgraph
  • sap xi
  • teamcity
  • nunit

Un assureur à la demande · 2016–2021

Assurance à l'usage bâtie sur la télématique véhiculaire en temps réel.

mandat
5 yrs
pays
3
modèle de facturation
Event-driven

L'assurance à la demande — achat, réclamations, facturation et gestion des sinistres — était tarifée à partir de l'activité réelle du véhicule, et livrée par une équipe répartie sur trois pays.

  • .net
  • react
  • typescript
  • aws lambda
  • dynamodb
  • sqs
  • sns

Codebasis · 2024–present

Une application multijoueur en temps réel en production, avec son modèle de coûts publié.

images mesurées
172,681
parties concurrentes modélisées
10→1,000
coût mensuel modélisé
$85→$1,150

Un jeu à quatre joueurs en temps réel, avec un plateau en 3D, devait fonctionner autant sur téléphone que sur ordinateur, maintenir son état sous la concurrence, prendre en charge des bots, et rester assez économique à exploiter.

  • asp.net core
  • signalr
  • postgresql
  • react
  • three.js
  • rtk query
  • onnx
  • stripe
  • ecs fargate
  • github actions
Voir toutes les études de cas

[ 03 / SCALE ]

D'une PWA de fin de semaine à une plateforme d'entreprise d'une décennie.

La même pratique, la même rigueur, illustrée par cinq mandats réels — d'une application web à quatre joueurs à un système national de règlement intégré à SAP.

  1. MahjongSpot

    4 joueurs · 1 service

  2. RIPER

    3 surfaces · 2 jetons

  3. Assurance télématique

    3 pays · 5 ans

  4. Réservation aérienne

    2 canaux · mainframe

  5. Mélange pétrolier

    10 ans · intégré SAP

[ 04 / ARCHITECTURE ]

Deux façons de construire la même application

Tout système accumule de la complexité en grandissant. Ce qui change, c'est si cette complexité a un endroit où aller.

Boule de boue

Les contrôleurs accèdent directement à la persistance. Les règles métier vivent où c'était pratique de les écrire, réparties sur trois couches à la fois.

Ports et adaptateurs

domaineHTTPPersistanceBus de messagesFlux tiers

Un noyau de domaine en laiton, avec des ports sur ses arêtes et des adaptateurs à l'extérieur : HTTP, persistance, bus de messages, flux tiers.

Le régulateur change la formule tarifaire.

DimensionBoule de bouePorts et adaptateurs
Fichiers touchésPartout où la formule a été copiée — personne ne peut dire combien avant de faire un grepUn seul adaptateur. Le noyau de domaine ne bouge pas.
Comment on la testeDe bout en bout, à la main, car aucune interface n'existe pour isoler le changementUn test unitaire sur le port, isolé de tous les adaptateurs autour
Rayon d'impactInconnu jusqu'à ce que quelque chose casse — la formule, la persistance et la réponse partagent le même codeConfiné au seul adaptateur derrière le port modifié
Peut-on la mettre à l'échelleSeulement par accident — l'état et la logique sont où quelqu'un en avait besoin la dernière foisPar conception — le noyau ne porte aucun état propre à un adaptateur

[ 05 / AI ]

L'IA avec des garde-fous

Un LLM générera volontiers une boule de boue dix fois plus vite. Le goulot d'étranglement n'a jamais été de taper.

L'IA écrit ce que votre dépôt lui apprend à écrire.

  1. 01

    Architecture énoncée dans le dépôt, à chaque frontière

    Chaque frontière que le système traverse est documentée là où un modèle la lit réellement — dans le code, pas un wiki qu'il n'a jamais vu.

  2. 02

    Le modèle de domaine d'abord

    Un langage omniprésent, établi avant le code, pour que les noms générés pour un même concept ne dérivent pas entre le point d'entrée, le service et la table.

  3. 03

    Les ports comme contrats

    Interfaces et clients générés font d'une interface quelque chose qu'une build peut faire échouer, pas seulement quelque chose qu'un réviseur pourrait remarquer.

  4. 04

    Les tests comme condition de passage

    Tests unitaires, d'intégration et de bout en bout conditionnent la fusion. Sur notre propre mahjong-api, une fonctionnalité récente a livré deux nouveaux montages de test dans le même commit que le point d'entrée (034dd81cd) — et sur l'ensemble du dépôt, près du quart des fichiers sont des tests.

  5. 05

    Règles de dépendance imposées par l'outillage

    Des tests d'architecture et des règles de lint font échouer la build avant qu'une violation de frontière n'atteigne un réviseur humain.

  6. 06

    De petites unités révisables

    Des fichiers assez petits pour tenir dans la tête d'un réviseur — et dans la fenêtre de contexte d'un modèle — pour qu'un changement généré puisse être lu avant d'être fusionné.

  7. 07

    Spécification → plan → implémentation

    Chaque étape se termine par un point de contrôle en revue, pour qu'un plan généré soit approuvé avant de devenir du code généré.

[ 06 / SCALING ]

Tenir la charge, c'est pouvoir grandir

Le calcul n'est jamais le goulot d'étranglement.

Chaque limite mesurée ici était un problème de frontière, pas de matériel : un état conçu pour un seul processus, un mode d'écriture qui ne se répartissait pas, et un stockage illimité pour les anciennes images. Plus de CPU n'aurait rien changé à aucune d'elles.

Parties simultanéesConnexionsCoût mensuel
1040~$85
100400$150–200
1,0004,000~$1,000–1,150

[ 07 / CAPABILITIES ]

Chaque discipline dont un système a besoin

  • Conception de produits et de plateformes

    Systèmes de conception, prototypes et la recherche qui les sous-tend, jusqu'à des composants prêts pour la production.

  • Développement web et PWA

    Applications web réactives et installables, conçues pour la résilience hors ligne et des interactions inférieures à la seconde.

  • Applications mobiles

    Applications natives et multiplateformes conçues pour la révision des magasins d'applications, la fragmentation des appareils et les conditions du terrain.

  • Applications d'entreprise

    Systèmes d'affaires qui remplacent les chiffriers et les outils désuets sans perturber les opérations quotidiennes.

  • Intégration de données et EAI

    Pipelines et API qui réconcilient les données entre les PGI, les SCADA et les systèmes tiers en quasi temps réel.

  • Ingénierie de l'IA

    Systèmes d'apprentissage automatique et de modèles de langage en production, conçus pour la précision, la latence et le coût sous charge réelle.

  • Architecture et déploiement infonuagique

    Infrastructure, pipelines de déploiement et optimisation des coûts sur AWS, Azure et GCP.

  • Conseil en cycle de développement et livraison

    Audits de livraison, structure d'équipe et conception de processus pour les organisations qui dépassent leurs premiers ingénieurs.

[ 08 / ENGAGEMENTS ]

Quatre façons de travailler ensemble

Conseil et architecture

Idéal quand
Quand vous avez besoin d'un avis externe avant d'engager un budget ou du personnel.
Vous apportez
Une équipe en place, une décision à prendre et une échéance.
Nous apportons
Une révision d'architecture, un choix technologique et une recommandation écrite, prête à être mise en œuvre.
Forme habituelle
1 à 3 semaines

Évaluation de l'architecture et du cycle de développement — portée fixe, deux semaines, prix fixe.

Voir la preuve

Consultant intégré

Idéal quand
Quand votre équipe a la feuille de route, mais a besoin d'une main sénior pour débloquer la livraison.
Vous apportez
Une équipe, un carnet de travail et un manque de séniorité ou d'expertise pointue.
Nous apportons
Un ingénieur sénior intégré à votre équipe, sur vos outils, relevant de votre direction.
Forme habituelle
3 mois et plus
Voir la preuve

Escouade sénior

Idéal quand
Quand un projet doit avancer plus vite que votre équipe actuelle ne peut le staffer.
Vous apportez
Une portée définie et un responsable produit.
Nous apportons
Une petite équipe sénior, de la conception à la livraison, qui livre comme une seule unité.
Forme habituelle
2 à 6 mois
Voir la preuve

Livraison complète

Idéal quand
Quand vous avez une idée, pas encore d'équipe, et qu'il faut la construire et la livrer.
Vous apportez
La vision, le budget et le marché.
Nous apportons
La livraison complète : conception, construction, déploiement et la première mise en production.
Forme habituelle
3 à 12 mois
Voir la preuve

[ 09 / THE PRACTICE ]

Dirigée par son fondateur, appuyée par un réseau

Codebasis est dirigée par son fondateur. Vingt-sept ans de génie logiciel se trouvent derrière chaque mandat, à commencer par un B. Math et un M. Math de l'Université de Waterloo et une M. Ing. de Concordia, un passage comme architecte chez ThoughtWorks, et une décennie passée au cœur de systèmes du secteur énergétique — mélange de pétrole brut, allocation de capacité pipelinière, règlement tarifaire — un travail qui reste en production pendant des années et qui doit être juste du premier coup.

Cette rigueur dépasse le code : une candidature CFA niveau 2 et un ensemble de travaux d'ingénierie agréés RS&DE font que les chiffres qui comptent pour un client — coût, risque, rendement — reçoivent le même examen que l'architecture.

Il n'y a pas de bassin de ressources en attente. Les mandats sont dotés à partir d'un réseau d'ingénieurs seniors soigneusement choisis, assemblé selon la forme du travail devant nous — jamais gonflé de juniors en apprentissage sur l'horloge d'un client, et jamais puisé dans une équipe permanente inactive entre les projets. Vous êtes engagé par, et vous répondez à, la personne qui a fondé la pratique, sur chaque mandat, peu importe sa taille.

  • Waterloo

    BMath, 1997

  • Waterloo

    MMath, Symbolic Computation, 1998

  • Concordia

    MEng, Software Engineering, 2016

  • ThoughtWorks

    Architect

  • CFA

    Level 2 candidate

  • SR&ED

    Approved engineering work

[ 10 / CONTACT ]

Parlons de ce que vous construisez

Chaque mandat commence par une conversation sur le système devant vous — ses contraintes, son histoire, et ce qui doit être vrai dans un an. Réservez une consultation, ou écrivez-nous directement.