2025
an archive of posts from this year
-
Trimming constructor arguments with dependency injection: MVVM and the .NET Host
How DI simplifies object creation, and how the .NET Generic Host keeps the ever-growing constructors of MVVM view models short.
-
Pydantic with llm.with_structured_output — pitfalls and safeguards
Combining Pydantic models with LangChain's with_structured_output cleanly — avoiding prompt collisions, validation errors, and runaway evaluation loops.
-
Running a local LLM with llama.cpp: build, download, serve, benchmark
A minimal llama.cpp workflow for running GGUF models on your own machine — from the cmake build to an OpenAI-compatible server and llama-bench.
-
TMUX
breif introduction to tmux
-
SOLID
breif introduction to SOLID principles
-
gitattributes
How to define per-file attributes in Git
-
Span and Memory in C# 7.2+
Span
and Memory in C# 7.2 and later -
Python's `contextmanager`
Temporarily Tweaking an Object (and Putting It Back)
-
Python's `breakpoint()`
Meet `breakpoint()`: Your Built‑In Debug Superpower in Modern Python
-
Linux 'awk'
-
Linux 'grep'
-
Linux 'watch'
Real-Time Monitoring with `watch` (feat. `grep`)
-
Ubuntu NetPlan
Ubuntu NetPlan configuration for IP address setup
-
Publishing a Package to PyPI
Publishing a Python package to PyPI
-
Powerful, and Thorough Unit Tests with pytest
A practical guide for writing clean, maintainable, and effective unit tests in Python using the pytest framework.
-
classmethod vs staticmethod in Python
Compare classmethod and staticmethod in Python with examples.
-
How to teach your embedding model new words
A step-by-step guide on adding new vocabulary to a Hugging Face sentence-transformer model, including fine-tuning and using it in LangChain.
-
Four perspectives on matrix multiplication
The four different perspectives of matrix multiplication.