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-curricula", 13 title: "curricula", 14 description: "I design learning activities that address the intersection of artificial intelligence and ethics. The lessons are designed to be hands-on and relevant to students' everyday lives. Most of the curricula is available free and open-source.", 15 section: "Navigation", 16 handler: () => { 17 window.location.href = "/curricula/"; 18 }, 19 },{id: "nav-publications", 20 title: "publications", 21 description: "publications by categories in reversed chronological order.", 22 section: "Navigation", 23 handler: () => { 24 window.location.href = "/publications/"; 25 }, 26 },{id: "nav-cv", 27 title: "cv", 28 description: "", 29 section: "Navigation", 30 handler: () => { 31 window.location.href = "/cv/"; 32 }, 33 },{id: "post-a-post-with-plotly-js", 34 35 title: "a post with plotly.js", 36 37 description: "this is what included plotly.js code could look like", 38 section: "Posts", 39 handler: () => { 40 41 window.location.href = "/blog/2025/plotly/"; 42 43 }, 44 },{id: "post-a-post-with-image-galleries", 45 46 title: "a post with image galleries", 47 48 description: "this is what included image galleries could look like", 49 section: "Posts", 50 handler: () => { 51 52 window.location.href = "/blog/2024/photo-gallery/"; 53 54 }, 55 },{id: "post-google-gemini-updates-flash-1-5-gemma-2-and-project-astra", 56 57 title: 'Google Gemini updates: Flash 1.5, Gemma 2 and Project Astra <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>', 58 59 description: "Weâre sharing updates across our Gemini family of models and a glimpse of Project Astra, our vision for the future of AI assistants.", 60 section: "Posts", 61 handler: () => { 62 63 window.open("https://blog.google/technology/ai/google-gemini-update-flash-ai-assistant-io-2024/", "_blank"); 64 65 }, 66 },{id: "post-a-post-with-tabs", 67 68 title: "a post with tabs", 69 70 description: "this is what included tabs in a post could look like", 71 section: "Posts", 72 handler: () => { 73 74 window.location.href = "/blog/2024/tabs/"; 75 76 }, 77 },{id: "post-a-post-with-typograms", 78 79 title: "a post with typograms", 80 81 description: "this is what included typograms code could look like", 82 section: "Posts", 83 handler: () => { 84 85 window.location.href = "/blog/2024/typograms/"; 86 87 }, 88 },{id: "post-a-post-that-can-be-cited", 89 90 title: "a post that can be cited", 91 92 description: "this is what a post that can be cited looks like", 93 section: "Posts", 94 handler: () => { 95 96 window.location.href = "/blog/2024/post-citation/"; 97 98 }, 99 },{id: "post-a-post-with-pseudo-code", 100 101 title: "a post with pseudo code", 102 103 description: "this is what included pseudo code could look like", 104 section: "Posts", 105 handler: () => { 106 107 window.location.href = "/blog/2024/pseudocode/"; 108 109 }, 110 },{id: "post-a-post-with-code-diff", 111 112 title: "a post with code diff", 113 114 description: "this is how you can display code diffs", 115 section: "Posts", 116 handler: () => { 117 118 window.location.href = "/blog/2024/code-diff/"; 119 120 }, 121 },{id: "post-a-post-with-advanced-image-components", 122 123 title: "a post with advanced image components", 124 125 description: "this is what advanced image components could look like", 126 section: "Posts", 127 handler: () => { 128 129 window.location.href = "/blog/2024/advanced-images/"; 130 131 }, 132 },{id: "post-a-post-with-vega-lite", 133 134 title: "a post with vega lite", 135 136 description: "this is what included vega lite code could look like", 137 section: "Posts", 138 handler: () => { 139 140 window.location.href = "/blog/2024/vega-lite/"; 141 142 }, 143 },{id: "post-a-post-with-geojson", 144 145 title: "a post with geojson", 146 147 description: "this is what included geojson code could look like", 148 section: "Posts", 149 handler: () => { 150
151 window.location.href = "/blog/2024/geojson-map/"; 152 153 }, 154 },{id: "post-a-post-with-echarts", 155 156 title: "a post with echarts", 157 158 description: "this is what included echarts code could look like", 159 section: "Posts", 160 handler: () => { 161 162 window.location.href = "/blog/2024/echarts/"; 163 164 }, 165 },{id: "post-a-post-with-chart-js", 166 167 title: "a post with chart.js", 168 169 description: "this is what included chart.js code could look like", 170 section: "Posts", 171 handler: () => { 172 173 window.location.href = "/blog/2024/chartjs/"; 174 175 }, 176 },{id: "post-a-post-with-tikzjax", 177 178 title: "a post with TikZJax", 179 180 description: "this is what included TikZ code could look like", 181 section: "Posts", 182 handler: () => { 183 184 window.location.href = "/blog/2023/tikzjax/"; 185 186 }, 187 },{id: "post-a-post-with-bibliography", 188 189 title: "a post with bibliography", 190 191 description: "an example of a blog post with bibliography", 192 section: "Posts", 193 handler: () => { 194 195 window.location.href = "/blog/2023/post-bibliography/"; 196 197 }, 198 },{id: "post-a-post-with-jupyter-notebook", 199 200 title: "a post with jupyter notebook", 201 202 description: "an example of a blog post with jupyter notebook", 203 section: "Posts", 204 handler: () => { 205 206 window.location.href = "/blog/2023/jupyter-notebook/"; 207 208 }, 209 },{id: "post-a-post-with-custom-blockquotes", 210 211 title: "a post with custom blockquotes", 212 213 description: "an example of a blog post with custom blockquotes", 214 section: "Posts", 215 handler: () => { 216 217 window.location.href = "/blog/2023/custom-blockquotes/"; 218 219 }, 220 },{id: "post-a-post-with-table-of-contents-on-a-sidebar", 221 222 title: "a post with table of contents on a sidebar", 223 224 description: "an example of a blog post with table of contents on a sidebar", 225 section: "Posts", 226 handler: () => { 227 228 window.location.href = "/blog/2023/sidebar-table-of-contents/"; 229 230 }, 231 },{id: "post-a-post-with-audios", 232 233 title: "a post with audios", 234 235 description: "this is what included audios could look like", 236 section: "Posts", 237 handler: () => { 238 239 window.location.href = "/blog/2023/audios/"; 240 241 }, 242 },{id: "post-a-post-with-videos", 243 244 title: "a post with videos", 245 246 description: "this is what included videos could look like", 247 section: "Posts", 248 handler: () => { 249 250 window.location.href = "/blog/2023/videos/"; 251 252 }, 253 },{id: "post-displaying-beautiful-tables-with-bootstrap-tables", 254 255 title: "displaying beautiful tables with Bootstrap Tables", 256 257 description: "an example of how to use Bootstrap Tables", 258 section: "Posts", 259 handler: () => { 260 261 window.location.href = "/blog/2023/tables/"; 262 263 }, 264 },{id: "post-a-post-with-table-of-contents", 265 266 title: "a post with table of contents", 267 268 description: "an example of a blog post with table of contents", 269 section: "Posts", 270 handler: () => { 271 272 window.location.href = "/blog/2023/table-of-contents/"; 273 274 }, 275 },{id: "post-a-post-with-giscus-comments", 276 277 title: "a post with giscus comments", 278 279 description: "an example of a blog post with giscus comments", 280 section: "Posts", 281 handler: () => { 282 283 window.location.href = "/blog/2022/giscus-comments/"; 284 285 }, 286 },{id: "post-displaying-external-posts-on-your-al-folio-blog", 287 288 title: 'Displaying External Posts on Your al-folio Blog <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>', 289 290 description: "", 291 section: "Posts", 292 handler: () => { 293 294 window.open("https://medium.com/@al-folio/displaying-external-posts-on-your-al-folio-blog-b60a1d241a0a?source=rss-17feae71c3c4------2", "_blank"); 295 296 }, 297 },{id: "post-a-post-with-redirect", 298 299 title: "a post with redirect", 300 301 description: "you can also redirect to assets like pdf", 302 section: "Posts", 303 handler: () => { 304 305 window.location.href = "/assets/pdf/example_pdf.pdf"; 306 307 }, 308 },{id: "post-a-post-with-diagrams", 309 310 title: "a post with diagrams", 311 312 description: "an example of a blog post with diagrams", 313 section: "Posts", 314 handler: () => { 315 316 window.location.href = "/blog/2021/diagrams/"; 317 318 }, 319 },{id: "post-a-distill-style-blog-post", 320 321 title: "a distill-style blog post", 322 323 description: "an example of a distill-style blog post and main elements", 324 section: "Posts", 325 handler: () => { 326 327 window.location.href = "/blog/2021/distill/"; 328 329 }, 330 },{id: "post-a-post-with-twitter", 331 332 title: "a post with twitter", 333 334 description: "an example of a blog post with twitter", 335 section: "Posts", 336 handler: () => { 337 338 window.location.href = "/blog/2020/twitter/"; 339 340 }, 341 },{id: "post-a-post-with-disqus-comments", 342 343 title: "a post with disqus comments", 344 345 description: "an example of a blog post with disqus comments", 346 section: "Posts", 347 handler: () => { 348 349 window.location.href = "/blog/2015/disqus-comments/"; 350 351 }, 352 },{id: "post-a-post-with-math", 353 354 title: "a post with math", 355 356 description: "an example of a blog post with some math", 357 section: "Posts", 358 handler: () => { 359 360 window.location.href = "/blog/2015/math/"; 361 362 }, 363 },{id: "post-a-post-with-code", 364 365 title: "a post with code", 366 367 description: "an example of a blog post with some code", 368 section: "Posts", 369 handler: () => { 370 371 window.location.href = "/blog/2015/code/"; 372 373 }, 374 },{id: "post-a-post-with-images", 375 376 title: "a post with images", 377 378 description: "this is what included images could look like", 379 section: "Posts", 380 handler: () => { 381 382 window.location.href = "/blog/2015/images/"; 383 384 }, 385 },{id: "post-a-post-with-formatting-and-links", 386 387 title: "a post with formatting and links", 388 389 description: "march & april, looking forward to summer", 390 section: "Posts", 391 handler: () => { 392 393 window.location.href = "/blog/2015/formatting-and-links/"; 394 395 }, 396 },{id: "books-the-godfather", 397 title: 'The Godfather', 398 description: "", 399 section: "Books",handler: () => { 400 window.location.href = "/books/the_godfather/"; 401 },},{id: "news-a-simple-inline-announcement", 402 title: 'A simple inline announcement.', 403 description: "", 404 section: "News",}
404,{id: "news-a-long-announcement-with-details", 405 title: 'A long announcement with details', 406 description: "", 407 section: "News",handler: () => { 408 window.location.href = "/news/announcement_2/"; 409 },},{id: "news-a-simple-inline-announcement-with-markdown-emoji-sparkles-smile", 410 title: 'A simple inline announcement with Markdown emoji! :sparkles: :smile:', 411 description: "", 412 section: "News",},{id: "projects-project-7", 413 title: 'project 7', 414 description: "with background image", 415 section: "Projects",handler: () => { 416 window.location.href = "/projects/7_project/"; 417 },},{id: "projects-project-8", 418 title: 'project 8', 419 description: "an other project with a background image and giscus comments", 420 section: "Projects",handler: () => { 421 window.location.href = "/projects/8_project/"; 422 },},{id: "projects-project-9", 423 title: 'project 9', 424 description: "another project with an image ð", 425 section: "Projects",handler: () => { 426 window.location.href = "/projects/9_project/"; 427 },},{id: "projects-chatgpt-in-schools", 428 title: 'ChatGPT in Schools', 429 description: "a short curriculum to introduce students to LLMs including how they work and how to think about their appropriate use", 430 section: "Projects",handler: () => { 431 window.location.href = "/projects/ChatGPTinSchools/"; 432 },},{id: "projects-developing-ai-literacy-daily", 433 title: 'Developing AI Literacy (DAILy)', 434 description: "a hands-on middle school curriculum to introduce students to machine learning, generative AI, and ethics", 435 section: "Projects",handler: () => { 436 window.location.href = "/projects/DAILy/"; 437 },},{id: "projects-data-privacy-for-youth", 438 title: 'Data Privacy for Youth', 439 description: "three hands-on activities about data privacy for K-9 students", 440 section: "Projects",handler: () => { 441 window.location.href = "/projects/DataPrivacyCurric/"; 442 },},{id: "projects-projectstem-cse2", 443 title: 'ProjectSTEM CSE2', 444 description: "a 12-week middle-school course about AI", 445 section: "Projects",handler: () => { 446 window.location.href = "/projects/ProjectSTEM/"; 447 },},{id: "projects-introduction-to-social-robotics", 448 title: 'Introduction to Social Robotics', 449 description: "six middle school lessons on topics about social robots and ethics of robots", 450 section: "Projects",handler: () => { 451 window.location.href = "/projects/SocialRobotCurric/"; 452 },},{id: "projects-student-voices-in-ai", 453 title: 'Student Voices in AI', 454 description: "an extracurricular club for middle and high school students to design AI policy in their schools", 455 section: "Projects",handler: () => { 456 window.location.href = "/projects/studentvoices/"; 457 },},{ 458 id: 'social-email', 459 title: 'email', 460 section: 'Socials', 461 handler: () => { 462 window.open("mailto:%64%69%70%61%6F%6C%61@%6D%69%74.%65%64%75", "_blank"); 463 }, 464 },{ 465 id: 'social-linkedin', 466 title: 'LinkedIn', 467 section: 'Socials', 468 handler: () => { 469 window.open("https://www.linkedin.com/in/danielladipaola", "_blank"); 470 }, 471 },{ 472 id: 'social-scholar', 473 title: 'Google Scholar', 474 section: 'Socials', 475 handler: () => { 476 window.open("https://scholar.google.com/citations?user=qvpSQS8AAAAJ", "_blank"); 477 }, 478 },{ 479 id: 'social-media_lab', 480 title: 'Media_lab', 481 section: 'Socials', 482 handler: () => { 483 window.open("https://www.media.mit.edu/people/dipaola/overview/", "_blank"); 484 }, 485 },{ 486 id: 'light-theme', 487 title: 'Change theme to light', 488 description: 'Change the theme of the site to Light', 489 section: 'Theme', 490 handler: () => { 491 setThemeSetting("light"); 492 }, 493 }, 494 {
495 id: 'dark-theme', 496 title: 'Change theme to dark', 497 description: 'Change the theme of the site to Dark', 498 section: 'Theme', 499 handler: () => { 500 setThemeSetting("dark"); 501 }, 502 }, 503 { 504 id: 'system-theme', 505 title: 'Use system default theme', 506 description: 'Change the theme of the site to System Default', 507 section: 'Theme', 508 handler: () => { 509 setThemeSetting("system"); 510 }, 511 },];
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.