1// get the ninja-keys element 2const ninja = document.querySelector('ninja-keys'); 3 4// add the home and posts menu items 5ninja.data = [{ 6 id: "nav-about", 7 title: "About", 8 section: "Navigation", 9 handler: () => { 10 window.location.href = "/"; 11 }, 12 },{id: "nav-blog", 13 title: "Blog", 14 description: "", 15 section: "Navigation", 16 handler: () => { 17 window.location.href = "/blog/"; 18 }, 19 },{id: "nav-papers", 20 title: "Papers", 21 description: "", 22 section: "Navigation", 23 handler: () => { 24 window.location.href = "/papers/"; 25 }, 26 },{id: "post-continued-investments-in-price-performance-and-faster-top-k-queries", 27 28 title: 'Continued Investments in Price Performance and Faster Top-K Queries <svg width="1.2rem" height="1.2rem" top=".5rem" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg"><path d="M17 13.5v6H5v-12h6m3-3h6v6m0-6-9 9" class="icon_svg-stroke" stroke="#999" stroke-width="1.5" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg>', 29 30 description: "Performance optimizations of `ORDER BY ... LIMIT k`, also known as Top-K queries in SQL, in the Snowflake Data Warehouse. Joint work with Juliane Waack. Part 2.", 31 section: "Posts", 32 handler: () => { 33 34 window.open("https://www.snowflake.com/en/blog/continued-investments-in-price-performance-and-faster-top-k-queries/", "_blank"); 35 36 }, 37 },{id: "post-speeding-up-top-k-queries-in-snowflake", 38 39 title: 'Speeding up Top-K Queries in Snowflake <svg width="1.2rem" height="1.2rem" top=".5rem" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg"><path d="M17 13.5v6H5v-12h6m3-3h6v6m0-6-9 9" class="icon_svg-stroke" stroke="#999" stroke-width="1.5" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg>', 40 41 description: "Performance optimizations of `ORDER BY ... LIMIT k`, also known as Top-K queries in SQL, in the Snowflake Data Warehouse. Joint work with Juliane Waack.", 42 section: "Posts", 43 handler: () => { 44 45 window.open("https://www.snowflake.com/blog/super-fast-top-k-queries/", "_blank"); 46 47 }, 48 },{id: "post-my-journey-to-becoming-a-tikv-contributor", 49 50 title: 'My Journey to Becoming a TiKV Contributor <svg width="1.2rem" height="1.2rem" top=".5rem" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg"><path d="M17 13.5v6H5v-12h6m3-3h6v6m0-6-9 9" class="icon_svg-stroke" stroke="#999" stroke-width="1.5" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg>', 51 52 description: "I had the pleasure the work on TiKV, a distributed key-value store in Rust that serves as a storage engine for TiDB, as an LFX Program Mentee in 2021. The goal was to implement a "pluggable" coprocessor, similar to HBase's coprocessor, where users can leverage the computational power of storage nodes and directory execute arbitrary computation on them.", 53 section: "Posts", 54 handler: () => { 55 56 window.open("https://www.cncf.io/blog/2021/07/26/mentorship-spotlight-looking-back-at-the-lfx-mentorship-program-spring-21-my-journey-to-becoming-a-tikv-contributor/?hss_channel=tw-3286770860", "_blank"); 57 58 }, 59 },{id: "post-automatic-flamegraphs-for-benchmarks-in-rust", 60 61 title: "Automatic Flamegraphs for Benchmarks in Rust", 62 63 description: "Automatically generate performance flamegraphs for Rust benchmarks with Criterion using pprof and in-process profiling hooks.", 64 section: "Posts", 65 handler: () => { 66 67 window.location.href = "/posts/criterion-flamegraphs.html"; 68 69 }, 70 },{id: "post-header-only-self-registering-classes-for-factories-in-c", 71 72 title: "Header-Only Self-Registering Classes for Factories in C++", 73 74 description: "Sometimes, especially with the factory pattern, you want your derived classes to register automatically to a factory class. However, I found this harder than expected!
74Especially if you want it to be header only. Here is a quick walk-through of how this can be done.", 75 section: "Posts", 76 handler: () => { 77 78 window.location.href = "/posts/cpp-header-only-self-registering-types.html"; 79 80 }, 81 },{id: "post-add-rapidjson-with-cmake", 82 83 title: "Add RapidJSON with CMake", 84 85 description: "RapidJSON is a nice C++ library for parsing JSON files. If you use CMake, we can automatically download it as a dependency for your project.", 86 section: "Posts", 87 handler: () => { 88 89 window.location.href = "/posts/rapidjson-cmake.html"; 90 91 }, 92 },{id: "post-creating-portable-native-applications-with-net-mono", 93 94 title: "Creating portable native applications with .Net Mono", 95 96 description: "While .Net projects usually require a runtime environment, the Mono project allows us to compile a program to native code with all dependencies included. In this blog post, we will explore how to do this.", 97 section: "Posts", 98 handler: () => { 99 100 window.location.href = "/posts/portable-native-mono-applications.html"; 101 102 }, 103 },{id: "books-the-godfather", 104 title: 'The Godfather', 105 description: "", 106 section: "Books",handler: () => { 107 window.location.href = "/books/the_godfather/"; 108 },},{id: "news-a-simple-inline-announcement", 109 title: 'A simple inline announcement.', 110 description: "", 111 section: "News",},{id: "news-a-long-announcement-with-details", 112 title: 'A long announcement with details', 113 description: "", 114 section: "News",handler: () => { 115 window.location.href = "/news/announcement_2/"; 116 },},{id: "news-a-simple-inline-announcement-with-markdown-emoji-sparkles-smile", 117 title: 'A simple inline announcement with Markdown emoji! :sparkles: :smile:', 118 description: "", 119 section: "News",},{ 120 id: 'social-bluesky', 121 title: 'Bluesky', 122 section: 'Socials', 123 handler: () => { 124 window.open("https://bsky.app/profile/andizimmerer.bsky.social", "_blank"); 125 }, 126 },{ 127 id: 'social-github', 128 title: 'GitHub', 129 section: 'Socials', 130 handler: () => { 131 window.open("https://github.com/https://github.com/andizimmerer", "_blank"); 132 }, 133 },{ 134 id: 'social-linkedin', 135 title: 'LinkedIn', 136 section: 'Socials', 137 handler: () => { 138 window.open("https://www.linkedin.com/in/https://www.linkedin.com/in/andi-zimmerer/", "_blank"); 139 }, 140 },{ 141 id: 'social-rss', 142 title: 'RSS Feed', 143 section: 'Socials', 144 handler: () => { 145 window.open("/feed.xml", "_blank"); 146 }, 147 },{ 148 id: 'light-theme', 149 title: 'Change theme to light', 150 description: 'Change the theme of the site to Light', 151 section: 'Theme', 152 handler: () => { 153 setThemeSetting("light"); 154 }, 155 }, 156 { 157 id: 'dark-theme', 158 title: 'Change theme to dark', 159 description: 'Change the theme of the site to Dark', 160 section: 'Theme', 161 handler: () => { 162 setThemeSetting("dark"); 163 }, 164 }, 165 { 166 id: 'system-theme', 167 title: 'Use system default theme', 168 description: 'Change the theme of the site to System Default', 169 section: 'Theme', 170 handler: () => { 171 setThemeSetting("system"); 172 }, 173 },];
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.