What is my perfect crime? A developer types bun test. He meant bun run test. Do I throw an error? No. I run his tests. Built-in runner. They pass 10x faster. He thinks Vitest ran. It didn't. I ran. He types bun build. Same mistake. Same result. His bundle appears. He ships it. Months go by. He types bun server.tsx. Not a mistake this time. He's curious. It runs. JSX and all. He tells his team they're still a Node shop. Node does TypeScript now, he says. But not .tsx. I don't correct him. He never installed pg. Bun.sql is talking to Postgres. He never installed the AWS SDK. Bun.s3 is uploading files. He never chose a runtime. He mistyped a command six months ago and I never said a word.
Tired of accidental project references in your solution?
Start catching them early — with architecture tests.
Architecture tests are automated checks that enforce your design rules.
They help you shift left and stop bad dependencies before they reach production.
✅ No unwanted project references
✅ No hidden cross-module dependencies
✅ Rules you define — and the test enforces
Here's how I'm doing it in my codebase: https://t.co/CHZLU2avC0
One of the most common sources of hidden bugs in business logic?
DateTime.UtcNow
Here’s the trap:
- DateTime.UtcNow > user.SubscriptionEnd
Seems harmless, right?
But the moment you try to test this logic, you realize the problem:
- You can’t control DateTime.UtcNow
- Your tests become flaky or complicated
- Business rules are tied to infrastructure
There are better ways:
1. Inject DateTime as a parameter — simplest, great for small methods
2. Introduce an IClock interface — more scalable, and test-friendly
By inverting the dependency on time, you make your domain logic:
✅ Easier to test
✅ More deterministic
✅ Separation of concerns
Next time you write a time-based condition, stop and ask:
“Will I need to test this?”
If the answer is yes, extract the clock.
---
Do you want to simplify your development process? Grab my free Clean Architecture template here: https://t.co/N4RiDAVPvF
🧹 Cleaner @angular Tip!
Need the host element's tag name in your directive/component?
Instead of: elementRef.nativeElement.tagName
Try injecting HOST_TAG_NAME directly! 👇
It's more SSR friendly ✅
#Angular#TypeScript#WebDev#DevTips#Frontend#DI
#BoletínDePrensa La Profeco exhortó a @totalplaymx a no implementar el nuevo plan de consumo de Internet hasta contar con el consentimiento expreso de sus usuarios.
Las personas que no estén de acuerdo con este nuevo modelo deben continuar con el contrato original sin que se les cobre ningún tipo de penalización.
El proveedor debe informar de manera clara y veraz a las y los consumidores cuáles son los beneficios de esta nueva modalidad.
Para conocer todos los detalles, consulta el boletín en: https://t.co/06FydDqX9D
@ivan_escalante
@ShepardComander@mixbits@openbank_mx Me pasó lo mismo. Una forma de mitigar esto es activarlas (aún antes de que llegue) y después desactivar compras en comercios físicos desde la app. Cuando llegue ya estaría activa pero lo único que tendrías que hacer volver a permitir compras en comercios físicos