{"id":2058,"date":"2025-06-07T11:17:08","date_gmt":"2025-06-07T11:17:08","guid":{"rendered":"http:\/\/tomblog.firstsolo.net\/?p=2058"},"modified":"2025-06-07T17:30:20","modified_gmt":"2025-06-07T17:30:20","slug":"automatically-calculating-jerk-limits","status":"publish","type":"post","link":"http:\/\/tomblog.firstsolo.net\/index.php\/automatically-calculating-jerk-limits\/","title":{"rendered":"Automatically calculating &#8220;jerk&#8221; limits"},"content":{"rendered":"\n<p>tl;dr: If you know the resonant frequency of your print head and the maximum acceleration that it can sustain before print artifacts develop then, in principle, you can calculate a maximum jerk value for each axis.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p>Marlin and other 3D printer firmwares<span class=\"footnote_referrer\"><a role=\"button\" tabindex=\"0\" onclick=\"footnote_moveToReference_2058_1('footnote_plugin_reference_2058_1_1');\" onkeypress=\"footnote_moveToReference_2058_1('footnote_plugin_reference_2058_1_1');\" ><sup id=\"footnote_plugin_tooltip_2058_1_1\" class=\"footnote_plugin_tooltip_text\">1<\/sup><\/a><span id=\"footnote_plugin_tooltip_text_2058_1_1\" class=\"footnote_tooltip\">What I say here applies to firmwares generally, but Marlin is the one I really know. Feel free to apply what I say <em>mutatis mutandis<\/em> to other firmwares.<\/span><\/span><script type=\"text\/javascript\"> jQuery('#footnote_plugin_tooltip_2058_1_1').tooltip({ tip: '#footnote_plugin_tooltip_text_2058_1_1', tipClass: 'footnote_tooltip', effect: 'fade', predelay: 0, fadeInSpeed: 200, delay: 400, fadeOutSpeed: 200, position: 'top right', relative: true, offset: [10, 10], });<\/script> limit sudden speed changes to prevent exceeding the capabilities of the printer. We use the word &#8220;jerk&#8221; to refer to sudden speed changes<span class=\"footnote_referrer\"><a role=\"button\" tabindex=\"0\" onclick=\"footnote_moveToReference_2058_1('footnote_plugin_reference_2058_1_2');\" onkeypress=\"footnote_moveToReference_2058_1('footnote_plugin_reference_2058_1_2');\" ><sup id=\"footnote_plugin_tooltip_2058_1_2\" class=\"footnote_plugin_tooltip_text\">2<\/sup><\/a><span id=\"footnote_plugin_tooltip_text_2058_1_2\" class=\"footnote_tooltip\">The obligatory side note at this point is to observe that in the 3D printer world &#8220;jerk&#8221; is used differently to the physics sense of rate of change of acceleration.<\/span><\/span><script type=\"text\/javascript\"> jQuery('#footnote_plugin_tooltip_2058_1_2').tooltip({ tip: '#footnote_plugin_tooltip_text_2058_1_2', tipClass: 'footnote_tooltip', effect: 'fade', predelay: 0, fadeInSpeed: 200, delay: 400, fadeOutSpeed: 200, position: 'top right', relative: true, offset: [10, 10], });<\/script>. These sudden speed changes occur at the corners between every pair of print segments. So limiting jerk is about calculating cornering speed. In Marlin there are two ways to calculate cornering speed, Classic Jerk and Junction Deviation. Junction Deviation has its issues<span class=\"footnote_referrer\"><a role=\"button\" tabindex=\"0\" onclick=\"footnote_moveToReference_2058_1('footnote_plugin_reference_2058_1_3');\" onkeypress=\"footnote_moveToReference_2058_1('footnote_plugin_reference_2058_1_3');\" ><sup id=\"footnote_plugin_tooltip_2058_1_3\" class=\"footnote_plugin_tooltip_text\">3<\/sup><\/a><span id=\"footnote_plugin_tooltip_text_2058_1_3\" class=\"footnote_tooltip\">It attempts to calculate a maximum jerk based on a pseudo toolpath for which the maths is relatively easy. Unfortunately the mathematical simplification differs sufficiently from the real world to make JD problematic &#8211; one day I might write about this. Or search the Marlin and 3D Printing Discord servers to find what I have written there.<\/span><\/span><script type=\"text\/javascript\"> jQuery('#footnote_plugin_tooltip_2058_1_3').tooltip({ tip: '#footnote_plugin_tooltip_text_2058_1_3', tipClass: 'footnote_tooltip', effect: 'fade', predelay: 0, fadeInSpeed: 200, delay: 400, fadeOutSpeed: 200, position: 'top right', relative: true, offset: [10, 10], });<\/script> so this post is just about Classic Jerk.<\/p>\n\n\n\n<p>There is a maximum jerk each axis can tolerate before print artifacts develop. In Marlin you have to manually configure the jerk values for each axis and you establish these values heuristically.<\/p>\n\n\n\n<p>A similar situation exists with regards to acceleration. There is a maximum acceleration each axis can tolerate and Marlin limits acceleration to values that are established heuristically and configured by the user or printer manufacturer.<\/p>\n\n\n\n<p>However there&#8217;s a point here which Marlin (and I think probably other firmwares too) do not engage with well: the effects of jerk and acceleration are cumulative. When accelerating with zero jerk, the printer can handle greater acceleration and vice versa. Acceleration and jerk limits are actually both dealing with the same underlying physics. Classic Jerk is an attempt to unify these two concepts but we need something better. And in theory I think we may have something&#8230;<\/p>\n\n\n\n<p>Now that we have input shaping, there is a third factor which is established heuristically: the resonant frequency of each axis. And this begins to get into the actual physics of the axis, <a href=\"http:\/\/tomblog.firstsolo.net\/index.php\/reflections-on-input-shaping\/\" data-type=\"post\" data-id=\"1898\">I have written about this here<\/a>. It turns out that the acceleration and jerk limits impose limits on how far the axis can oscillate away from its zero acceleration trajectory and it is these extremes of oscillation which are the limiting factor for the axis. Both jerk and acceleration contribute to these oscillations but they do so in ways we can calculate and this gives us a relationship between max jerk and max acceleration.<\/p>\n\n\n\n<p>Here is the maths:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"http:\/\/tomblog.firstsolo.net\/wp-content\/uploads\/2025\/06\/jerkmaths-3.jpg\"><img loading=\"lazy\" width=\"1645\" height=\"2007\" src=\"http:\/\/tomblog.firstsolo.net\/wp-content\/uploads\/2025\/06\/jerkmaths-3.jpg\" alt=\"\" class=\"wp-image-2076\"\/><\/a><\/figure>\n\n\n\n<p>Cleaning that up a bit:<\/p>\n\n\n\n<img src='http:\/\/s0.wp.com\/latex.php?latex=a_m+%3D+MAX%5C_ACCEL+-+%5Cdfrac%7B%5Comega%5E2.v_j%5E2%7D%7B4.MAX%5C_ACCEL%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='a_m = MAX\\_ACCEL - \\dfrac{\\omega^2.v_j^2}{4.MAX\\_ACCEL}' title='a_m = MAX\\_ACCEL - \\dfrac{\\omega^2.v_j^2}{4.MAX\\_ACCEL}' class='latex' \/>\n\n\n\n<p><\/p>\n\n\n\n<p>So if we set jerk to zero for an axis we can find some <code>MAX_ACCEL<\/code> which gives acceptable prints and then we can calculate values for <img src='http:\/\/s0.wp.com\/latex.php?latex=a_m&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='a_m' title='a_m' class='latex' \/> and <img src='http:\/\/s0.wp.com\/latex.php?latex=v_j&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='v_j' title='v_j' class='latex' \/>.<\/p>\n\n\n\n<p>An interesting follow up question is what is the optimal split between <img src='http:\/\/s0.wp.com\/latex.php?latex=a_m&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='a_m' title='a_m' class='latex' \/> and <img src='http:\/\/s0.wp.com\/latex.php?latex=v_j&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='v_j' title='v_j' class='latex' \/>? This needs more exploration but this is where I have got so far:<\/p>\n\n\n\n<p>On an acceleration ramp if the start speed is <img src='http:\/\/s0.wp.com\/latex.php?latex=v_0&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='v_0' title='v_0' class='latex' \/> and the cruise speed is <img src='http:\/\/s0.wp.com\/latex.php?latex=v&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='v' title='v' class='latex' \/> then the time to accelerate at <img src='http:\/\/s0.wp.com\/latex.php?latex=a_m&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='a_m' title='a_m' class='latex' \/> and with a jerk of <img src='http:\/\/s0.wp.com\/latex.php?latex=v_j&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='v_j' title='v_j' class='latex' \/>is:<\/p>\n\n\n\n<img src='http:\/\/s0.wp.com\/latex.php?latex=t+%3D+%5Cdfrac%7Bv+-+v_j+-+v_0%7D%7Ba_m%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='t = \\dfrac{v - v_j - v_0}{a_m}' title='t = \\dfrac{v - v_j - v_0}{a_m}' class='latex' \/>\n\n\n\n<p><\/p>\n\n\n\n<p>If it is possible to set <img src='http:\/\/s0.wp.com\/latex.php?latex=v_j+%3D+v+-+v_0&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='v_j = v - v_0' title='v_j = v - v_0' class='latex' \/> then time is zero. However <img src='http:\/\/s0.wp.com\/latex.php?latex=v_j&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='v_j' title='v_j' class='latex' \/> is limited to <img src='http:\/\/s0.wp.com\/latex.php?latex=v_j+%5Cle+%5Cfrac%7BMAX%5C_ACCEL%7D%7B%5Comega%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='v_j \\le \\frac{MAX\\_ACCEL}{\\omega}' title='v_j \\le \\frac{MAX\\_ACCEL}{\\omega}' class='latex' \/>, otherwise <img src='http:\/\/s0.wp.com\/latex.php?latex=a_m&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='a_m' title='a_m' class='latex' \/> would go negative.<\/p>\n\n\n\n<p>When <img src='http:\/\/s0.wp.com\/latex.php?latex=v_j+%3D+v+-+v_0&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='v_j = v - v_0' title='v_j = v - v_0' class='latex' \/> is not possible, we can find a minimum of the <img src='http:\/\/s0.wp.com\/latex.php?latex=t&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='t' title='t' class='latex' \/> function above by differentiating with respect to <img src='http:\/\/s0.wp.com\/latex.php?latex=v_j&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='v_j' title='v_j' class='latex' \/> and setting to zero.<\/p>\n\n\n\n<p>The solution to this equation is:<\/p>\n\n\n\n<img src='http:\/\/s0.wp.com\/latex.php?latex=v_j+%3D+v+-+v_0+-+%5Csqrt%7B%28v+-+v_0%29%5E2+-+%5Cfrac%7B4+.+MAX%5C_ACCEL%5E2%7D%7B%5Comega%5E2%7D%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='v_j = v - v_0 - \\sqrt{(v - v_0)^2 - \\frac{4 . MAX\\_ACCEL^2}{\\omega^2}}' title='v_j = v - v_0 - \\sqrt{(v - v_0)^2 - \\frac{4 . MAX\\_ACCEL^2}{\\omega^2}}' class='latex' \/>\n\n\n\n<p><\/p>\n\n\n\n<p>The only problem here is that <img src='http:\/\/s0.wp.com\/latex.php?latex=v_0&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='v_0' title='v_0' class='latex' \/> is dependent on the jerk speed when cornering and the cruise speed is potentially dependent on cornering speed and acceleration. So more work is needed.<\/p>\n<div class=\"sharedaddy sd-sharing-enabled\"><div class=\"robots-nocontent sd-block sd-social sd-social-icon-text sd-sharing\"><h3 class=\"sd-title\">Share this:<\/h3><div class=\"sd-content\"><ul><li class=\"share-facebook\"><a rel=\"nofollow\" class=\"share-facebook sd-button share-icon\" href=\"http:\/\/tomblog.firstsolo.net\/index.php\/automatically-calculating-jerk-limits\/?share=facebook\" target=\"_blank\" title=\"Share on Facebook\" id=\"sharing-facebook-2058\"><span>Facebook<\/span><\/a><\/li><li class=\"share-twitter\"><a rel=\"nofollow\" class=\"share-twitter sd-button share-icon\" href=\"http:\/\/tomblog.firstsolo.net\/index.php\/automatically-calculating-jerk-limits\/?share=twitter\" target=\"_blank\" title=\"Click to share on Twitter\" id=\"sharing-twitter-2058\"><span>Twitter<\/span><\/a><\/li><li class=\"share-google-plus-1\"><a rel=\"nofollow\" class=\"share-google-plus-1 sd-button share-icon\" href=\"http:\/\/tomblog.firstsolo.net\/index.php\/automatically-calculating-jerk-limits\/?share=google-plus-1\" target=\"_blank\" title=\"Click to share on Google+\" id=\"sharing-google-2058\"><span>Google<\/span><\/a><\/li><li class=\"share-reddit\"><a rel=\"nofollow\" class=\"share-reddit sd-button share-icon\" href=\"http:\/\/tomblog.firstsolo.net\/index.php\/automatically-calculating-jerk-limits\/?share=reddit\" target=\"_blank\" title=\"Click to share on Reddit\"><span>Reddit<\/span><\/a><\/li><li class=\"share-pocket\"><a rel=\"nofollow\" class=\"share-pocket sd-button share-icon\" href=\"http:\/\/tomblog.firstsolo.net\/index.php\/automatically-calculating-jerk-limits\/?share=pocket\" target=\"_blank\" title=\"Click to share on Pocket\"><span>Pocket<\/span><\/a><\/li><li><a href=\"#\" class=\"sharing-anchor sd-button share-more\"><span>More<\/span><\/a><\/li><li class=\"share-end\"><\/li><\/ul><div class=\"sharing-hidden\"><div class=\"inner\" style=\"display: none;\"><ul><li class=\"share-tumblr\"><a rel=\"nofollow\" class=\"share-tumblr sd-button share-icon\" href=\"http:\/\/tomblog.firstsolo.net\/index.php\/automatically-calculating-jerk-limits\/?share=tumblr\" target=\"_blank\" title=\"Click to share on Tumblr\"><span>Tumblr<\/span><\/a><\/li><li class=\"share-stumbleupon\"><a rel=\"nofollow\" class=\"share-stumbleupon sd-button share-icon\" href=\"http:\/\/tomblog.firstsolo.net\/index.php\/automatically-calculating-jerk-limits\/?share=stumbleupon\" target=\"_blank\" title=\"Click to share on StumbleUpon\"><span>StumbleUpon<\/span><\/a><\/li><li class=\"share-end\"><\/li><li class=\"share-pinterest\"><a rel=\"nofollow\" class=\"share-pinterest sd-button share-icon\" href=\"http:\/\/tomblog.firstsolo.net\/index.php\/automatically-calculating-jerk-limits\/?share=pinterest\" target=\"_blank\" title=\"Click to share on Pinterest\"><span>Pinterest<\/span><\/a><\/li><li class=\"share-end\"><\/li><\/ul><\/div><\/div><\/div><\/div><\/div><div class=\"speaker-mute footnotes_reference_container\"> <div class=\"footnote_container_prepare\"><p><span role=\"button\" tabindex=\"0\" class=\"footnote_reference_container_label pointer\" onclick=\"footnote_expand_collapse_reference_container_2058_1();\">&#x202F;<\/span><span role=\"button\" tabindex=\"0\" class=\"footnote_reference_container_collapse_button\" style=\"display: none;\" onclick=\"footnote_expand_collapse_reference_container_2058_1();\">[<a id=\"footnote_reference_container_collapse_button_2058_1\">+<\/a>]<\/span><\/p><\/div> <div id=\"footnote_references_container_2058_1\" style=\"\"><table class=\"footnotes_table footnote-reference-container\"><caption class=\"accessibility\">References<\/caption> <tbody> \r\n\r\n<tr class=\"footnotes_plugin_reference_row\"> <th scope=\"row\" class=\"footnote_plugin_index_combi pointer\"  onclick=\"footnote_moveToAnchor_2058_1('footnote_plugin_tooltip_2058_1_1');\"><a id=\"footnote_plugin_reference_2058_1_1\" class=\"footnote_backlink\"><span class=\"footnote_index_arrow\">&#8593;<\/span>1<\/a><\/th> <td class=\"footnote_plugin_text\">What I say here applies to firmwares generally, but Marlin is the one I really know. Feel free to apply what I say <em>mutatis mutandis<\/em> to other firmwares.<\/td><\/tr>\r\n\r\n<tr class=\"footnotes_plugin_reference_row\"> <th scope=\"row\" class=\"footnote_plugin_index_combi pointer\"  onclick=\"footnote_moveToAnchor_2058_1('footnote_plugin_tooltip_2058_1_2');\"><a id=\"footnote_plugin_reference_2058_1_2\" class=\"footnote_backlink\"><span class=\"footnote_index_arrow\">&#8593;<\/span>2<\/a><\/th> <td class=\"footnote_plugin_text\">The obligatory side note at this point is to observe that in the 3D printer world &#8220;jerk&#8221; is used differently to the physics sense of rate of change of acceleration.<\/td><\/tr>\r\n\r\n<tr class=\"footnotes_plugin_reference_row\"> <th scope=\"row\" class=\"footnote_plugin_index_combi pointer\"  onclick=\"footnote_moveToAnchor_2058_1('footnote_plugin_tooltip_2058_1_3');\"><a id=\"footnote_plugin_reference_2058_1_3\" class=\"footnote_backlink\"><span class=\"footnote_index_arrow\">&#8593;<\/span>3<\/a><\/th> <td class=\"footnote_plugin_text\">It attempts to calculate a maximum jerk based on a pseudo toolpath for which the maths is relatively easy. Unfortunately the mathematical simplification differs sufficiently from the real world to make JD problematic &#8211; one day I might write about this. Or search the Marlin and 3D Printing Discord servers to find what I have written there.<\/td><\/tr>\r\n\r\n <\/tbody> <\/table> <\/div><\/div><script type=\"text\/javascript\"> function footnote_expand_reference_container_2058_1() { jQuery('#footnote_references_container_2058_1').show(); jQuery('#footnote_reference_container_collapse_button_2058_1').text('\u2212'); } function footnote_collapse_reference_container_2058_1() { jQuery('#footnote_references_container_2058_1').hide(); jQuery('#footnote_reference_container_collapse_button_2058_1').text('+'); } function footnote_expand_collapse_reference_container_2058_1() { if (jQuery('#footnote_references_container_2058_1').is(':hidden')) { footnote_expand_reference_container_2058_1(); } else { footnote_collapse_reference_container_2058_1(); } } function footnote_moveToReference_2058_1(p_str_TargetID) { footnote_expand_reference_container_2058_1(); var l_obj_Target = jQuery('#' + p_str_TargetID); if (l_obj_Target.length) { jQuery( 'html, body' ).delay( 0 ); jQuery('html, body').animate({ scrollTop: l_obj_Target.offset().top - window.innerHeight * 0.2 }, 380); } } function footnote_moveToAnchor_2058_1(p_str_TargetID) { footnote_expand_reference_container_2058_1(); var l_obj_Target = jQuery('#' + p_str_TargetID); if (l_obj_Target.length) { jQuery( 'html, body' ).delay( 0 ); jQuery('html, body').animate({ scrollTop: l_obj_Target.offset().top - window.innerHeight * 0.2 }, 380); } }<\/script>","protected":false},"excerpt":{"rendered":"<p>tl;dr: If you know the resonant frequency of your print head and the maximum acceleration that it can sustain before print artifacts develop then, in principle, you can calculate a maximum jerk value for each axis. Marlin and other 3D &hellip; <a href=\"http:\/\/tomblog.firstsolo.net\/index.php\/automatically-calculating-jerk-limits\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n<div class=\"sharedaddy sd-sharing-enabled\"><div class=\"robots-nocontent sd-block sd-social sd-social-icon-text sd-sharing\"><h3 class=\"sd-title\">Share this:<\/h3><div class=\"sd-content\"><ul><li class=\"share-facebook\"><a rel=\"nofollow\" class=\"share-facebook sd-button share-icon\" href=\"http:\/\/tomblog.firstsolo.net\/index.php\/automatically-calculating-jerk-limits\/?share=facebook\" target=\"_blank\" title=\"Share on Facebook\" id=\"sharing-facebook-2058\"><span>Facebook<\/span><\/a><\/li><li class=\"share-twitter\"><a rel=\"nofollow\" class=\"share-twitter sd-button share-icon\" href=\"http:\/\/tomblog.firstsolo.net\/index.php\/automatically-calculating-jerk-limits\/?share=twitter\" target=\"_blank\" title=\"Click to share on Twitter\" id=\"sharing-twitter-2058\"><span>Twitter<\/span><\/a><\/li><li class=\"share-google-plus-1\"><a rel=\"nofollow\" class=\"share-google-plus-1 sd-button share-icon\" href=\"http:\/\/tomblog.firstsolo.net\/index.php\/automatically-calculating-jerk-limits\/?share=google-plus-1\" target=\"_blank\" title=\"Click to share on Google+\" id=\"sharing-google-2058\"><span>Google<\/span><\/a><\/li><li class=\"share-reddit\"><a rel=\"nofollow\" class=\"share-reddit sd-button share-icon\" href=\"http:\/\/tomblog.firstsolo.net\/index.php\/automatically-calculating-jerk-limits\/?share=reddit\" target=\"_blank\" title=\"Click to share on Reddit\"><span>Reddit<\/span><\/a><\/li><li class=\"share-pocket\"><a rel=\"nofollow\" class=\"share-pocket sd-button share-icon\" href=\"http:\/\/tomblog.firstsolo.net\/index.php\/automatically-calculating-jerk-limits\/?share=pocket\" target=\"_blank\" title=\"Click to share on Pocket\"><span>Pocket<\/span><\/a><\/li><li><a href=\"#\" class=\"sharing-anchor sd-button share-more\"><span>More<\/span><\/a><\/li><li class=\"share-end\"><\/li><\/ul><div class=\"sharing-hidden\"><div class=\"inner\" style=\"display: none;\"><ul><li class=\"share-tumblr\"><a rel=\"nofollow\" class=\"share-tumblr sd-button share-icon\" href=\"http:\/\/tomblog.firstsolo.net\/index.php\/automatically-calculating-jerk-limits\/?share=tumblr\" target=\"_blank\" title=\"Click to share on Tumblr\"><span>Tumblr<\/span><\/a><\/li><li class=\"share-stumbleupon\"><a rel=\"nofollow\" class=\"share-stumbleupon sd-button share-icon\" href=\"http:\/\/tomblog.firstsolo.net\/index.php\/automatically-calculating-jerk-limits\/?share=stumbleupon\" target=\"_blank\" title=\"Click to share on StumbleUpon\"><span>StumbleUpon<\/span><\/a><\/li><li class=\"share-end\"><\/li><li class=\"share-pinterest\"><a rel=\"nofollow\" class=\"share-pinterest sd-button share-icon\" href=\"http:\/\/tomblog.firstsolo.net\/index.php\/automatically-calculating-jerk-limits\/?share=pinterest\" target=\"_blank\" title=\"Click to share on Pinterest\"><span>Pinterest<\/span><\/a><\/li><li class=\"share-end\"><\/li><\/ul><\/div><\/div><\/div><\/div><\/div>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[10],"tags":[],"_links":{"self":[{"href":"http:\/\/tomblog.firstsolo.net\/index.php\/wp-json\/wp\/v2\/posts\/2058"}],"collection":[{"href":"http:\/\/tomblog.firstsolo.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/tomblog.firstsolo.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/tomblog.firstsolo.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/tomblog.firstsolo.net\/index.php\/wp-json\/wp\/v2\/comments?post=2058"}],"version-history":[{"count":13,"href":"http:\/\/tomblog.firstsolo.net\/index.php\/wp-json\/wp\/v2\/posts\/2058\/revisions"}],"predecessor-version":[{"id":2077,"href":"http:\/\/tomblog.firstsolo.net\/index.php\/wp-json\/wp\/v2\/posts\/2058\/revisions\/2077"}],"wp:attachment":[{"href":"http:\/\/tomblog.firstsolo.net\/index.php\/wp-json\/wp\/v2\/media?parent=2058"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/tomblog.firstsolo.net\/index.php\/wp-json\/wp\/v2\/categories?post=2058"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/tomblog.firstsolo.net\/index.php\/wp-json\/wp\/v2\/tags?post=2058"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}