{"id":31,"date":"2009-09-02T13:01:05","date_gmt":"2009-09-02T12:01:05","guid":{"rendered":"https:\/\/wade.one\/blog\/?p=31"},"modified":"2009-09-02T13:01:05","modified_gmt":"2009-09-02T12:01:05","slug":"another-day-another-group-of-php-funness","status":"publish","type":"post","link":"https:\/\/wade.one\/blog\/2009\/09\/02\/another-day-another-group-of-php-funness\/","title":{"rendered":"Another day, another group of PHP &#8220;funness&#8221;"},"content":{"rendered":"<p>PHP and Serializing&#8230;don&#8217;t try and store the result in a plain text file, there&#8217;s just a chance you may end up storing NUL so when you go to read a line, you&#8217;ll end up only reading part of it (the serialized object had a stack trace in it from an exception.)<\/p>\n<p>Incidentally, don&#8217;t try and debug code that works &#8211; it&#8217;s always a good idea to read the code that is storing the data you think is wrong before trying to debug the output, I couldn&#8217;t work out why I wasn&#8217;t logging somethin only for certain exceptions, then eventually I checked the logging line and realised, for that particular exception I had decided to do a manual log entry rather than throw and catch an exception.<\/p>\n<p>And now here&#8217;s a cat:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-32 alignnone\" title=\"funny-pictures-cat-is-a-gargoyle\" src=\"https:\/\/wade.one\/blog\/wp-content\/uploads\/2009\/09\/funny-pictures-cat-is-a-gargoyle.jpg\" alt=\"funny-pictures-cat-is-a-gargoyle\" width=\"499\" height=\"324\" \/><\/p>\n<p>Courtesy of <a href=\"http:\/\/icanhascheezburger.com\/\" target=\"_blank\">ICanHazCheezburger<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>PHP and Serializing&#8230;don&#8217;t try and store the result in a plain text file, there&#8217;s just a chance you may end up storing NUL so when you go to read a line, you&#8217;ll end up only reading part of it (the serialized object had a stack trace in it from an exception.) Incidentally, don&#8217;t try and &#8230; <a href=\"https:\/\/wade.one\/blog\/2009\/09\/02\/another-day-another-group-of-php-funness\/\" class=\"more-link\">Read More<span class=\"screen-reader-text\"> &#8220;Another day, another group of PHP &#8220;funness&#8221;&#8221;<\/span> &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[13,14],"tags":[],"class_list":["post-31","post","type-post","status-publish","format-standard","hentry","category-programming","category-random-stuff"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Another day, another group of PHP &quot;funness&quot; - wade.one<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wade.one\/blog\/2009\/09\/02\/another-day-another-group-of-php-funness\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Another day, another group of PHP &quot;funness&quot; - wade.one\" \/>\n<meta property=\"og:description\" content=\"PHP and Serializing&#8230;don&#8217;t try and store the result in a plain text file, there&#8217;s just a chance you may end up storing NUL so when you go to read a line, you&#8217;ll end up only reading part of it (the serialized object had a stack trace in it from an exception.) Incidentally, don&#8217;t try and ... Read More &quot;Another day, another group of PHP &#8220;funness&#8221;&quot; &raquo;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wade.one\/blog\/2009\/09\/02\/another-day-another-group-of-php-funness\/\" \/>\n<meta property=\"og:site_name\" content=\"wade.one\" \/>\n<meta property=\"article:published_time\" content=\"2009-09-02T12:01:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/wade.one\/blog\/wp-content\/uploads\/2009\/09\/funny-pictures-cat-is-a-gargoyle.jpg\" \/>\n<meta name=\"author\" content=\"Wade\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@wadewomersley\" \/>\n<meta name=\"twitter:site\" content=\"@wadewomersley\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Wade\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/2009\\\/09\\\/02\\\/another-day-another-group-of-php-funness\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/2009\\\/09\\\/02\\\/another-day-another-group-of-php-funness\\\/\"},\"author\":{\"name\":\"Wade\",\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/#\\\/schema\\\/person\\\/f9dedd948575256e77a44aa1417f63de\"},\"headline\":\"Another day, another group of PHP &#8220;funness&#8221;\",\"datePublished\":\"2009-09-02T12:01:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/2009\\\/09\\\/02\\\/another-day-another-group-of-php-funness\\\/\"},\"wordCount\":150,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/#\\\/schema\\\/person\\\/8b4739f8f8bb2cff5d792d4b8779fcc3\"},\"image\":{\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/2009\\\/09\\\/02\\\/another-day-another-group-of-php-funness\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/wade.one\\\/blog\\\/wp-content\\\/uploads\\\/2009\\\/09\\\/funny-pictures-cat-is-a-gargoyle.jpg\",\"articleSection\":[\"Programming\",\"Random Stuff\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/wade.one\\\/blog\\\/2009\\\/09\\\/02\\\/another-day-another-group-of-php-funness\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/2009\\\/09\\\/02\\\/another-day-another-group-of-php-funness\\\/\",\"url\":\"https:\\\/\\\/wade.one\\\/blog\\\/2009\\\/09\\\/02\\\/another-day-another-group-of-php-funness\\\/\",\"name\":\"Another day, another group of PHP \\\"funness\\\" - wade.one\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/2009\\\/09\\\/02\\\/another-day-another-group-of-php-funness\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/2009\\\/09\\\/02\\\/another-day-another-group-of-php-funness\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/wade.one\\\/blog\\\/wp-content\\\/uploads\\\/2009\\\/09\\\/funny-pictures-cat-is-a-gargoyle.jpg\",\"datePublished\":\"2009-09-02T12:01:05+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/2009\\\/09\\\/02\\\/another-day-another-group-of-php-funness\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/wade.one\\\/blog\\\/2009\\\/09\\\/02\\\/another-day-another-group-of-php-funness\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/2009\\\/09\\\/02\\\/another-day-another-group-of-php-funness\\\/#primaryimage\",\"url\":\"https:\\\/\\\/wade.one\\\/blog\\\/wp-content\\\/uploads\\\/2009\\\/09\\\/funny-pictures-cat-is-a-gargoyle.jpg\",\"contentUrl\":\"https:\\\/\\\/wade.one\\\/blog\\\/wp-content\\\/uploads\\\/2009\\\/09\\\/funny-pictures-cat-is-a-gargoyle.jpg\",\"width\":\"499\",\"height\":\"324\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/2009\\\/09\\\/02\\\/another-day-another-group-of-php-funness\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/wade.one\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Another day, another group of PHP &#8220;funness&#8221;\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/wade.one\\\/blog\\\/\",\"name\":\"wade.one\",\"description\":\"wade womersley - york based software engineer\",\"publisher\":{\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/#\\\/schema\\\/person\\\/8b4739f8f8bb2cff5d792d4b8779fcc3\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/wade.one\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/#\\\/schema\\\/person\\\/8b4739f8f8bb2cff5d792d4b8779fcc3\",\"name\":\"Wade Womersley\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/02\\\/200px.png\",\"url\":\"https:\\\/\\\/wade.one\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/02\\\/200px.png\",\"contentUrl\":\"https:\\\/\\\/wade.one\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/02\\\/200px.png\",\"width\":202,\"height\":200,\"caption\":\"Wade Womersley\"},\"logo\":{\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/02\\\/200px.png\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/#\\\/schema\\\/person\\\/f9dedd948575256e77a44aa1417f63de\",\"name\":\"Wade\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/94100ef7361b8aaac136b852c8df93bdd10942165a122d5c56e4466cc403e5d9?s=96&d=retro&r=pg\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/94100ef7361b8aaac136b852c8df93bdd10942165a122d5c56e4466cc403e5d9?s=96&d=retro&r=pg\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/94100ef7361b8aaac136b852c8df93bdd10942165a122d5c56e4466cc403e5d9?s=96&d=retro&r=pg\",\"caption\":\"Wade\"},\"url\":\"https:\\\/\\\/wade.one\\\/blog\\\/author\\\/wade\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Another day, another group of PHP \"funness\" - wade.one","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:\/\/wade.one\/blog\/2009\/09\/02\/another-day-another-group-of-php-funness\/","og_locale":"en_GB","og_type":"article","og_title":"Another day, another group of PHP \"funness\" - wade.one","og_description":"PHP and Serializing&#8230;don&#8217;t try and store the result in a plain text file, there&#8217;s just a chance you may end up storing NUL so when you go to read a line, you&#8217;ll end up only reading part of it (the serialized object had a stack trace in it from an exception.) Incidentally, don&#8217;t try and ... Read More \"Another day, another group of PHP &#8220;funness&#8221;\" &raquo;","og_url":"https:\/\/wade.one\/blog\/2009\/09\/02\/another-day-another-group-of-php-funness\/","og_site_name":"wade.one","article_published_time":"2009-09-02T12:01:05+00:00","og_image":[{"url":"https:\/\/wade.one\/blog\/wp-content\/uploads\/2009\/09\/funny-pictures-cat-is-a-gargoyle.jpg","type":"","width":"","height":""}],"author":"Wade","twitter_card":"summary_large_image","twitter_creator":"@wadewomersley","twitter_site":"@wadewomersley","twitter_misc":{"Written by":"Wade","Estimated reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/wade.one\/blog\/2009\/09\/02\/another-day-another-group-of-php-funness\/#article","isPartOf":{"@id":"https:\/\/wade.one\/blog\/2009\/09\/02\/another-day-another-group-of-php-funness\/"},"author":{"name":"Wade","@id":"https:\/\/wade.one\/blog\/#\/schema\/person\/f9dedd948575256e77a44aa1417f63de"},"headline":"Another day, another group of PHP &#8220;funness&#8221;","datePublished":"2009-09-02T12:01:05+00:00","mainEntityOfPage":{"@id":"https:\/\/wade.one\/blog\/2009\/09\/02\/another-day-another-group-of-php-funness\/"},"wordCount":150,"commentCount":0,"publisher":{"@id":"https:\/\/wade.one\/blog\/#\/schema\/person\/8b4739f8f8bb2cff5d792d4b8779fcc3"},"image":{"@id":"https:\/\/wade.one\/blog\/2009\/09\/02\/another-day-another-group-of-php-funness\/#primaryimage"},"thumbnailUrl":"https:\/\/wade.one\/blog\/wp-content\/uploads\/2009\/09\/funny-pictures-cat-is-a-gargoyle.jpg","articleSection":["Programming","Random Stuff"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/wade.one\/blog\/2009\/09\/02\/another-day-another-group-of-php-funness\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/wade.one\/blog\/2009\/09\/02\/another-day-another-group-of-php-funness\/","url":"https:\/\/wade.one\/blog\/2009\/09\/02\/another-day-another-group-of-php-funness\/","name":"Another day, another group of PHP \"funness\" - wade.one","isPartOf":{"@id":"https:\/\/wade.one\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/wade.one\/blog\/2009\/09\/02\/another-day-another-group-of-php-funness\/#primaryimage"},"image":{"@id":"https:\/\/wade.one\/blog\/2009\/09\/02\/another-day-another-group-of-php-funness\/#primaryimage"},"thumbnailUrl":"https:\/\/wade.one\/blog\/wp-content\/uploads\/2009\/09\/funny-pictures-cat-is-a-gargoyle.jpg","datePublished":"2009-09-02T12:01:05+00:00","breadcrumb":{"@id":"https:\/\/wade.one\/blog\/2009\/09\/02\/another-day-another-group-of-php-funness\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wade.one\/blog\/2009\/09\/02\/another-day-another-group-of-php-funness\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/wade.one\/blog\/2009\/09\/02\/another-day-another-group-of-php-funness\/#primaryimage","url":"https:\/\/wade.one\/blog\/wp-content\/uploads\/2009\/09\/funny-pictures-cat-is-a-gargoyle.jpg","contentUrl":"https:\/\/wade.one\/blog\/wp-content\/uploads\/2009\/09\/funny-pictures-cat-is-a-gargoyle.jpg","width":"499","height":"324"},{"@type":"BreadcrumbList","@id":"https:\/\/wade.one\/blog\/2009\/09\/02\/another-day-another-group-of-php-funness\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/wade.one\/blog\/"},{"@type":"ListItem","position":2,"name":"Another day, another group of PHP &#8220;funness&#8221;"}]},{"@type":"WebSite","@id":"https:\/\/wade.one\/blog\/#website","url":"https:\/\/wade.one\/blog\/","name":"wade.one","description":"wade womersley - york based software engineer","publisher":{"@id":"https:\/\/wade.one\/blog\/#\/schema\/person\/8b4739f8f8bb2cff5d792d4b8779fcc3"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wade.one\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":["Person","Organization"],"@id":"https:\/\/wade.one\/blog\/#\/schema\/person\/8b4739f8f8bb2cff5d792d4b8779fcc3","name":"Wade Womersley","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/wade.one\/blog\/wp-content\/uploads\/2015\/02\/200px.png","url":"https:\/\/wade.one\/blog\/wp-content\/uploads\/2015\/02\/200px.png","contentUrl":"https:\/\/wade.one\/blog\/wp-content\/uploads\/2015\/02\/200px.png","width":202,"height":200,"caption":"Wade Womersley"},"logo":{"@id":"https:\/\/wade.one\/blog\/wp-content\/uploads\/2015\/02\/200px.png"}},{"@type":"Person","@id":"https:\/\/wade.one\/blog\/#\/schema\/person\/f9dedd948575256e77a44aa1417f63de","name":"Wade","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/94100ef7361b8aaac136b852c8df93bdd10942165a122d5c56e4466cc403e5d9?s=96&d=retro&r=pg","url":"https:\/\/secure.gravatar.com\/avatar\/94100ef7361b8aaac136b852c8df93bdd10942165a122d5c56e4466cc403e5d9?s=96&d=retro&r=pg","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/94100ef7361b8aaac136b852c8df93bdd10942165a122d5c56e4466cc403e5d9?s=96&d=retro&r=pg","caption":"Wade"},"url":"https:\/\/wade.one\/blog\/author\/wade\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":1167,"url":"https:\/\/wade.one\/blog\/2026\/03\/31\/serverless-is-great-until-you-need-to-debug-it-at-2-a-m\/","url_meta":{"origin":31,"position":0},"title":"Serverless Is Great Until You Need to Debug It at 2 a.m.","author":"Wade","date":"March 31, 2026","format":false,"excerpt":"I still like serverless, but the tradeoff is obvious when something breaks at 2 a.m. The architecture is easy to ship and harder to reason about when you need logs, context, and a fast path to the real failure.","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/wade.one\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1183,"url":"https:\/\/wade.one\/blog\/2026\/04\/15\/the-real-cost-of-fancy-cloud-abstractions\/","url_meta":{"origin":31,"position":1},"title":"The Real Cost of Fancy Cloud Abstractions","author":"","date":"April 15, 2026","format":false,"excerpt":"Fancy cloud abstractions often look like they remove complexity, but a lot of the time they just move it somewhere harder to see. That matters when something breaks and you need to debug it or hand it over to someone else.","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/wade.one\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":764,"url":"https:\/\/wade.one\/blog\/2015\/02\/07\/standardising-logging-and-parallelisation-in-multiple-languages\/","url_meta":{"origin":31,"position":2},"title":"Standardising logging and parallelisation in multiple languages","author":"Wade","date":"February 7, 2015","format":false,"excerpt":"Over the last few days I've been working on interfaces to use across multiple programming languages to standardise how some things are done. This stemmed from a requirement to allow processing to be dealt with in any language from any other language. People do this all the time, it's nothing\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/wade.one\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/wade.one\/blog\/wp-content\/uploads\/2015\/02\/source-code-583537_640.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/wade.one\/blog\/wp-content\/uploads\/2015\/02\/source-code-583537_640.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/wade.one\/blog\/wp-content\/uploads\/2015\/02\/source-code-583537_640.jpg?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":1168,"url":"https:\/\/wade.one\/blog\/2026\/04\/01\/why-i-still-like-serverless-for-small-teams\/","url_meta":{"origin":31,"position":3},"title":"Why I Still Like Serverless for Small Teams","author":"","date":"April 1, 2026","format":false,"excerpt":"Serverless has real tradeoffs, but for small teams I still think it usually wins. The operational overhead stays low, the first version ships faster, and the mistakes are easier to afford early on.","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/wade.one\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1186,"url":"https:\/\/wade.one\/blog\/2026\/04\/18\/why-logging-is-still-a-product-feature\/","url_meta":{"origin":31,"position":4},"title":"Why Logging Is Still a Product Feature","author":"","date":"April 18, 2026","format":false,"excerpt":"Good logging is not just for engineers. It reduces support time, shortens incident diagnosis, and makes a system much easier to trust when something goes wrong.","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/wade.one\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1109,"url":"https:\/\/wade.one\/blog\/2023\/03\/26\/php-8-2-vs-7-4\/","url_meta":{"origin":31,"position":5},"title":"PHP 8.2 vs 7.4","author":"Wade","date":"March 26, 2023","format":false,"excerpt":"PHP is a widely used programming language that has been evolving rapidly in recent years. PHP 8.2 is the latest release, which came out on November 25th, 2021. This version brings several improvements, new features, and bug fixes, making it more efficient and secure than PHP 7.4. In this blog\u2026","rel":"","context":"In &quot;PHP&quot;","block_context":{"text":"PHP","link":"https:\/\/wade.one\/blog\/category\/php\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/posts\/31","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/comments?post=31"}],"version-history":[{"count":0,"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/posts\/31\/revisions"}],"wp:attachment":[{"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/media?parent=31"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/categories?post=31"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/tags?post=31"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}