top of page
Search


Acceptance-Testing NestJS Microservices
Acceptance Testing multiple NestJS Microservices by running them a single process communicating via a memory fake.
Shai Yallin
Sep 4, 20245 min read
51 views
0 comments


Using Contract Tests for reliable memory fakes
How to make sure that memory-based fakes really behave like the production implementations they replace
Shai Yallin
Sep 3, 20244 min read
36 views
0 comments


Fast and Furious Acceptance Tests for NestJS applications
Writing memory-based black-box acceptance tests for NestJS apps, testing features rather than implementation details
Shai Yallin
Sep 3, 20246 min read
45 views
0 comments


You Don't Need Kubernetes (Yet)
K8s solves a problem that your new startup probably doesn't face. Invest your resources in finding product-market fit and scale up later.
Shai Yallin
May 27, 20243 min read
85 views
1 comment

Shift-Left and The Pitfalls of Overplanning
PMs make overly detailed plans without dev feedback, resulting in waste. Shorten cycle time by planning briefly then develop and iterate.
Shai Yallin
May 1, 20243 min read
77 views
0 comments

Unit Tests Considered Harmful
Unit tests couple us to implementation detail, restrict refactoring and don't assert that features work. Prefer bigger-scoped tests.
Shai Yallin
Apr 2, 20243 min read
7,162 views
5 comments


Of Rigid Microservices and Flexible MonolithsÂ
Microservices incur significant overheads in costs of change, runtime and complexity. Start with a monolith and break it down when needed.
Shai Yallin
Mar 18, 20243 min read
624 views
1 comment


Fake, Don't Mock
Fakes are complete implementations of an API used to replace IO-bound adapters with memory-bound doubles to facilitate Acceptance Testing
Shai Yallin
May 2, 20236 min read
2,311 views
0 comments


Learning Tests: better than benzos
Learning Tests are an easy and useful methodology for integration with new and unknown APIs, reducing stress and improving feedback times.
Shai Yallin
Mar 19, 20233 min read
77 views
0 comments

Chronomatic: my side-project story
How I used React with TypeScript and Firebase to build my own client management system, using TDD and Acceptance Testing.
Shai Yallin
Aug 28, 20226 min read
659 views
1 comment

Beautiful Object Builders in TypeScript
Fixture test data create stale and outdated data, and make tests unreliable. Object Builders are a better way, here's how to use them.
Shai Yallin
Jul 19, 20224 min read
749 views
0 comments


dotenv considered harmful
Relying on .env files couples your codebase to env vars, making your software harder to change. Here's how to decouple them.
Shai Yallin
Jun 21, 20224 min read
1,136 views
0 comments


The Anatomy Of A Rotten Codebase
Code rots because we build too many features, too fast. Emergent Design is an effective way to fight code rot and make change easier.
Shai Yallin
Apr 5, 20227 min read
3,378 views
0 comments


Case Study: Versatile CraneView Refactoring
How I helped Versatile remove fear of change in a key subsystem by introducing TDD and refactoring to Hexagonal Architecture.
Shai Yallin
Jan 5, 20229 min read
1,002 views
0 comments


Your Software as a Kitchen
When there are too many dirty pots and plates in the sink, it's impossible to clean them. It's the same with software and technical debt.
Shai Yallin
Nov 23, 20216 min read
1,257 views
0 comments


Permanent Prototypes
Prototypes are a lie; when it's good enough for production, it *becomes* production. Here's how to make them easily maintainable.
Shai Yallin
Feb 1, 20216 min read
1,709 views
0 comments


It's all about the maintenance, dummy
Writing features we might need in the future is not only a waste of time, it makes your software harder to maintain.
Shai Yallin
Dec 16, 20203 min read
2,903 views
3 comments

Big Design Up-Front or Emergent Design? Hexagonal Architecture Gives Us Both
Hexagonal Architecture allows us to separate pure logic from external constraints and enables writing fast, integrative acceptance tests.
Shai Yallin
Nov 4, 20209 min read
1,021 views
0 comments
bottom of page