- Terraform – A CI/CD Pipeline in GitHub Actions
Plan on the pull request, apply on merge, and no AWS keys stored anywhere. Configuring GitHub's OIDC provider and the IAM role it assumes, posting the plan as a PR comment, the image build and push to ECR, rolling the ECS service onto the new image, and the concurrency group that stops two applies running at once.
- React Native – Internals: Hermes, JSI and the New Architecture
How the thing actually works. JavaScript runs in Hermes; your components are not drawn by a web view but turned into real native views. The old asynchronous bridge, why it was the bottleneck, and what JSI, Fabric and TurboModules replaced it with. What the New Architecture changes in practice, why Hermes matters for startup time, and how to reason about the two threads when something feels slow.
- Spring Boot – Interview Questions
Senior-level questions and answers, every one drawn from a real decision or a real bug in the pizza codebase rather than from a list. Auto-configuration, bean scopes, the proxy rule, transactions, N+1, stateless auth, and the trade-offs an interviewer is actually listening for.
- TypeScript – keyof, Mapped and Conditional Types
The machinery the utility types are built from. keyof and typeof and what they mean together, indexed access, mapped types with their modifiers, conditional types and infer. Ending with the expression this app uses in two files — `(typeof UserRole)[keyof typeof UserRole]` — read one piece at a time.
- NestJS – Configuration
@nestjs/config, and why the useful pattern is not reading process.env through ConfigService but parsing every variable once into a typed object. Validating at startup so a bad value is an error that names it, isGlobal, getOrThrow, and registerAsync for the modules that need a value config has not produced yet.