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
[ 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.
MahjongSpot
4 joueurs · 1 service
RIPER
3 surfaces · 2 jetons
Assurance télématique
3 pays · 5 ans
Réservation aérienne
2 canaux · mainframe
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
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.
| Dimension | Boule de boue | Ports et adaptateurs |
|---|---|---|
| Fichiers touchés | Partout où la formule a été copiée — personne ne peut dire combien avant de faire un grep | Un seul adaptateur. Le noyau de domaine ne bouge pas. |
| Comment on la teste | De bout en bout, à la main, car aucune interface n'existe pour isoler le changement | Un test unitaire sur le port, isolé de tous les adaptateurs autour |
| Rayon d'impact | Inconnu jusqu'à ce que quelque chose casse — la formule, la persistance et la réponse partagent le même code | Confiné au seul adaptateur derrière le port modifié |
| Peut-on la mettre à l'échelle | Seulement par accident — l'état et la logique sont où quelqu'un en avait besoin la dernière fois | Par 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.
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.
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.
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.
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.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.
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é.
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ées | Connexions | Coût mensuel |
|---|---|---|
| 10 | 40 | ~$85 |
| 100 | 400 | $150–200 |
| 1,000 | 4,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 preuveConsultant 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
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
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
[ 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.