- Java Interface
An interface is a contract: a list of methods a class promises to provide, with no state and (mostly) no implementation. It is the main tool Java gives you for writing code that does not depend on a specific class — and that is what makes code testable and changeable. Declaring and implementing one…
- React – Handling Events
onClick takes a function, not a call — the single most common beginner mistake, and why the arrow function fixes it. Passing arguments to a handler, typing the event in TypeScript, preventDefault on form submits, and how event propagation differs from the DOM you already know.
- Angular – Component Styles, Sass and Bootstrap
Angular scopes a component's styles to that component by default, which changes how you think about CSS. View encapsulation and the attribute selectors it emits, `:host` and `:host-context`, `[class]` and `[style]` bindings, and layering Sass overrides on Bootstrap in `angular.json` so they win without a single `!important`.
- Docker – Layer Caching and Build Speed
One rule explains most fast Dockerfiles: copy the dependency manifest and install dependencies *before* copying your source. How the cache is keyed, why one changed line can invalidate every layer after it, the `pom.xml`-first and `package.json`-first patterns, and BuildKit cache mounts.
- Hasura – Metadata Is the Source of Truth
Hasura's schema is not in your database and not in your code — it is metadata, and understanding that one fact explains most of the product. What tracking a table means, why clicking in the console is fine until two people do it, and how to keep metadata in version control and apply it from a script. Then v3, where metadata stops being a live API and becomes `.hml` files you compile.