{"id":446,"date":"2025-07-25T21:53:40","date_gmt":"2025-07-25T19:53:40","guid":{"rendered":"https:\/\/www.familie-kleinman.nl\/brain\/?p=446"},"modified":"2025-07-25T22:14:24","modified_gmt":"2025-07-25T20:14:24","slug":"optimization-part-2","status":"publish","type":"post","link":"https:\/\/www.familie-kleinman.nl\/brain\/index.php\/2025\/07\/25\/optimization-part-2\/","title":{"rendered":"Optimization part #2"},"content":{"rendered":"<p data-start=\"329\" data-end=\"440\">As you might (or might not) know, I\u2019m the author of a tool called jSunnyReports.<\/p>\n<p data-start=\"329\" data-end=\"440\">It&#8217;s a fairly dumb tool. It:<\/p>\n<ul>\n<li data-start=\"444\" data-end=\"463\">Loads cache files<\/li>\n<li data-start=\"444\" data-end=\"463\">Reads new and changed inverterdata<\/li>\n<li data-start=\"444\" data-end=\"463\">Parses everything<\/li>\n<li data-start=\"444\" data-end=\"463\">Writes JSON<\/li>\n<li data-start=\"444\" data-end=\"463\">Writes HTML<\/li>\n<li data-start=\"444\" data-end=\"463\">Saves the cache<\/li>\n<\/ul>\n<p data-start=\"444\" data-end=\"463\">\u2026and that\u2019s it.<\/p>\n<p data-start=\"444\" data-end=\"463\">It\u2019s not elegant. Probably not even clean code <em data-start=\"414\" data-end=\"435\">by modern standards<\/em>. But I <em data-start=\"445\" data-end=\"450\">did<\/em> spend a ridiculous amount of time on multithreading and optimization.<\/p>\n<p data-start=\"444\" data-end=\"463\">Why am I telling you this?<\/p>\n<p data-start=\"444\" data-end=\"463\">Because while trying to save my poor Intel 660p SSD from early death, I noticed something odd: <strong>JSR took 7.5 seconds <em data-start=\"872\" data-end=\"881\">per run<\/em> to do its thing.<\/strong><\/p>\n<p data-start=\"444\" data-end=\"463\">It runs every minute.<\/p>\n<p data-start=\"444\" data-end=\"463\">That\u2019s 10% CPU time \u2014 for something so simple.<\/p>\n<p data-start=\"444\" data-end=\"463\">But then I remembered: I created the VM in a \u201cconservative mood\u201d.<\/p>\n<p data-start=\"444\" data-end=\"463\">Gave it <strong data-start=\"1048\" data-end=\"1059\">2GB RAM<\/strong> and <strong data-start=\"1064\" data-end=\"1088\">just one virtual CPU<\/strong>.<\/p>\n<p data-start=\"444\" data-end=\"463\">Yes. One.<\/p>\n<p data-start=\"444\" data-end=\"463\">Spoiler: adding a second core dropped the runtime to 4.5 seconds.<\/p>\n<p data-start=\"444\" data-end=\"463\">That&#8217;s 40% faster \u2014 and nearly an <strong>hour<\/strong> of CPU time saved per day.<\/p>\n<h2 data-start=\"444\" data-end=\"463\">Network vs Ramdisk<\/h2>\n<p data-start=\"444\" data-end=\"463\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-449\" src=\"https:\/\/www.familie-kleinman.nl\/brain\/wp-content\/uploads\/2025\/07\/network.png\" alt=\"\" width=\"1002\" height=\"396\" srcset=\"https:\/\/www.familie-kleinman.nl\/brain\/wp-content\/uploads\/2025\/07\/network.png 1002w, https:\/\/www.familie-kleinman.nl\/brain\/wp-content\/uploads\/2025\/07\/network-300x119.png 300w, https:\/\/www.familie-kleinman.nl\/brain\/wp-content\/uploads\/2025\/07\/network-768x304.png 768w, https:\/\/www.familie-kleinman.nl\/brain\/wp-content\/uploads\/2025\/07\/network-850x336.png 850w\" sizes=\"auto, (max-width: 1002px) 100vw, 1002px\" \/><\/p>\n<p data-start=\"119\" data-end=\"369\">First attempt: I created a ramdrive <strong data-start=\"155\" data-end=\"172\">inside the VM<\/strong>, expecting it to reduce disk writes. Spoiler: it didn\u2019t. Turns out I had forgotten that jSunnyReports was still writing all JSON and HTML output to <code data-start=\"321\" data-end=\"338\">\/var\/www\/lumin8<\/code> \u2014 which wasn\u2019t on the ramdisk.<\/p>\n<p data-start=\"119\" data-end=\"369\">Second attempt: I moved the <code data-start=\"402\" data-end=\"408\">\/www<\/code> directory to a <strong data-start=\"424\" data-end=\"457\">ramdrive on the physical host<\/strong>, and mounted it inside the VM as an <strong data-start=\"494\" data-end=\"507\">NFS share<\/strong>. That worked. Disk writes dropped to nearly zero.<\/p>\n<p data-start=\"119\" data-end=\"369\">But&#8230; it introduced <strong data-start=\"585\" data-end=\"624\">continuous internal network traffic<\/strong>, as every file save triggered NFS communication with the host.<\/p>\n<p data-start=\"119\" data-end=\"369\"><strong data-start=\"647\" data-end=\"679\">Third attempt was the charm.<\/strong> This evening I moved everything back to a <em data-start=\"722\" data-end=\"751\">local ramdisk inside the VM<\/em>. Still zero disk writes \u2014 and now also zero network traffic.<\/p>\n<p data-start=\"119\" data-end=\"369\">Optimization complete. For now<\/p>\n<h2 data-start=\"119\" data-end=\"369\">Second CPU<\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-448\" src=\"https:\/\/www.familie-kleinman.nl\/brain\/wp-content\/uploads\/2025\/07\/cpu_usage.png\" alt=\"\" width=\"1005\" height=\"402\" srcset=\"https:\/\/www.familie-kleinman.nl\/brain\/wp-content\/uploads\/2025\/07\/cpu_usage.png 1005w, https:\/\/www.familie-kleinman.nl\/brain\/wp-content\/uploads\/2025\/07\/cpu_usage-300x120.png 300w, https:\/\/www.familie-kleinman.nl\/brain\/wp-content\/uploads\/2025\/07\/cpu_usage-768x307.png 768w, https:\/\/www.familie-kleinman.nl\/brain\/wp-content\/uploads\/2025\/07\/cpu_usage-850x340.png 850w\" sizes=\"auto, (max-width: 1005px) 100vw, 1005px\" \/><\/p>\n<p data-start=\"73\" data-end=\"358\">The load before that huge bump was the baseline with a <strong data-start=\"128\" data-end=\"150\">single virtual CPU<\/strong>.<\/p>\n<p data-start=\"73\" data-end=\"358\">The mountain in the middle? That\u2019s me forgetting a symlink \u2014 triggering a <strong data-start=\"228\" data-end=\"243\">full reload<\/strong> in jSunnyReports.<\/p>\n<p data-start=\"73\" data-end=\"358\">After fixing that, I shut down the VM, added a <strong data-start=\"311\" data-end=\"333\">second virtual CPU<\/strong>, and brought it back up.<\/p>\n<p data-start=\"360\" data-end=\"400\">Optimization complete. For now.<\/p>\n<p data-start=\"444\" data-end=\"463\">Moral of the story?<\/p>\n<p data-start=\"87\" data-end=\"423\">Even though I have more than enough CPU power, memory, and network capacity \u2014 I love these kinds of tweaks and optimizations.<\/p>\n<p data-start=\"87\" data-end=\"423\">If I can uncover this much unnecessary load on my tiny home server, imagine the computing power and electricity we could save if we all spent just a little more time optimizing our platforms and code.<\/p>\n<p data-start=\"87\" data-end=\"423\"><strong>Just because it works, doesn\u2019t mean it\u2019s efficient.<\/strong><\/p>\n<p data-start=\"444\" data-end=\"463\">And&#8230; Even dumb tools deserve good hardware. \ud83d\ude42<\/p>\n<p data-start=\"444\" data-end=\"463\">Brain out!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As you might (or might not) know, I\u2019m the author of a tool called jSunnyReports. It&#8217;s a fairly dumb tool. It: Loads cache files Reads new and changed inverterdata Parses everything Writes JSON Writes HTML Saves the cache \u2026and that\u2019s it. It\u2019s not elegant. Probably not even clean code by modern standards. But I did&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,96],"tags":[256,247,73,258],"class_list":["post-446","post","type-post","status-publish","format-standard","hentry","category-coding","category-computers","tag-optimization","tag-proxmox","tag-update","tag-virtual-cpu"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Optimization part #2 - Brain&#039;s Ramblings<\/title>\n<meta name=\"description\" content=\"&quot;Optimizing jSunnyReports: from one to two CPU cores, slashing runtime from 7.5 to 4.5 seconds per cycle. A case study in efficiency.&quot;\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.familie-kleinman.nl\/brain\/index.php\/2025\/07\/25\/optimization-part-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Optimization part #2 - Brain&#039;s Ramblings\" \/>\n<meta property=\"og:description\" content=\"&quot;Optimizing jSunnyReports: from one to two CPU cores, slashing runtime from 7.5 to 4.5 seconds per cycle. A case study in efficiency.&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.familie-kleinman.nl\/brain\/index.php\/2025\/07\/25\/optimization-part-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Brain&#039;s Ramblings\" \/>\n<meta property=\"article:published_time\" content=\"2025-07-25T19:53:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-25T20:14:24+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.familie-kleinman.nl\/brain\/wp-content\/uploads\/2025\/07\/network.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1002\" \/>\n\t<meta property=\"og:image:height\" content=\"396\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Brain\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Brain\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.familie-kleinman.nl\\\/brain\\\/index.php\\\/2025\\\/07\\\/25\\\/optimization-part-2\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.familie-kleinman.nl\\\/brain\\\/index.php\\\/2025\\\/07\\\/25\\\/optimization-part-2\\\/\"},\"author\":{\"name\":\"Brain\",\"@id\":\"https:\\\/\\\/www.familie-kleinman.nl\\\/brain\\\/#\\\/schema\\\/person\\\/24700e1628cfd605409636397a9bb6ab\"},\"headline\":\"Optimization part #2\",\"datePublished\":\"2025-07-25T19:53:40+00:00\",\"dateModified\":\"2025-07-25T20:14:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.familie-kleinman.nl\\\/brain\\\/index.php\\\/2025\\\/07\\\/25\\\/optimization-part-2\\\/\"},\"wordCount\":420,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.familie-kleinman.nl\\\/brain\\\/#\\\/schema\\\/person\\\/24700e1628cfd605409636397a9bb6ab\"},\"image\":{\"@id\":\"https:\\\/\\\/www.familie-kleinman.nl\\\/brain\\\/index.php\\\/2025\\\/07\\\/25\\\/optimization-part-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.familie-kleinman.nl\\\/brain\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/network.png\",\"keywords\":[\"optimization\",\"Proxmox\",\"Update\",\"virtual CPU\"],\"articleSection\":[\"Coding\",\"Computers\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.familie-kleinman.nl\\\/brain\\\/index.php\\\/2025\\\/07\\\/25\\\/optimization-part-2\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.familie-kleinman.nl\\\/brain\\\/index.php\\\/2025\\\/07\\\/25\\\/optimization-part-2\\\/\",\"url\":\"https:\\\/\\\/www.familie-kleinman.nl\\\/brain\\\/index.php\\\/2025\\\/07\\\/25\\\/optimization-part-2\\\/\",\"name\":\"Optimization part #2 - Brain&#039;s Ramblings\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.familie-kleinman.nl\\\/brain\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.familie-kleinman.nl\\\/brain\\\/index.php\\\/2025\\\/07\\\/25\\\/optimization-part-2\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.familie-kleinman.nl\\\/brain\\\/index.php\\\/2025\\\/07\\\/25\\\/optimization-part-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.familie-kleinman.nl\\\/brain\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/network.png\",\"datePublished\":\"2025-07-25T19:53:40+00:00\",\"dateModified\":\"2025-07-25T20:14:24+00:00\",\"description\":\"\\\"Optimizing jSunnyReports: from one to two CPU cores, slashing runtime from 7.5 to 4.5 seconds per cycle. A case study in efficiency.\\\"\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.familie-kleinman.nl\\\/brain\\\/index.php\\\/2025\\\/07\\\/25\\\/optimization-part-2\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.familie-kleinman.nl\\\/brain\\\/index.php\\\/2025\\\/07\\\/25\\\/optimization-part-2\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.familie-kleinman.nl\\\/brain\\\/index.php\\\/2025\\\/07\\\/25\\\/optimization-part-2\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.familie-kleinman.nl\\\/brain\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/network.png\",\"contentUrl\":\"https:\\\/\\\/www.familie-kleinman.nl\\\/brain\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/network.png\",\"width\":1002,\"height\":396},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.familie-kleinman.nl\\\/brain\\\/index.php\\\/2025\\\/07\\\/25\\\/optimization-part-2\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.familie-kleinman.nl\\\/brain\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Optimization part #2\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.familie-kleinman.nl\\\/brain\\\/#website\",\"url\":\"https:\\\/\\\/www.familie-kleinman.nl\\\/brain\\\/\",\"name\":\"Brain's Ramblings\",\"description\":\"Code, commitment, caffeine, and the odd mindfart\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.familie-kleinman.nl\\\/brain\\\/#\\\/schema\\\/person\\\/24700e1628cfd605409636397a9bb6ab\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.familie-kleinman.nl\\\/brain\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.familie-kleinman.nl\\\/brain\\\/#\\\/schema\\\/person\\\/24700e1628cfd605409636397a9bb6ab\",\"name\":\"Brain\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.familie-kleinman.nl\\\/brain\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/brain_brain.png\",\"url\":\"https:\\\/\\\/www.familie-kleinman.nl\\\/brain\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/brain_brain.png\",\"contentUrl\":\"https:\\\/\\\/www.familie-kleinman.nl\\\/brain\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/brain_brain.png\",\"width\":1024,\"height\":1024,\"caption\":\"Brain\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.familie-kleinman.nl\\\/brain\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/brain_brain.png\"},\"sameAs\":[\"https:\\\/\\\/www.familie-kleinman.nl\\\/brain\"],\"url\":\"https:\\\/\\\/www.familie-kleinman.nl\\\/brain\\\/index.php\\\/author\\\/brain\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Optimization part #2 - Brain&#039;s Ramblings","description":"\"Optimizing jSunnyReports: from one to two CPU cores, slashing runtime from 7.5 to 4.5 seconds per cycle. A case study in efficiency.\"","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.familie-kleinman.nl\/brain\/index.php\/2025\/07\/25\/optimization-part-2\/","og_locale":"en_US","og_type":"article","og_title":"Optimization part #2 - Brain&#039;s Ramblings","og_description":"\"Optimizing jSunnyReports: from one to two CPU cores, slashing runtime from 7.5 to 4.5 seconds per cycle. A case study in efficiency.\"","og_url":"https:\/\/www.familie-kleinman.nl\/brain\/index.php\/2025\/07\/25\/optimization-part-2\/","og_site_name":"Brain&#039;s Ramblings","article_published_time":"2025-07-25T19:53:40+00:00","article_modified_time":"2025-07-25T20:14:24+00:00","og_image":[{"width":1002,"height":396,"url":"https:\/\/www.familie-kleinman.nl\/brain\/wp-content\/uploads\/2025\/07\/network.png","type":"image\/png"}],"author":"Brain","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Brain","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.familie-kleinman.nl\/brain\/index.php\/2025\/07\/25\/optimization-part-2\/#article","isPartOf":{"@id":"https:\/\/www.familie-kleinman.nl\/brain\/index.php\/2025\/07\/25\/optimization-part-2\/"},"author":{"name":"Brain","@id":"https:\/\/www.familie-kleinman.nl\/brain\/#\/schema\/person\/24700e1628cfd605409636397a9bb6ab"},"headline":"Optimization part #2","datePublished":"2025-07-25T19:53:40+00:00","dateModified":"2025-07-25T20:14:24+00:00","mainEntityOfPage":{"@id":"https:\/\/www.familie-kleinman.nl\/brain\/index.php\/2025\/07\/25\/optimization-part-2\/"},"wordCount":420,"commentCount":0,"publisher":{"@id":"https:\/\/www.familie-kleinman.nl\/brain\/#\/schema\/person\/24700e1628cfd605409636397a9bb6ab"},"image":{"@id":"https:\/\/www.familie-kleinman.nl\/brain\/index.php\/2025\/07\/25\/optimization-part-2\/#primaryimage"},"thumbnailUrl":"https:\/\/www.familie-kleinman.nl\/brain\/wp-content\/uploads\/2025\/07\/network.png","keywords":["optimization","Proxmox","Update","virtual CPU"],"articleSection":["Coding","Computers"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.familie-kleinman.nl\/brain\/index.php\/2025\/07\/25\/optimization-part-2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.familie-kleinman.nl\/brain\/index.php\/2025\/07\/25\/optimization-part-2\/","url":"https:\/\/www.familie-kleinman.nl\/brain\/index.php\/2025\/07\/25\/optimization-part-2\/","name":"Optimization part #2 - Brain&#039;s Ramblings","isPartOf":{"@id":"https:\/\/www.familie-kleinman.nl\/brain\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.familie-kleinman.nl\/brain\/index.php\/2025\/07\/25\/optimization-part-2\/#primaryimage"},"image":{"@id":"https:\/\/www.familie-kleinman.nl\/brain\/index.php\/2025\/07\/25\/optimization-part-2\/#primaryimage"},"thumbnailUrl":"https:\/\/www.familie-kleinman.nl\/brain\/wp-content\/uploads\/2025\/07\/network.png","datePublished":"2025-07-25T19:53:40+00:00","dateModified":"2025-07-25T20:14:24+00:00","description":"\"Optimizing jSunnyReports: from one to two CPU cores, slashing runtime from 7.5 to 4.5 seconds per cycle. A case study in efficiency.\"","breadcrumb":{"@id":"https:\/\/www.familie-kleinman.nl\/brain\/index.php\/2025\/07\/25\/optimization-part-2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.familie-kleinman.nl\/brain\/index.php\/2025\/07\/25\/optimization-part-2\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.familie-kleinman.nl\/brain\/index.php\/2025\/07\/25\/optimization-part-2\/#primaryimage","url":"https:\/\/www.familie-kleinman.nl\/brain\/wp-content\/uploads\/2025\/07\/network.png","contentUrl":"https:\/\/www.familie-kleinman.nl\/brain\/wp-content\/uploads\/2025\/07\/network.png","width":1002,"height":396},{"@type":"BreadcrumbList","@id":"https:\/\/www.familie-kleinman.nl\/brain\/index.php\/2025\/07\/25\/optimization-part-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.familie-kleinman.nl\/brain\/"},{"@type":"ListItem","position":2,"name":"Optimization part #2"}]},{"@type":"WebSite","@id":"https:\/\/www.familie-kleinman.nl\/brain\/#website","url":"https:\/\/www.familie-kleinman.nl\/brain\/","name":"Brain's Ramblings","description":"Code, commitment, caffeine, and the odd mindfart","publisher":{"@id":"https:\/\/www.familie-kleinman.nl\/brain\/#\/schema\/person\/24700e1628cfd605409636397a9bb6ab"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.familie-kleinman.nl\/brain\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.familie-kleinman.nl\/brain\/#\/schema\/person\/24700e1628cfd605409636397a9bb6ab","name":"Brain","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.familie-kleinman.nl\/brain\/wp-content\/uploads\/2025\/04\/brain_brain.png","url":"https:\/\/www.familie-kleinman.nl\/brain\/wp-content\/uploads\/2025\/04\/brain_brain.png","contentUrl":"https:\/\/www.familie-kleinman.nl\/brain\/wp-content\/uploads\/2025\/04\/brain_brain.png","width":1024,"height":1024,"caption":"Brain"},"logo":{"@id":"https:\/\/www.familie-kleinman.nl\/brain\/wp-content\/uploads\/2025\/04\/brain_brain.png"},"sameAs":["https:\/\/www.familie-kleinman.nl\/brain"],"url":"https:\/\/www.familie-kleinman.nl\/brain\/index.php\/author\/brain\/"}]}},"_links":{"self":[{"href":"https:\/\/www.familie-kleinman.nl\/brain\/index.php\/wp-json\/wp\/v2\/posts\/446","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.familie-kleinman.nl\/brain\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.familie-kleinman.nl\/brain\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.familie-kleinman.nl\/brain\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.familie-kleinman.nl\/brain\/index.php\/wp-json\/wp\/v2\/comments?post=446"}],"version-history":[{"count":3,"href":"https:\/\/www.familie-kleinman.nl\/brain\/index.php\/wp-json\/wp\/v2\/posts\/446\/revisions"}],"predecessor-version":[{"id":451,"href":"https:\/\/www.familie-kleinman.nl\/brain\/index.php\/wp-json\/wp\/v2\/posts\/446\/revisions\/451"}],"wp:attachment":[{"href":"https:\/\/www.familie-kleinman.nl\/brain\/index.php\/wp-json\/wp\/v2\/media?parent=446"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.familie-kleinman.nl\/brain\/index.php\/wp-json\/wp\/v2\/categories?post=446"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.familie-kleinman.nl\/brain\/index.php\/wp-json\/wp\/v2\/tags?post=446"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}