{"@attributes":{"version":"2.0"},"channel":{"title":"Posts on","link":"https:\/\/cristiandonosoc.github.io\/en\/posts\/","description":"Recent content in Posts on","generator":"Hugo -- gohugo.io","language":"en","lastBuildDate":"Wed, 17 Sep 2025 20:12:58 -0400","item":[{"title":"X Macros","link":"https:\/\/cristiandonosoc.github.io\/en\/posts\/cpp\/x_macros\/","pubDate":"Wed, 17 Sep 2025 20:12:58 -0400","guid":"https:\/\/cristiandonosoc.github.io\/en\/posts\/cpp\/x_macros\/","description":"When watching the interview to Billy Basso (Animal Well) on the Wookash Podcast , he mentioned that he relied a lot of X macros to generate code for his project. That got me interested and led to discover a pattern to which I&rsquo;ve come to rely a lot in my latest personal coding. I&rsquo;m happy with the results for now, but with the caveat that I&rsquo;ve used it on a small (but non trivial) personal project in which I&rsquo;m the sole programmer for now.","content":{"@attributes":{"type":"html"}}},{"title":"Easy Stack Traces on Windows","link":"https:\/\/cristiandonosoc.github.io\/en\/posts\/windows\/easy_backtraces_on_windows\/","pubDate":"Sun, 30 Mar 2025 20:03:52 -0400","guid":"https:\/\/cristiandonosoc.github.io\/en\/posts\/windows\/easy_backtraces_on_windows\/","description":"When I work on C++, I tend to use assert a lot. But the default output of c assert (at least using MSVC, but pretty sure other compilers as well) is fairly simplistic:\nAssertion failed: strlen(some_path) &gt; 0, file C:\\users\\crist\\_bazel_crist\\3l4axkhv\\execroot\\_main\\apps\\cpp_test\\main.cpp, line 62 It gets useful information out, but we can do better. In particular, the stack trace of what called the function with this error. Since I worked on Fuchsia, I had the idea that it was a fairly involved process, likely needing to roll libunwind as a dependency and the whole shabbang.","content":{"@attributes":{"type":"html"}}},{"title":"Bazel Target Specific Options","link":"https:\/\/cristiandonosoc.github.io\/en\/posts\/bazel\/target_specific_options\/","pubDate":"Sun, 23 Feb 2025 19:42:28 -0500","guid":"https:\/\/cristiandonosoc.github.io\/en\/posts\/bazel\/target_specific_options\/","description":"I&rsquo;m currently working on a little C++ project and I&rsquo;m using Bazel as my build system. This project has a couple of libraries, some that I bring as pre-compiled libraries, others I compile from source.\nAs this project is mostly for fun, I haven&rsquo;t bothered with doing a &ldquo;real&rdquo; Bazel toolchain setup and instead have decided to do the most brain dead thing I could do to get going with Bazel.","content":{"@attributes":{"type":"html"}}},{"title":"Unexpected Copy Contructors on MSVC","link":"https:\/\/cristiandonosoc.github.io\/en\/posts\/cpp\/unexpected_copy_contructors\/","pubDate":"Sat, 23 Mar 2024 11:41:38 -0400","guid":"https:\/\/cristiandonosoc.github.io\/en\/posts\/cpp\/unexpected_copy_contructors\/","description":"This is not technically an Unreal thing, but working on Unreal is the most common way to hit this issue. It is how I found it. And I managed to find the solution to a hair-removing error because I remembered that a couple of weeks ago one of our engine programmers helped with an unrelated issue that happened to have the same root cause. But enough preamble&hellip;\nThe Setup Say you wanted an array of things that are stable in memory.","content":{"@attributes":{"type":"html"}}},{"title":"Some Neovim Setup Notes","link":"https:\/\/cristiandonosoc.github.io\/en\/posts\/neovim\/some_neovim_setup_notes\/","pubDate":"Sun, 17 Mar 2024 01:22:12 -0500","guid":"https:\/\/cristiandonosoc.github.io\/en\/posts\/neovim\/some_neovim_setup_notes\/","description":"I have been using Vim for over a decade now. Using Vim bindings is second-nature to me now and I refuse to program on an editor\/tool that does not have Vim bindings. I also get grumpy when the Vim emulation on those tools doesn&rsquo;t work quite right. For the most part they do OK with the bindings, but most fail miserably with more advanced stuff such as macros. Rider, I&rsquo;m looking at you.","content":{"@attributes":{"type":"html"}}},{"title":"Gazelle Unexpected Module Loading","link":"https:\/\/cristiandonosoc.github.io\/en\/posts\/bazel\/gazelle_unexpected_module_loading\/","pubDate":"Wed, 28 Feb 2024 20:44:38 -0500","guid":"https:\/\/cristiandonosoc.github.io\/en\/posts\/bazel\/gazelle_unexpected_module_loading\/","description":"So I was going on my merry way, Go-ing around when I wanted to some of the fancy (not so new by now) maps packages functions. In particularly I wanted something that is not hard to write, but might as well use the fanciness: https:\/\/pkg.go.dev\/golang.org\/x\/exp\/maps#Keys .\nSome of the maps stuff is already in standard library but as the time of this post, some of the functions are in the experimental x package, which is like a kitchen sync of stuff the go devs play around with before they actually add it to the standard library.","content":{"@attributes":{"type":"html"}}},{"title":"Working on multiple Go repos locally with Bazel","link":"https:\/\/cristiandonosoc.github.io\/en\/posts\/bazel\/working_on_dependent_repos_locally\/","pubDate":"Sat, 17 Feb 2024 14:59:44 -0500","guid":"https:\/\/cristiandonosoc.github.io\/en\/posts\/bazel\/working_on_dependent_repos_locally\/","description":"Some time ago I finished a relatively big (for a personal project) Go project. An interesting thing about the project is that, while it builds with the normal Go toolchain, I use Bazel since the project has a strong inter-language component: the tool is actually a code generator for state machines, currently targeting C++. So I use Bazel to create end-to-end tests that build the tool, generate C++ code, links it against gtest code and verify that everything is working dandy.","content":{"@attributes":{"type":"html"}}}]}}