{"id":16967,"date":"2026-10-27T23:41:28","date_gmt":"2026-10-28T03:41:28","guid":{"rendered":"https:\/\/adamchandler.me\/blog\/?p=16967"},"modified":"2026-10-27T23:42:26","modified_gmt":"2026-10-28T03:42:26","slug":"16967","status":"publish","type":"post","link":"https:\/\/adamchandler.me\/blog\/2026\/10\/27\/16967\/","title":{"rendered":"Housekeeping &#8211; Blog Updates after 20 years of cruft"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">I&#8217;ve been blogging here continuously since 2007 and for most of that time my maintenance plan was to leave it alone as long as it loaded. This week I finally did the opposite. Over two days I audited the whole site and cleaned up nearly two decades of clutter. I also wrote recently that I want this blog to feel more personal and less like a resume, and part of that is just caring about the place enough to dust it. I&#8217;m really happy with everything I cleaned up. I did use Claude Code for the technical bits and &#8220;directed&#8221; what I wanted to accomplish, and it&#8217;s pretty amazing how much got done. Claude wrote the audit scripts and helped me read the results, and I ran every command myself on my own server. Each batch of changes started with a backup and ended with a check that the site still worked, and when something went sideways, which happened more than once, we caught it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The blog has 3,387 posts and pages. On 2,961 of the older ones comments were still open, and in the last six months the site received exactly two comments. The first audit was read only and it came back with a list that was equal parts embarrassing and useful. A page was crashing, the feed was slow (a 26 megabyte RSS feed!), a bookmarks page I ran was throwing errors all day long, a configuration file was readable by more people than it should have been, and my hosting account was carrying about 18 GB of stuff I had completely forgotten about but had backups of on my NAS.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It was a lot of boring housekeeping. WordPress has a built in scheduler that wakes up whenever someone loads a page, which on a site that gets bots all night is a lot of waking up. The logs showed it being hit 871 times in a single midnight hour, so I turned it off and replaced it with a real scheduled job that runs every five minutes. My RSS feed took about 16 seconds to generate, which is long enough that some feed readers probably just gave up on me. I cut it to 20 items and switched off one plugin module I wasn&#8217;t using and it now takes about 1.9 seconds. The little bookmarks app was returning errors on most requests, 12,000 of them over the stretch of logs I looked at, and it was simply out of date. Upgrading it fixed it. I also moved PHP up to a current version, updated every plugin and checked the core files and plugins against their published checksums to make sure nothing on disk had been tampered with. Everything matched, with two harmless warnings about files that aren&#8217;t part of WordPress.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Forgetting things turns out to be expensive. Over nineteen years I&#8217;ve built and abandoned a lot of websites and my hosting account held an old RSS reader, a photo gallery, a micro blog, our wedding site, a few installs I couldn&#8217;t identify at a glance and a pile of automatic backups I didn&#8217;t know existed. One folder alone was 7.6 GB, a full account backup from 2023 was another 7.3 GB and four automatic backups added 2.3 GB more. Nothing got deleted until I had a verified copy somewhere else. The wedding site, for example, went to my Mac and my NAS with matching checksums on both ends before I removed it from the server, and anything with a database got exported first with the table counts checked. The account went from around 18 GB used to a little over 2 GB. Satisfying! I also found a forgotten static page sitting at the top of the account that told anyone who stumbled on it far more about my setup than any page should, and that is now long gone.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The database lost about half its weight too. I took a compressed backup before each round of changes, which gave me an easy way to measure progress. The first was 13.1 MB and the last was 6.0 MB, a drop of about 54 percent, although that compares compressed backups and not live tables so treat it as a good estimate and not a lab measurement. Most of it was leftovers from plugins I stopped using years ago: dead options, abandoned tables, about 27,000 orphaned metadata rows and thousands of finished background task records nothing ever cleaned up. I dumped the orphaned tables to a file first and then dropped them.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The longest part of the project was the links and images, and it&#8217;s where I was most careful because it touches my actual writing. The rule was that my words stay exactly as I wrote them and only the broken markup around them gets fixed. 964 posts had images loading over plain http, which browsers flag as mixed content, so I tested every image host to see if it supported https. 16 did. That let me safely update 727 posts and about 3,400 image URLs in the main pass, around 3,950 in total. Another 223 posts still point at hosts that don&#8217;t serve images anymore, mostly the old Flickr server names from the Web 2.0 days, and there&#8217;s nothing to rewrite them to so I left them alone. My old personal domain was also scattered through the blog in hundreds of places and wasn&#8217;t set up to send anyone anywhere useful. I rewrote those links in 207 posts and 777 comments with zero errors and gave the old domain permanent redirects and its own certificate, so an old link from 2012 lands on the right post today. About 341 images across 177 posts are gone from the internet entirely. I tried the Wayback Machine and it didn&#8217;t have them, so they stay dead and I didn&#8217;t edit the posts to hide it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I also shrank the oversized photos. There were 126 uploads over 2 MB totaling 676 MB, including a few camera originals north of 20 MB just sitting on the public web. I resized 100 of them to 2,560 pixels on the long edge after copying each original aside, which saved roughly 540 MB. One went from 24.1 MB to about 1.5 MB. I keep every original elsewhere so nothing was lost. Last, I closed comments on all 2,961 older posts, and I did it directly in the database so the modified dates stayed untouched. Search engines read those dates and I didn&#8217;t want 2,961 posts suddenly looking freshly edited.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I&#8217;m keeping the security part vague on purpose because I&#8217;m not going to publish a map of my own site. The short version is that I tightened permissions on sensitive files, closed a couple of ways a stranger could look up information about the site, removed unused FTP accounts, turned off code editing from inside the dashboard and trimmed Jetpack down to the features I use. None of it was an emergency. It was fewer things exposed and fewer things to go wrong. Jetpack&#8217;s brute force protection has blocked about 93,400 login attempts so far, which is a good reminder that this isn&#8217;t hypothetical.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">My favorite find was a crash I never knew about. Clicking &#8220;load more&#8221; at the bottom of the homepage, or paging past page one, threw WordPress&#8217;s full critical error screen, and it had been that way since I installed the theme. The theme was calling helper functions from a sibling theme that were never included. Nobody told me because, as established, nobody comments. I found it by running the code directly from the command line and reading the actual error, since the usual logs don&#8217;t capture that kind of failure, and I switched to plain numbered pagination. Page 2 loaded for the first time ever. While I was in there I fixed a few smaller things. A single missing quote mark in one line of the font settings caused both CSS errors in the W3C validator. My gray secondary text was too light to pass accessibility contrast, about 2.6 to 1 against a required 4.5, so I darkened it. A sidebar setting was producing the wrong heading levels on every page, which took one changed value, and I moved the fonts onto my own server instead of loading them from Google. PageSpeed Insights now gives the blog a 100 for performance on desktop and mobile, 100 for best practices and SEO and 92 for accessibility, and I&#8217;ll take the 92 for now. My bare domain also serves a hand written static page outside WordPress that declared a Chinese character encoding and carried an attribute a privacy browser extension had injected, and a few lines fixed both. Then I verified the site in Google Search Console and submitted five sitemap files, all of which came back as Success. If you do this with Jetpack, submit the child files and not the top level index or you get a &#8220;nested indexing&#8221; warning.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I want to be honest about what I got wrong. Claude assumed my site sat behind a content delivery network because a plugin for one was installed, and a DNS lookup said otherwise. I assumed my email authentication was off and it was enabled and valid. Claude counted my posts wrong once. I read 15 recently modified posts as mystery edits when 14 were plugin bookkeeping and one was me. A script I used to rewrite links threw hundreds of warnings from a bug on a single line, which I only noticed because I read the error log instead of assuming silence meant success. I also never got a before score from PageSpeed, so every speed claim here is a server side timing and not a before and after comparison. Every one of those got caught by reading the real source instead of the summary, and that&#8217;s probably the lesson of the whole project.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The blog is lighter, faster and a lot less embarrassing to look at under the hood. The hosting account is about an eighth of its old size, the database is about half, the feed loads in under two seconds and every old link to my previous domain lands where it should. I have a short list of leftovers, a few databases I need to identify and drop, some stray files and a couple of passwords I&#8217;m going to rotate since I&#8217;m already here. Those are tomorrow&#8217;s problem.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I&#8217;m so thrilled to brag a bit about how many improvements were made. I&#8217;m not a web developer and 2 full days was worth the time spent:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Space reclaimed<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Account usage went from about 18,764 MB to about 2.3 GB, so the account is roughly an eighth of its old size.<\/li>\n\n\n\n<li>A 7.27 GB full backup from 2023 is gone, along with 2.3 GB of automatic backups, a 1.7 GB archive folder and a quarantine folder that reached 14 GB at its peak.<\/li>\n\n\n\n<li>100 oversized photos were resized, saving about 540 MB from a starting pile of 126 files totaling 676 MB.<\/li>\n\n\n\n<li>The biggest single photo went from 24.1 MB to 1.49 MB, a 94% cut.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Database<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The compressed backup shrank from 13.08 MB to 5.99 MB, down 54%. That\u2019s a proxy, since it compares dumps and not live tables.<\/li>\n\n\n\n<li>About 27,000 orphaned metadata rows are gone.<\/li>\n\n\n\n<li>2,430 finished background task records and 7,362 or more of their log rows were pruned.<\/li>\n\n\n\n<li>67 dead options were removed, along with one abandoned table.<\/li>\n\n\n\n<li>The 13,610 Apple News rows were checked.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Speed<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The RSS feed went from about 16 seconds to about 1.9, which is 88% faster, or 8.4 times.<\/li>\n\n\n\n<li>Blog home answers in 0.034 seconds server side.<\/li>\n\n\n\n<li>WordPress\u2019s built in scheduler fired 871 times in one midnight hour. A real job every 5 minutes means 12 runs in that same hour, about 99% fewer wakeups.<\/li>\n\n\n\n<li>PageSpeed Insights now gives the blog Performance 100 on desktop and mobile, with Best Practices 100, SEO 100 and Accessibility 92.<\/li>\n\n\n\n<li>The static homepage scores 100 on desktop and 99 on mobile.<\/li>\n\n\n\n<li>Google Fonts requests went from 9 references to 0 because the fonts are now self-hosted.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>W3C validator<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The first run flagged 8 findings: 2 CSS parse errors, 2 heading skips, 3 duplicate-ID pairs and 1 preload pair.<\/li>\n\n\n\n<li>All 4 findings the site owned are fixed. The 2 CSS errors came from one missing quote character.<\/li>\n\n\n\n<li>The 4 remaining findings are third-party plugin markup, left alone by choice.<\/li>\n\n\n\n<li>The old gray text improved from 2.6:1 contrast to 4.54:1, past the 4.5:1 AA bar.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Content<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>741 of 964 posts with insecure images are fixed (77%). About 3,950 image URLs were rewritten, and 223 posts are left pointing at hosts that no longer exist.<\/li>\n\n\n\n<li>207 posts and 777 comments were rewritten to the current domain with 0 errors, and the old domain now redirects permanently over HTTPS.<\/li>\n\n\n\n<li>Comments are closed on all 2,961 older posts, and no modified date changed.<\/li>\n\n\n\n<li>Pagination past page one works for the first time since the theme was installed.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Search and security<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>5 sitemap files covering 4,375 URLs (3,388 posts and 987 images) all show Success in Search Console.<\/li>\n\n\n\n<li>Core and 20 of 21 plugins match their published checksums. The 21st is Namecheap\u2019s own tool, which has no published checksum.<\/li>\n\n\n\n<li>The config file went from world readable to locked down, 6 unused FTP accounts were deleted, and 6 anonymous endpoints were closed.<\/li>\n\n\n\n<li>Jetpack has blocked 93,400 login attempts.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">I think this is probably a good thing to do every 20 years or so. his blog has seen a lot of changes over the years and this housekeeping was long overdue. Now I can start to consider some things that genuinely spice up the place like how I share more personal items and we&#8217;ll see if google sends more traffic my way even though I think we can all agree that SEO is dead\/dying but accessibility and responsiveness is important so I&#8217;m glad it&#8217;s done. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"I&#8217;ve been blogging here continuously since 2007 and for most of that time my maintenance plan was to&hellip;\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_seo_schema_type":"","apple_news_api_created_at":"2026-10-28T03:45:34Z","apple_news_api_id":"81be3c53-1dab-4dc7-bddb-b39d0fa0d56d","apple_news_api_modified_at":"2026-10-28T03:45:34Z","apple_news_api_revision":"AAAAAAAAAAD\/\/\/\/\/\/\/\/\/\/w==","apple_news_api_share_url":"https:\/\/apple.news\/Agb48Ux2rTce927OdD6DVbQ","apple_news_cover_media_provider":"image","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_cover_video_id":0,"apple_news_cover_video_url":"","apple_news_cover_embedwebvideo_url":"","apple_news_is_hidden":"","apple_news_is_paid":"","apple_news_is_preview":"","apple_news_is_sponsored":"","apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":[],"apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"csco_singular_sidebar":"","csco_page_header_type":"","csco_custom_appearance":"","csco_disable_excerpt_posts_layout":false,"csco_page_load_nextpost":"","csco_post_video_location":[],"csco_post_video_location_hash":"","csco_post_video_url":"","csco_post_video_bg_start_time":0,"csco_post_video_bg_end_time":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[2],"tags":[],"class_list":["post-16967","post","type-post","status-publish","format-standard","category-announcements","cs-entry","cs-video-wrap"],"apple_news_notices":[],"jetpack_publicize_connections":[],"jetpack_shortlink":"https:\/\/wp.me\/sb3IC4-16967","jetpack-related-posts":[{"id":323,"url":"https:\/\/adamchandler.me\/blog\/2009\/05\/20\/inbox-zero-the-basics\/","url_meta":{"origin":16967,"position":0},"title":"\u2605 Inbox Zero (The Basics)","author":"Adam Chandler","date":"May 20, 2009","format":false,"excerpt":"Back in February, I wrote a post titled, \"Basics of Email Organization\" and I promised to post more soon but I never did. Yeah, I'm a bad person but I doubt thousands of people are waiting around for my next post in anticipation for all of the joy & productivity\u2026","rel":"","context":"In &quot;Ideas&quot;","block_context":{"text":"Ideas","link":"https:\/\/adamchandler.me\/blog\/category\/ideas\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":5749,"url":"https:\/\/adamchandler.me\/blog\/2016\/04\/26\/my-car-spring-detailing-northeast-auto-hookset-nh\/","url_meta":{"origin":16967,"position":1},"title":"My Car: Spring Detailing @ Northeast Auto, Hookset, NH","author":"Adam Chandler","date":"April 26, 2016","format":false,"excerpt":"Twice a year, I get my car professionally detailed. Northeast Auto has been the best at making my car look really amazing. Kris has this eye for detail that I\u2019ve never experienced at another detailer. From 7:30AM to 3:30PM, he detailed my car inside and out, did paint-correction on some\u2026","rel":"","context":"In &quot;My Car&quot;","block_context":{"text":"My Car","link":"https:\/\/adamchandler.me\/blog\/category\/my-car\/"},"img":{"alt_text":"Blue Ridge Parkway, Asheville NC","src":"https:\/\/i0.wp.com\/farm2.staticflickr.com\/1712\/26486413731_d43378e4b5_z.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/farm2.staticflickr.com\/1712\/26486413731_d43378e4b5_z.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/farm2.staticflickr.com\/1712\/26486413731_d43378e4b5_z.jpg?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":1589,"url":"https:\/\/adamchandler.me\/blog\/2013\/06\/29\/review-tired-hands-guillemot-draft\/","url_meta":{"origin":16967,"position":2},"title":"\u2605 Review: Tired Hands Guillemot (Draft)","author":"Adam Chandler","date":"June 29, 2013","format":false,"excerpt":"\u00a0 3.5 \u00a0\u00a0\u00a0AROMA\u00a07\/10\u00a0\u00a0\u00a0APPEARANCE\u00a03\/5\u00a0\u00a0\u00a0TASTE\u00a07\/10\u00a0\u00a0\u00a0PALATE\u00a04\/5\u00a0\u00a0\u00a0OVERALL\u00a014\/20 adamjackson\u00a0(1326)\u00a0- Canaan, New Hampshire, USA - JUN 27, 2013 Pours a dense dark black. Small off white head barley, roasted malts and currants. There\u2019s some weird fruit notes Taste is sweet with raspberry and white wine. Grapey and sweet nice acetic taste good mouth feel. Nice and\u2026","rel":"","context":"In &quot;Reviews&quot;","block_context":{"text":"Reviews","link":"https:\/\/adamchandler.me\/blog\/category\/reviews\/"},"img":{"alt_text":"Tired Hands Guillemot","src":"https:\/\/i0.wp.com\/farm6.staticflickr.com\/5487\/9157284573_f05dbbeb80_z.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":8122,"url":"https:\/\/adamchandler.me\/blog\/2019\/11\/27\/my-car-autocross-in-the-mk7-golf-r\/","url_meta":{"origin":16967,"position":3},"title":"My Car: Autocross in the MK7 Golf R","author":"Adam Chandler","date":"November 27, 2019","format":false,"excerpt":"I\u2019ve been wanting to do Autocross since picking up the Golf R in August of 2015, yeah it\u2019s been 4 years with the car and still no thought in my mind of replacing it any time soon. \u201cMost of you will be having your first and last autocross today\u201d said\u2026","rel":"","context":"In &quot;My Car&quot;","block_context":{"text":"My Car","link":"https:\/\/adamchandler.me\/blog\/category\/my-car\/"},"img":{"alt_text":"SCCNH Auto Cross at Loudon October 13th 2019","src":"https:\/\/i0.wp.com\/live.staticflickr.com\/65535\/48902279013_f6fdcb6214_c.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/live.staticflickr.com\/65535\/48902279013_f6fdcb6214_c.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/live.staticflickr.com\/65535\/48902279013_f6fdcb6214_c.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/live.staticflickr.com\/65535\/48902279013_f6fdcb6214_c.jpg?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":2619,"url":"https:\/\/adamchandler.me\/blog\/2015\/02\/05\/founders-cbs-2014-on-draft-worthy-burger\/","url_meta":{"origin":16967,"position":4},"title":"\u2605 Founder&#8217;s CBS 2014 on Draft @ Worthy Burger","author":"Adam Chandler","date":"February 5, 2015","format":false,"excerpt":"It\u2019s been a while since I\u2019ve had this beer. I remember in early 2013 trading for a bottle of CBS and opening it in the Summer with my friend Chris. We did KBS 2011 alongside CBS and CBS still came out to be the winner. I was pretty disappointed that\u2026","rel":"","context":"In &quot;Beer Tastings&quot;","block_context":{"text":"Beer Tastings","link":"https:\/\/adamchandler.me\/blog\/category\/beer\/beer-tastings\/"},"img":{"alt_text":"Founder's CBS 2014 @ Worthy Burger","src":"https:\/\/i0.wp.com\/farm9.staticflickr.com\/8597\/16450737802_1d8b05ca76_z.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":4710,"url":"https:\/\/adamchandler.me\/blog\/2015\/06\/09\/rants-geico-please-leave-me-alone\/","url_meta":{"origin":16967,"position":5},"title":"Rants: Geico, please leave me alone","author":"Adam Chandler","date":"June 9, 2015","format":false,"excerpt":"I switched Auto Insurance companies last week. State Farm was charging me $1400 a year for Auto Insurance. I\u2019ve never had a speeding ticket, accident or any moving violation outside of a few paid-up parking tickets. Yet, State Farm had me in a very high price bracket. They said I\u2019m\u2026","rel":"","context":"In &quot;Rants&quot;","block_context":{"text":"Rants","link":"https:\/\/adamchandler.me\/blog\/category\/rants\/"},"img":{"alt_text":"Geico Spam","src":"https:\/\/i0.wp.com\/farm1.staticflickr.com\/435\/18458313528_ca87f76de6_z.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/farm1.staticflickr.com\/435\/18458313528_ca87f76de6_z.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/farm1.staticflickr.com\/435\/18458313528_ca87f76de6_z.jpg?resize=525%2C300&ssl=1 1.5x"},"classes":[]}],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/adamchandler.me\/blog\/wp-json\/wp\/v2\/posts\/16967","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/adamchandler.me\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/adamchandler.me\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/adamchandler.me\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/adamchandler.me\/blog\/wp-json\/wp\/v2\/comments?post=16967"}],"version-history":[{"count":3,"href":"https:\/\/adamchandler.me\/blog\/wp-json\/wp\/v2\/posts\/16967\/revisions"}],"predecessor-version":[{"id":16970,"href":"https:\/\/adamchandler.me\/blog\/wp-json\/wp\/v2\/posts\/16967\/revisions\/16970"}],"wp:attachment":[{"href":"https:\/\/adamchandler.me\/blog\/wp-json\/wp\/v2\/media?parent=16967"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/adamchandler.me\/blog\/wp-json\/wp\/v2\/categories?post=16967"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/adamchandler.me\/blog\/wp-json\/wp\/v2\/tags?post=16967"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}