What if your Kubernetes cluster simply refused to run unsigned images? I spent some time experimenting with enforcing image provenance in a small Kubernetes setup using MicroK8s. The idea was simple: Only container images with valid cryptographic signatures are allowed to run in the cluster. For this I used: GitLab CI/CD (build + signing pipeline) Cosign / Sigstore (image signing) Kyverno (admissi
I didn’t go into the MeDo hackathon with some big, polished idea. I just wanted to build something I’d actually use. So I made Exam AI. The problem is simple: studying for exams is chaotic. You read notes, search things, forget half of it, and then try to cram everything at the end. I wanted something that helps you actively think, not just passively read. You give Exam AI a topic — anything you’r
🚀 The Complete Guide to Pass the DP-750 Beta Certification Exam — Azure Databricks Data Engineer Associate Today I have something important for you. I've created a specific guide to help you pass your DP-750 beta certification. How to master Azure Databricks, Unity Catalog governance, and Apache Spark to confidently pass the Microsoft DP-750 certification — the most complete study roadmap for d
Introduction While studying for CompTIA Network+, I couldn't grasp what a Loopback Plug actually does. I understood that it was used for testing, but had no idea how it worked in practice. As a result, I kept getting questions about it wrong. Once I understood the structure behind it, everything clicked. So I decided to write it down. NIC stands for Network Interface Card. a component inside a c
If you find this helpful, please like, bookmark, and follow. To keep learning along, follow this series. In Rust, a test is a function used to verify whether non-test code behaves as expected. A test function usually performs three actions: Arrange data/state Act on the code under test Assert the result In some languages, these three actions are called the 3A steps. A test function is still just a
If you've ever tried to learn Python consistently, you know the problem: That's why I built DuCode — a platform that ## How it works Every day a new challenge drops. You get a code snippet like this: def make_counter(start=0): def counter(step=1, *, reset=False): if reset: counter._val = start return counter._val counter._val = getattr(counter,
Try this. Find a photo on your phone that you love. Now squint, or zoom out until it's the size of a stamp. It's still the same photo. You can still tell what's in it. But something about it has gone a little flat — the part that made you take it in the first place has quietly walked out of the room. Most of us would describe what just happened with a shrug: "it's just smaller." But the truth is m
Most teams I have worked with have one auth test in their suite. It looks like this: test('valid token verifies', () => { const token = signSync({ sub: 'user-1', aud: 'api://backend' }, secret); const result = verify(token, options); expect(result.valid).toBe(true); }); That test is fine. It is also a smoke test, not a regression suite. It catches the case where verification is completely b