馃憢 Welcome to my blog! I’m a software engineer with decade+ experience, specializing in backend and algorithms, preferably using .NET. I love creating effective, robust, and maintainable software systems.
Let’s get to know each other:
馃憢 Welcome to my blog! I’m a software engineer with decade+ experience, specializing in backend and algorithms, preferably using .NET. I love creating effective, robust, and maintainable software systems.
Let’s get to know each other:
I was always cautious with my dependencies, so on each update I reviewed the changes - supply chain attack, sudden bugs, or license changes were a thing way before LLMs. Now we can automate that using LLMs for good. Behold the skill I use. Most useful for .NET repos, you can use this as an idea for other stacks. The idea When updating packages: if it鈥檚 MS, I have no easy way to verify what code is changes, but I consider it鈥檚 safe to update. if it has known heavy breaking changes, I skip it and track in a separate task. I try to check the code. Almost every package has Github link, so I go there and see what鈥檚 new in commits for this release, I try to check to see there鈥檚 nothing malicious or if it contains something I can start using for this project. I try to check their website to see if the org or a person are still the same and not hacked. I update packages from the same source together. I.e. all Microsoft.Extensions.* or Dapper - they usually share a version and updating them separately causes linking errors. So, I made a skill that a model like Sonnet can run. It tries to do the update, run the tests and presents me a nicely formatted report. ...

Why? Because they help me implement features faster. But it wasn鈥檛 always that way. Let me show you how I went from aversion to actually enjoying tests, and why they鈥檙e so helpful now. Bad experience My first experience with tests was awful. Back in 2015, I worked on a team that had strict code coverage requirements. The workflow looked like this: They didn鈥檛 have integration tests; unit tests were mostly trivial, with tons of manually initialized mocks. ...

I will show you ways to read string data from arbitrary .NET assembly in case when you don鈥檛 have: Reflection, i.e when you operate from a trimmed or AOTed application Full set of app dependencies. This is conceptionally wrong - why do we need to load everything, when we only need raw data from a library, also, I wanted a way to read data from damaged distributions. Let鈥檚 imagine we have an assembly, where we have this code: ...

I have a Windows desktop application that I distribute using MSIX packages, making them easily installable and automatically updated on modern Windows machines. To create such a package, the most straightforward method is to use the Windows Application Packaging (WAP) project, although it does have its quirks. Additionally, I have a utility project that doesn鈥檛 require access to Windows APIs but needs to support trimming and be as compact as possible. As a result, I ended up with this dependency graph and the following MSB6006 error: ...

Recently, I came across a one-year-old Youtube tutorial, that showed how to run ChatGPT on my own data in ~15 minutes. That sparked my interest, I thought - what if I fed ChatGPT with my codebase, so it could respond to queries like: Where in the code is the order total compared to what鈥檚 returned by the vendor? And it would show me code fragments with class names (I鈥檓 in C#). Or: ...