# yasint.dev > Personal blog and portfolio of Yasin Miran — software engineering, distributed systems, security, and algorithms. Based in Bergen, Norway; works at the Computational Biology Unit, University of Bergen. A markdown rendering of any post is available by appending `.md` to its URL. The full corpus is at /llms-full.txt. ## Pages - [Work](https://yasint.dev/work/): Things Yasin has built and contributed to. - [Now](https://yasint.dev/now/): What Yasin is working on currently. ## Writings - [Your agent is probably using git worktrees](https://yasint.dev/agents-and-git-worktrees.md): Coding agents reach for git worktrees as the unit of parallel work. The mental model and four commands to stay in control. - [So Much for O(1)](https://yasint.dev/hash-maps-under-the-hood.md): I'd known the theory for years but couldn't have built one from scratch. So I did, with interactive demos you can poke at. - [We Might All Be AI Engineers Now](https://yasint.dev/we-might-all-be-ai-engineers-now.md): The models are good now. But most people still miss the point. - [The Hardest Bug I Ever Fixed Wasn't in Code](https://yasint.dev/hardest-bug-wasnt-in-code.md): Software engineering is 50% code and 50% people — and almost everything written about it ignores the people part. What I learned the hard way about speaking up. - [Why I Switched to Podman (and Why You Might Too)](https://yasint.dev/why-i-switched-to-podman.md): I was a Docker loyalist for years, until I needed rootless containers. What won me over — and what still bites. - [The World is Stochastic](https://yasint.dev/the-world-is-stochastic.md): Stein W. Wallace: Embrace uncertainty, curiosity, and adaptability in careers. - [Debugging a running Java app in Docker](https://yasint.dev/debugging-running-java-app-docker.md): How to Attach a Debugger to a Running Java Application Inside a Docker Container - [Why is it UTC and not CUT?](https://yasint.dev/why-utc-is-not-cut.md): The timekeeping compromise - [Deep prop drilling in ReactJS](https://yasint.dev/react-deep-prop-drilling.md): ReactJS Deep Prop Drilling: Effective Solutions and Best Practices - [Eigenvectors](https://yasint.dev/eigenvectors.md): Exploring Spectral Graphs - [Java's fork/join framework](https://yasint.dev/java-fork-join.md): Java goes Forking Crazy! - [TypeScript's omit and pick](https://yasint.dev/ts-omit-and-pick.md): How to Pick your TypeScript battles and when to Omit the drama! - [JavaScript's new immutable array methods](https://yasint.dev/javascript-new-immutable-array-methods.md): Exploring toReversed(), toSorted(), toSpliced(), and with() from ECMAScript 2023. - [Integrating JUnit 5 in Maven projects](https://yasint.dev/integrating-junit-in-maven-projects.md): A practical guide to setting up JUnit 5 testing in Maven projects with modern best practices. - [My take on ChatGPT and prompt engineering](https://yasint.dev/chatgpt-prompt-engineering.md): ChatGPT is powerful, but it's not magic. Here's how I actually use it. - [Declarative events in ReactJS](https://yasint.dev/declarative-events-in-reactjs.md): Explore how to handle pathological events declaratively in ReactJS applications. - [Positive Lookaheads](https://yasint.dev/positive-lookaheads.md): Oh, you're looking for something? Well, I'm looking for something too. - [Functors](https://yasint.dev/functors.md): Yet another design pattern from category theory in mathematics. - [Fast forward videos with ffmpeg](https://yasint.dev/fast-forward-videos-with-ffmpeg.md): Learn how to speed up your videos effortlessly using ffmpeg. - [Rotate y-axis of a 2D vector](https://yasint.dev/rotate-y-axis-of-a-2d-vector.md): Reverse rotate a 2D vector by shifting columns up or down. - [Synchronizing time](https://yasint.dev/synchronizing-time.md): Oh, you think time is simple? Let's trace it back to its atom. - [Vector rotation](https://yasint.dev/vector-rotation.md): Rotate me right round baby right round. - [Sed find and replace](https://yasint.dev/sed-find-and-replace.md): How to find and replace texts in a file using sed. - [Asgardeo try it application](https://yasint.dev/introducing-asgardeo-try-it-application.md): Learn how to use Asgardeo Try it Application to test out various authentication flows. - [Flatten error constraints](https://yasint.dev/flatten-error-constraints.md): Recursively flatten properties of an array of objects. - [Good Git commit messages](https://yasint.dev/good-git-commit-messages.md): Uncover key strategies for crafting effective, clear Git commit messages. - [Asgardeo JIT user provisioning](https://yasint.dev/asgardeo-jit-user-provisioning.md): Learn how just-in-time user provisioning works in Asgardeo when authenticating users from federated Identity Providers. - [Monotonic Arrays](https://yasint.dev/monotonic-arrays.md): Learn how to determine whether an array is either monotonically increasing or decreasing. - [How GOROOT and GOPATH works](https://yasint.dev/gopath-goroot.md): IAM GROOT. No, I'm not. I am GOROOT. I am GOPATH. I am Go. I am confused. - [Two summation](https://yasint.dev/two-summation.md): Probably the most common interview question you'll ever see. Let's solve it.