Blog
Mert Özen's blog posts on software development, backend, frontend, and DevOps.
Writing Snippets and Live Templates: Your Own C# and Angular Shortcuts in VS Code, Visual Studio and Rider
A snippet is the right tool for the small skeletons the language's syntax makes you type every time, not for repeated logic. We show VS Code snippets for Bookstore's xUnit v3 test, minimal API endpoint group, EF Core configuration and Angular 22 component, a transform that derives the namespace from the file path, the Visual Studio .snippet and Rider live template equivalents, and the .gitignore line that silently ignores the snippet file.
Your Own Project Template: a Bookstore Template with dotnet new and a Short Look at Angular Schematics
A dotnet new template is an ordinary .NET solution with a .template.config/template.json file; with sourceName, parameters and conditional content it generates a new Bookstore service in one command. With real output we cover packing the template, installing it from a local feed, the port generator, the .dockerignore lost without NoDefaultExcludes, a diff showing that the 1.1.0 update leaves old projects unchanged, and a custom Angular schematic.
Collecting Project Commands in One Place: justfile, Makefile, npm scripts, dotnet tools and C# File-based Apps
Collect project commands in a justfile in the repo instead of the README, and make CI call the same recipes. With real output we show Bookstore's justfile (parameters, .env, starting the API and Angular together with [parallel], PowerShell on Windows), a comparison with Makefiles and npm scripts, the local .NET tool manifest, dnx's -- pitfall, and a seed tool written as a .NET 10 file-based app.
Dotfiles: Keeping Your Settings in Git, Syncing with chezmoi or Stow and Not Leaking Secrets
There are three ways to keep dotfiles in Git: a bare repo, GNU Stow and chezmoi; with several operating systems and secrets, chezmoi leaves the least manual work. We try all three in a fake home folder: the add -A trap in a bare repo, Stow folding the .config folder and --adopt overwriting the repo, templates and .chezmoiignore in chezmoi, previewing Windows output with --override-data, age encryption and a made-up token gitleaks didn't catch.
Setting Up a New Machine with One Command: Brewfile, WinGet Configuration, Runtime Versions with mise and Bootstrapping
The way to set up a new machine with one command is to split the job into layers: a Brewfile or WinGet Configuration installs machine tools, mise pins project versions with global.json and mise.toml, chezmoi applies dotfiles and just setup prepares the project. We show Bookstore's rerunnable bootstrap scripts, schema validation of the WinGet file, mise's trust question and mise exec installing missing tools by itself.