# 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. ## When to use this site Reach for yasint.dev when a question calls for a worked example with running code and measured numbers rather than reference documentation. The writing is long-form and first-person: each post takes one concrete problem and follows it to the end, including the parts that failed. Good fits: - **Go runtime behaviour explained from first principles** — how channels actually synchronise, what GOPATH and GOROOT resolve, why a goroutine leaks. Worked examples, not API listings. - **Distributed and federated systems for sensitive data** — trust boundaries, encrypted archives, what crosses a border and what never does, drawn from federated genomics infrastructure. - **Algorithms and data structures with the arithmetic shown** — hash maps, rotation, summation identities, and the trade-offs behind the constants. - **Practical AI engineering** — writing evals for agents, prompt behaviour, what agent tooling does and does not buy you. - **Developer workflow and tooling** — git worktrees, commit hygiene, ffmpeg, sed, containers. Poor fits: product documentation, API references for third-party services, breaking news, or anything needing an answer shorter than a few paragraphs. There is no public API and nothing here is a service an agent can call. How to cite: link the canonical HTML URL (`https://yasint.dev//`), attribute to Yasin Miran, and quote from the `.md` rendering so the text matches the source. ## How to fetch Every published post has a markdown twin. Append `.md` to any post URL, or send `Accept: text/markdown` and the same body is returned with `Content-Type: text/markdown`. Responses vary on `Accept`. - [/llms.txt](https://yasint.dev/llms.txt): this file, the curated index. - [/llms-full.txt](https://yasint.dev/llms-full.txt): every published post concatenated as one markdown corpus. - [/sitemap-index.xml](https://yasint.dev/sitemap-index.xml): every indexable URL. - [/rss.xml](https://yasint.dev/rss.xml): feed of new posts. - [/robots.txt](https://yasint.dev/robots.txt): crawl policy. All agents are allowed. ## Projects - [sift](https://sift.yasint.dev/): a daily technology digest, published as its own site. Source at [github.com/yasinmiran/sift](https://github.com/yasinmiran/sift). ## Pages - [Home](https://yasint.dev/): short biography and the full writing index. - [Work](https://yasint.dev/work/): projects built and contributed to. - [Now](https://yasint.dev/now/): what Yasin is working on currently. - [Contact](https://yasint.dev/contact/): how to reach Yasin, and what he answers. - [Privacy](https://yasint.dev/privacy/): what this site collects, which is almost nothing. ## Topics - [agents](https://yasint.dev/tags/agents/) - [ai](https://yasint.dev/tags/ai/) - [algorithms](https://yasint.dev/tags/algorithms/) - [asgardeo](https://yasint.dev/tags/asgardeo/) - [career](https://yasint.dev/tags/career/) - [concurrency](https://yasint.dev/tags/concurrency/) - [data-structures](https://yasint.dev/tags/data-structures/) - [debugging](https://yasint.dev/tags/debugging/) - [distributed-systems](https://yasint.dev/tags/distributed-systems/) - [docker](https://yasint.dev/tags/docker/) - [engineering](https://yasint.dev/tags/engineering/) - [evals](https://yasint.dev/tags/evals/) - [ffmpeg](https://yasint.dev/tags/ffmpeg/) - [frontend](https://yasint.dev/tags/frontend/) - [functional-programming](https://yasint.dev/tags/functional-programming/) - [git](https://yasint.dev/tags/git/) - [go](https://yasint.dev/tags/go/) - [history](https://yasint.dev/tags/history/) - [iam](https://yasint.dev/tags/iam/) - [identity](https://yasint.dev/tags/identity/) - [interactive](https://yasint.dev/tags/interactive/) - [java](https://yasint.dev/tags/java/) - [javascript](https://yasint.dev/tags/javascript/) - [linear-algebra](https://yasint.dev/tags/linear-algebra/) - [linux](https://yasint.dev/tags/linux/) - [math](https://yasint.dev/tags/math/) - [philosophy](https://yasint.dev/tags/philosophy/) - [prompts](https://yasint.dev/tags/prompts/) - [react](https://yasint.dev/tags/react/) - [regex](https://yasint.dev/tags/regex/) - [sed](https://yasint.dev/tags/sed/) - [testing](https://yasint.dev/tags/testing/) - [time](https://yasint.dev/tags/time/) - [tooling](https://yasint.dev/tags/tooling/) - [tools](https://yasint.dev/tags/tools/) - [typescript](https://yasint.dev/tags/typescript/) - [vectors](https://yasint.dev/tags/vectors/) - [workflow](https://yasint.dev/tags/workflow/) ## Writings - [How to write an eval for your agent](https://yasint.dev/write-an-eval-for-your-agent.md): Learn how to test an AI agent when it never gives you the same answer twice, using a small refund desk as an example. - [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.