{"id":420,"date":"2018-10-28T22:53:53","date_gmt":"2018-10-28T22:53:53","guid":{"rendered":"http:\/\/www.projectimmerse.com\/?p=420"},"modified":"2020-06-17T09:34:45","modified_gmt":"2020-06-17T09:34:45","slug":"data-structures-and-algorithms-in-javascript-stacks","status":"publish","type":"post","link":"https:\/\/www.projectimmerse.com\/blog\/data-structures-and-algorithms-in-javascript-stacks\/","title":{"rendered":"Data Structures and Algorithms in Javascript &#8211; Stacks"},"content":{"rendered":"<p>Javascript is a language most developers either overestimate or underestimate &#8211; whatever the case, this is what makes Javascript special. Javascript is a dynamic language, it&#8217;s abstract and for this reason also prone to instability. Javascript in the last decade has provided developers with a place for inventiveness and innovation. <\/p>\n<p>Lately I&#8217;ve been immersing myself into mathematics, physics, chemistry, philosophy and even linguistics. I found my premise to still hold true &#8211; that the universe is at a state of decay, of disorder, and mutation. It&#8217;s exactly because of mutation that we are able to manage disorder and chaos, so in a sense we are constantly trying to keep up with ourselves as we simultaneously and inevitably push forward into the future.<\/p>\n<p><!--more--><\/p>\n<p>Alright this post isn&#8217;t really about the natural sciences and the subject of reality. This post is about a fundamental concept in computer science called &#8220;Stacks&#8221;. However, I have presented in the aforementioned introduction that Javascript provides a dynamic environment for experimentation &#8211; instead of setting up a physical lab, I can create a virtual lab so to speak. A virtual lab in which I, the programmer can construct virtual atoms, virtual space time and matter and run formulas against them. <\/p>\n<p>Back to &#8220;Stacks&#8221;. Stacks have multiple meanings in programming &#8211; depending on the context in which one uses it. &#8220;Stacks&#8221; in lower level programming describe a static memory allocation stored in a computers RAM. In higher level programming, a stack is a container of objects that are inserted and removed according to the last-in first-out (LIFO) principle. The best way to illustrate this is through an array object. <\/p>\n<p>How is this related to the natural sciences though? As we shall see the fundamental building blocks that&#8217;s used to construct virtual objects (such as an array) is the same building blocks that construct reality. I&#8217;ll dedicate an entire post to this once I&#8217;ve aggregated my thoughts on math, physics and philosophy. <\/p>\n<p>On to &#8220;Stacks&#8221;. Let&#8217;s use a palindrome to illustrate a basic algorithm. A palindrome is a word that when reversed will spell the same word. Simple enough. <\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n\r\n\/* Stacks! *\/\r\n\r\n\/* functions: push, pop, peek, length *\/\r\n\r\nvar letters = &#x5B;];\r\n\r\nvar word = &quot;racecar&quot;;\r\n\r\nvar rword = &quot;&quot;;\r\n\r\n\/\/ put letters of word into the stack\r\nfor (var i = 0; i &lt; word.length; i++) {\r\n  letters.push(word&#x5B;i]);\r\n}\r\n\r\n\/\/ pop off the stack in reverse order\r\nfor (var i = 0; i &lt; word.length; i++) {\r\n  rword += letters.pop();\r\n}\r\n\r\nif (rword === word) {\r\n  console.log(word + &quot; is a palindrome&quot;);\r\n} else {\r\n  console.log(word + &quot; is not a palindrome&quot;);\r\n}\r\n\r\n<\/pre>\n<h2>Arrays<\/h2>\n<p>I&#8217;m breaking this down line by line since this program is quite short. We are simply initializing an array literal here, the variable or memory here is called &#8220;letters&#8221;.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n\r\nvar letters = &#x5B;];\r\n\r\n<\/pre>\n<h2>String<\/h2>\n<p>Now we want to initialize another variable called &#8220;word&#8221;, this is the word we want to run through our program &#8211; our test subject. The &#8220;rword&#8221; variable is another string, but an empty one &#8211; we can imagine this to be an empty test tube in chemistry. <\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n\r\nvar word = &quot;racecar&quot;;\r\n\r\nvar rword = &quot;&quot;;\r\n\r\n<\/pre>\n<p>Now on to our data structure:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n\r\n\/\/ put letters of word into the stack\r\nfor (var i = 0; i &lt; word.length; i++) {\r\n  letters.push(word&#x5B;i]);\r\n}\r\n\r\n\/\/ pop off the stack in reverse order\r\nfor (var i = 0; i &lt; word.length; i++) {\r\n  rword += letters.pop();\r\n}\r\n\r\n<\/pre>\n<p>Yeah, there&#8217;s a lot going on here &#8211; I wasn&#8217;t intending on dropping all this in one shot but it was necessary to keep these two operations together. This operation is called a &#8220;for loop&#8221; and this data structure is used in every programming language, even C, C++ and Java. <\/p>\n<p>In the first &#8220;for loop&#8221; we are grabbing each letter of &#8220;word&#8221; and inserting them once by one into the letters array (remember letters = []).<\/p>\n<p>So letters at this point would look like this:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n\r\n&#x5B;r, a, c, e, c, a, r]\r\n\r\n<\/pre>\n<p>We&#8217;ve manipulate our original array and the aforementioned array is the array we&#8217;ll be working with &#8211; [r, a, c, e, c, a, r]. <\/p>\n<p>To reverse the word now we&#8217;ll be using the pop() method to grab the <strong>last<\/strong> letter (or element) in the array. Again using the for loop &#8211; were going backwards this time using the pop() method. <\/p>\n<h2>Concatenation<\/h2>\n<p>Using concatenation we construct the &#8220;rword&#8221; variable &#8211; remember that empty test tube? Well were going to attached the letters one by one in reverse fashion.<\/p>\n<p>Finally we can run an if-else statement to check whether the word is a palindrome or not.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n\r\nif (rword === word) {\r\n  console.log(word + &quot; is a palindrome&quot;);\r\n\r\n} else {\r\n\r\n  console.log(word + &quot; is not a palindrome&quot;);\r\n\r\n}\r\n\r\n<\/pre>\n<p>In this case we find that &#8220;racecar&#8221; is indeed a palindrome &#8211; it spells the same both backward and in reverse order. I know what you&#8217;re thinking &#8211; we could to this by simply looking at it. We&#8217;ve created a virtual lab here &#8211; and that&#8217;s a powerful thing. I&#8217;ll let you ponder that a bit, I&#8217;m not going to spell everything out. If you&#8217;re following along though &#8211; stick around for more of my experiments. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Javascript is a language most developers either overestimate or underestimate &#8211; whatever the case, this is what makes Javascript special. Javascript is a dynamic language, it&#8217;s abstract and for this reason also prone to instability. Javascript in the last decade has provided developers with a place for inventiveness and innovation. Lately I&#8217;ve been immersing myself &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.projectimmerse.com\/blog\/data-structures-and-algorithms-in-javascript-stacks\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Data Structures and Algorithms in Javascript &#8211; Stacks&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":1165,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[56],"tags":[],"class_list":["post-420","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programming-fundamentals"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Data Structures and Algorithms in Javascript - Stacks - Project Immerse<\/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:\/\/www.projectimmerse.com\/blog\/data-structures-and-algorithms-in-javascript-stacks\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Data Structures and Algorithms in Javascript - Stacks - Project Immerse\" \/>\n<meta property=\"og:description\" content=\"Javascript is a language most developers either overestimate or underestimate &#8211; whatever the case, this is what makes Javascript special. Javascript is a dynamic language, it&#8217;s abstract and for this reason also prone to instability. Javascript in the last decade has provided developers with a place for inventiveness and innovation. Lately I&#8217;ve been immersing myself &hellip; Continue reading &quot;Data Structures and Algorithms in Javascript &#8211; Stacks&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.projectimmerse.com\/blog\/data-structures-and-algorithms-in-javascript-stacks\/\" \/>\n<meta property=\"og:site_name\" content=\"Project Immerse\" \/>\n<meta property=\"article:published_time\" content=\"2018-10-28T22:53:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-06-17T09:34:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2018\/10\/data-structures-and-algorithms-javascript.png\" \/>\n\t<meta property=\"og:image:width\" content=\"750\" \/>\n\t<meta property=\"og:image:height\" content=\"750\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Alex Mercer\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Alex Mercer\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/data-structures-and-algorithms-in-javascript-stacks\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/data-structures-and-algorithms-in-javascript-stacks\\\/\"},\"author\":{\"name\":\"Alex Mercer\",\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/#\\\/schema\\\/person\\\/c53f2864be524ee6fa08a7e4800dd1e5\"},\"headline\":\"Data Structures and Algorithms in Javascript &#8211; Stacks\",\"datePublished\":\"2018-10-28T22:53:53+00:00\",\"dateModified\":\"2020-06-17T09:34:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/data-structures-and-algorithms-in-javascript-stacks\\\/\"},\"wordCount\":888,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/data-structures-and-algorithms-in-javascript-stacks\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/10\\\/data-structures-and-algorithms-javascript.png\",\"articleSection\":[\"Programming Fundamentals\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/data-structures-and-algorithms-in-javascript-stacks\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/data-structures-and-algorithms-in-javascript-stacks\\\/\",\"url\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/data-structures-and-algorithms-in-javascript-stacks\\\/\",\"name\":\"Data Structures and Algorithms in Javascript - Stacks - Project Immerse\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/data-structures-and-algorithms-in-javascript-stacks\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/data-structures-and-algorithms-in-javascript-stacks\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/10\\\/data-structures-and-algorithms-javascript.png\",\"datePublished\":\"2018-10-28T22:53:53+00:00\",\"dateModified\":\"2020-06-17T09:34:45+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/#\\\/schema\\\/person\\\/c53f2864be524ee6fa08a7e4800dd1e5\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/data-structures-and-algorithms-in-javascript-stacks\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/data-structures-and-algorithms-in-javascript-stacks\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/data-structures-and-algorithms-in-javascript-stacks\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/10\\\/data-structures-and-algorithms-javascript.png\",\"contentUrl\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/10\\\/data-structures-and-algorithms-javascript.png\",\"width\":750,\"height\":750,\"caption\":\"Data Structures and Algorithms 1 - Stacks\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/data-structures-and-algorithms-in-javascript-stacks\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Data Structures and Algorithms in Javascript &#8211; Stacks\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/\",\"name\":\"Project Immerse\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/#\\\/schema\\\/person\\\/c53f2864be524ee6fa08a7e4800dd1e5\",\"name\":\"Alex Mercer\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/alex-mercer-author-150x150.png\",\"url\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/alex-mercer-author-150x150.png\",\"contentUrl\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/alex-mercer-author-150x150.png\",\"caption\":\"Alex Mercer\"},\"description\":\"Alex Mercer is a writer and contributor at Project Immerse, covering web design, WordPress, web development, SEO, digital strategy, emerging technology, and the evolving world of the web. His work focuses on practical ideas, useful tools, and approachable guidance that help creators, developers, and business owners build better digital experiences. Alex writes with a hands-on, curiosity-driven approach, exploring both established web practices and new technologies shaping how websites are designed, built, and discovered.\",\"sameAs\":[\"https:\\\/\\\/www.projectimmerse.com\"],\"url\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/author\\\/projectimmerse\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Data Structures and Algorithms in Javascript - Stacks - Project Immerse","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.projectimmerse.com\/blog\/data-structures-and-algorithms-in-javascript-stacks\/","og_locale":"en_US","og_type":"article","og_title":"Data Structures and Algorithms in Javascript - Stacks - Project Immerse","og_description":"Javascript is a language most developers either overestimate or underestimate &#8211; whatever the case, this is what makes Javascript special. Javascript is a dynamic language, it&#8217;s abstract and for this reason also prone to instability. Javascript in the last decade has provided developers with a place for inventiveness and innovation. Lately I&#8217;ve been immersing myself &hellip; Continue reading \"Data Structures and Algorithms in Javascript &#8211; Stacks\"","og_url":"https:\/\/www.projectimmerse.com\/blog\/data-structures-and-algorithms-in-javascript-stacks\/","og_site_name":"Project Immerse","article_published_time":"2018-10-28T22:53:53+00:00","article_modified_time":"2020-06-17T09:34:45+00:00","og_image":[{"width":750,"height":750,"url":"https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2018\/10\/data-structures-and-algorithms-javascript.png","type":"image\/png"}],"author":"Alex Mercer","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Alex Mercer","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.projectimmerse.com\/blog\/data-structures-and-algorithms-in-javascript-stacks\/#article","isPartOf":{"@id":"https:\/\/www.projectimmerse.com\/blog\/data-structures-and-algorithms-in-javascript-stacks\/"},"author":{"name":"Alex Mercer","@id":"https:\/\/www.projectimmerse.com\/blog\/#\/schema\/person\/c53f2864be524ee6fa08a7e4800dd1e5"},"headline":"Data Structures and Algorithms in Javascript &#8211; Stacks","datePublished":"2018-10-28T22:53:53+00:00","dateModified":"2020-06-17T09:34:45+00:00","mainEntityOfPage":{"@id":"https:\/\/www.projectimmerse.com\/blog\/data-structures-and-algorithms-in-javascript-stacks\/"},"wordCount":888,"commentCount":0,"image":{"@id":"https:\/\/www.projectimmerse.com\/blog\/data-structures-and-algorithms-in-javascript-stacks\/#primaryimage"},"thumbnailUrl":"https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2018\/10\/data-structures-and-algorithms-javascript.png","articleSection":["Programming Fundamentals"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.projectimmerse.com\/blog\/data-structures-and-algorithms-in-javascript-stacks\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.projectimmerse.com\/blog\/data-structures-and-algorithms-in-javascript-stacks\/","url":"https:\/\/www.projectimmerse.com\/blog\/data-structures-and-algorithms-in-javascript-stacks\/","name":"Data Structures and Algorithms in Javascript - Stacks - Project Immerse","isPartOf":{"@id":"https:\/\/www.projectimmerse.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.projectimmerse.com\/blog\/data-structures-and-algorithms-in-javascript-stacks\/#primaryimage"},"image":{"@id":"https:\/\/www.projectimmerse.com\/blog\/data-structures-and-algorithms-in-javascript-stacks\/#primaryimage"},"thumbnailUrl":"https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2018\/10\/data-structures-and-algorithms-javascript.png","datePublished":"2018-10-28T22:53:53+00:00","dateModified":"2020-06-17T09:34:45+00:00","author":{"@id":"https:\/\/www.projectimmerse.com\/blog\/#\/schema\/person\/c53f2864be524ee6fa08a7e4800dd1e5"},"breadcrumb":{"@id":"https:\/\/www.projectimmerse.com\/blog\/data-structures-and-algorithms-in-javascript-stacks\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.projectimmerse.com\/blog\/data-structures-and-algorithms-in-javascript-stacks\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.projectimmerse.com\/blog\/data-structures-and-algorithms-in-javascript-stacks\/#primaryimage","url":"https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2018\/10\/data-structures-and-algorithms-javascript.png","contentUrl":"https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2018\/10\/data-structures-and-algorithms-javascript.png","width":750,"height":750,"caption":"Data Structures and Algorithms 1 - Stacks"},{"@type":"BreadcrumbList","@id":"https:\/\/www.projectimmerse.com\/blog\/data-structures-and-algorithms-in-javascript-stacks\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.projectimmerse.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Data Structures and Algorithms in Javascript &#8211; Stacks"}]},{"@type":"WebSite","@id":"https:\/\/www.projectimmerse.com\/blog\/#website","url":"https:\/\/www.projectimmerse.com\/blog\/","name":"Project Immerse","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.projectimmerse.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.projectimmerse.com\/blog\/#\/schema\/person\/c53f2864be524ee6fa08a7e4800dd1e5","name":"Alex Mercer","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2026\/09\/alex-mercer-author-150x150.png","url":"https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2026\/09\/alex-mercer-author-150x150.png","contentUrl":"https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2026\/09\/alex-mercer-author-150x150.png","caption":"Alex Mercer"},"description":"Alex Mercer is a writer and contributor at Project Immerse, covering web design, WordPress, web development, SEO, digital strategy, emerging technology, and the evolving world of the web. His work focuses on practical ideas, useful tools, and approachable guidance that help creators, developers, and business owners build better digital experiences. Alex writes with a hands-on, curiosity-driven approach, exploring both established web practices and new technologies shaping how websites are designed, built, and discovered.","sameAs":["https:\/\/www.projectimmerse.com"],"url":"https:\/\/www.projectimmerse.com\/blog\/author\/projectimmerse\/"}]}},"_links":{"self":[{"href":"https:\/\/www.projectimmerse.com\/blog\/wp-json\/wp\/v2\/posts\/420","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.projectimmerse.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.projectimmerse.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.projectimmerse.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.projectimmerse.com\/blog\/wp-json\/wp\/v2\/comments?post=420"}],"version-history":[{"count":7,"href":"https:\/\/www.projectimmerse.com\/blog\/wp-json\/wp\/v2\/posts\/420\/revisions"}],"predecessor-version":[{"id":441,"href":"https:\/\/www.projectimmerse.com\/blog\/wp-json\/wp\/v2\/posts\/420\/revisions\/441"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.projectimmerse.com\/blog\/wp-json\/wp\/v2\/media\/1165"}],"wp:attachment":[{"href":"https:\/\/www.projectimmerse.com\/blog\/wp-json\/wp\/v2\/media?parent=420"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.projectimmerse.com\/blog\/wp-json\/wp\/v2\/categories?post=420"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.projectimmerse.com\/blog\/wp-json\/wp\/v2\/tags?post=420"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}