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-publications", 13 title: "publications", 14 description: "featured publications in reverse chronological order", 15 section: "Navigation", 16 handler: () => { 17 window.location.href = "/publications/"; 18 }, 19 },{id: "nav-projects", 20 title: "projects", 21 description: "stuff mature enough to live on its own", 22 section: "Navigation", 23 handler: () => { 24 window.location.href = "/projects/"; 25 }, 26 },{id: "nav-teaching", 27 title: "teaching", 28 description: "materials for courses I am currently teaching", 29 section: "Navigation", 30 handler: () => { 31 window.location.href = "/teaching/"; 32 }, 33 },{id: "nav-repositories", 34 title: "repositories", 35 description: "for a full list of my public repositories, please refer to my GitHub profile below", 36 section: "Navigation", 37 handler: () => { 38 window.location.href = "/repositories/"; 39 }, 40 },{id: "nav-blog", 41 title: "blog", 42 description: "", 43 section: "Navigation", 44 handler: () => { 45 window.location.href = "/blog/"; 46 }, 47 },{id: "post-practical-tips-for-implementing-bio-ai-optimisers", 48 49 title: 'Practical Tips for Implementing Bio-AI Optimisers <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>', 50 51 description: "Slides from my guest lecture in TDT04 - Advanced Bio-Inspired Methods", 52 section: "Posts", 53 handler: () => { 54 55 window.open("https://docs.google.com/presentation/d/1T72YfgLh4UTD7Qda8RKrkJW2un7H2hurry7cZoUqA70/edit?usp=sharing", "_blank"); 56 57 }, 58 },{id: "post-julia-for-evolutionary-computation", 59 60 title: "Julia for Evolutionary Computation", 61 62 description: "An extensive collection of resources for those who wish to start implementing evolutionary computation solvers and algorithms in Julia.", 63 section: "Posts", 64 handler: () => { 65 66 window.location.href = "/blog/2025/julia-for-ec/"; 67 68 }, 69 },{id: "post-visualizing-multimodality-in-combinatorial-search-landscapes", 70 71 title: "Visualizing Multimodality in Combinatorial Search Landscapes", 72 73 description: "Learn about the different techniques from the landscape analysis literature, and how they can be combined to provide a more comprehensive view of the search landscape.", 74 section: "Posts", 75 handler: () => { 76 77 window.location.href = "/blog/2025/visual-landscapes/"; 78 79 }, 80 },{id: "post-benchmarking-solver-implementations-in-evolp-jl-v1-1", 81 82 title: "Benchmarking solver implementations in EvoLP.jl v1.1", 83 84 description: "Comparing against old implementations (v1.0)", 85 section: "Posts", 86 handler: () => { 87 88 window.location.href = "/blog/2023/evolp11/"; 89 90 }, 91 },{id: "post-evolp-jl", 92 93 title: "EvoLP.jl", 94 95 description: "A playground for evolutionary computation in Julia", 96 section: "Posts", 97 handler: () => { 98 99 window.location.href = "/blog/2023/EvoLP/"; 100 101 }, 102 },{id: "post-basic-machine-learning-in-julia-with-mlj", 103 104 title: "Basic Machine Learning in Julia with MLJ", 105 106 description: "A descriptive tutorial on the basics of ML with Julia", 107 section: "Posts", 108 handler: () => { 109 110 window.location.href = "/blog/2022/mlj/"; 111 112 }, 113 },{id: "post-on-smart-pointers-and-memory-management", 114 115 title: "On Smart Pointers and Memory Management", 116 117 description: "How modern is 'modern'?", 118 section: "Posts", 119 handler: () => { 120 121 window.location.href = "/blog/2020/smart-pointers/"; 122 123 }, 124 },{id: "post-matrix-multiplication-as-a-linear-combination-of-columns", 125 126 title: "Matrix multiplication as a linear combination of columns", 127 128 description: "Scaling and concatenation is way easier than using iterators", 129 section: "Posts", 130 handler: () => { 131 132 window.location.href = "/blog/2020/m_multiply/"; 133 134 }, 135 },{id: "post-the-chaotic-nature-of-standard-systems", 136 137 title: "The chaotic nature of standard systems", 138 139 description: "Standardisation is impossible", 140 section: "Posts", 141 handler: () => { 142 143 window.location.href = "/blog/2019/standards/"; 144 145 }, 146 },{id: "post-what-is-a-function", 147 148 title: "What is a function?", 149 150 description: "from maths to code", 151 section: "Posts", 152 handler: () => { 153 154 window.location.href = "/blog/2017/function/"; 155 156 }, 157 },{id: "books-the-godfather", 158 title: 'The Godfather', 159 description: "", 160 section: "Books",handler: () => { 161 window.location.href = "/books/the_godfather/"; 162 },},{id: "news-migrating-to-a-new-template-expect-a-bit-of-a-mess-grimacing", 163 title: 'Migrating to a new template. Expect a bit of a mess :grimacing:', 164 description: "", 165 section: "News",},{id: "news-old-blog-posts-migrated-still-lots-of-work-to-do", 166 title: 'Old blog posts migrated. Still lots of work to do!', 167 description: "", 168 section: "News",},{id: "news-projects-have-now-been-migrated", 169 title: 'Projects have now been migrated.', 170 description: "", 171 section: "News",},{id: "news-new-tdt4136-ai-intro-ntnu-course-page-is-up", 172 title: 'New TDT4136 - AI Intro @ NTNU course page is up.', 173 description: "", 174 section: "News",},{id: "news-my-master-thesis-is-now-available-in-publications-since-i-cannot-find-it-anywhere-on-the-internet", 175 title: 'My master thesis is now available in publications, since I cannot find it...', 176 description: "", 177 section: "News",},{id: "news-new-project-blog-post-about-using-julia-for-evolutionary-computation", 178 title: 'New project/blog post about using Julia for Evolutionary Computation.', 179 description: "", 180 section: "News",},{id: "news-i-presented-a-poster-at-norwai-innovate-2025-the-poster-is-available-here", 181 title: 'I presented a poster at NorwAI Innovate 2025. The poster is available here....', 182 description: "", 183 section: "News",},{id: "news-i-held-a-guest-lecture-at-tdt04-advanced-bio-ai-methods-sli
183des-are-available-here", 184 title: 'I held a guest lecture at TDT04âAdvanced Bio-AI Methods. Slides are available here....', 185 description: "", 186 section: "News",},{id: "news-evolp-jl-v2-0-is-out-now-with-support-for-island-eas-and-can-be-used-in-hpc-systems", 187 title: 'EvoLP.jl v2.0 is out now, with support for island EAs and can be...', 188 description: "", 189 section: "News",},{id: "news-the-slides-for-my-trial-lecture-and-phd-defence-are-now-available-the-dissertation-is-also-available", 190 title: 'The slides for my trial lecture and PhD defence are now available. The...', 191 description: "", 192 section: "News",},{id: "projects-evolp-jl-amp-mdash-a-playground-for-evolutionary-computation-in-julia", 193 title: 'EvoLP.jl&amp;mdash;a playground for evolutionary computation in Julia.', 194 description: "This package provides a set of predefined building blocks that can be coupled together to quickly generate evolutionary computation solvers and compute statistics for a variety of optimisation tasks, including discrete, continuous and combinatorial optimisation.", 195 section: "Projects",handler: () => { 196 window.location.href = "/projects/EvoLP.jl/"; 197 },},{id: "projects-very-basics-of-git-for-the-non-programmer", 198 title: 'Very basics of Git for the non-programmer', 199 description: "A very brief and visual introduction to the Git methodology, from a more academic point of view. Highly recommended to understand how Git works and how it could help in both your personal or collaborative projects.", 200 section: "Projects",handler: () => { 201 window.location.href = "/projects/intro-git/"; 202 },},{id: "projects-julia-for-evolutionary-computation", 203 title: 'Julia for Evolutionary Computation', 204 description: "An extensive collection of resources for those who wish to start implementing evolutionary computation solvers and algorithms in Julia.", 205 section: "Projects",handler: () => { 206 window.location.href = "/projects/julia-for-ec/"; 207 },},{id: "projects-mathjax-viewer", 208 title: 'MathJax Viewer', 209 description: "A simple webpage to typeset equations in LaTeX using MathJax. Useful to practise and learn common LaTeX commands and symbols, as you can see both results and the commands side by side.", 210 section: "Projects",handler: () => { 211 window.location.href = "/projects/mathjaxviewer/"; 212 },},{id: "projects-visualizing-multimodality-in-combinatorial-search-landscapes", 213 title: 'Visualizing Multimodality in Combinatorial Search Landscapes', 214 description: "Learn about the different techniques from the landscape analysis literature, and how they can be combined to provide a more comprehensive view of the search landscape.", 215 section: "Projects",handler: () => { 216 window.location.href = "/projects/visual-landscapes/"; 217 },},{id: "teaching-tdt4136-introduction-to-artificial-intelligence", 218 title: 'TDT4136 - Introduction to Artificial Intelligence', 219 description: "Third-year course on classical AI from the Department of Computer Science at NTNU.", 220 section: "Teaching",handler: () => { 221 window.location.href = "/teaching/tdt4136/"; 222 },},{ 223 id: 'social-github', 224 title: 'GitHub', 225 section: 'Socials', 226 handler: () => { 227 window.open("https://github.com/saxarona", "_blank"); 228 }, 229 },{ 230 id: 'social-mastodon', 231 title: 'Mastodon', 232 section: 'Socials', 233 handler: () => { 234 window.open("https://mathstodon.xyz/@saxarona", "_blank"); 235 }, 236 },{ 237 id: 'social-rss', 238 title: 'RSS Feed', 239 section: 'Socials', 240 handler: () => { 241 window.open("/feed.xml", "_blank"); 242 }, 243 },{ 244 id: 'social-scholar', 245 title: 'Google Scholar', 246 section: 'Socials', 247 handler: () => { 248 window.open("https://scholar.google.com/citations?user=KdoGIKcAAAAJ", "_blank"); 249 }, 250 },{ 251 id: 'social-x', 252 title: 'X', 253 section: 'Socials', 254 handler: () => { 255 window.open("https://twitter.com/saxarona", "_blank"); 256 }, 257 },{ 258 id: 'light-theme', 259 title: 'Change theme to light', 260 description: 'Change the theme of the site to Light', 261 section: 'Theme', 262 handler: () => { 263 setThemeSetting("light"); 264 }, 265 }, 266 {
267 id: 'dark-theme', 268 title: 'Change theme to dark', 269 description: 'Change the theme of the site to Dark', 270 section: 'Theme', 271 handler: () => { 272 setThemeSetting("dark"); 273 }, 274 }, 275 { 276 id: 'system-theme', 277 title: 'Use system default theme', 278 description: 'Change the theme of the site to System Default', 279 section: 'Theme', 280 handler: () => { 281 setThemeSetting("system"); 282 }, 283 },];
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.