{"componentChunkName":"component---theme-news-core-src-templates-news-item-query-ts","path":"/news/all-new-site-again/","result":{"data":{"site":{"siteMetadata":{"title":"TouHou.FM"}},"newsPost":{"__typename":"MdxNewsPost","id":"9bbf04c8-488e-5a98-aa76-855b59c4f8b4","excerpt":"So, looking back at the last post date, 2017, and 2015 before that, lets shed some light into the site. Things have progressed\nalbeit slowly…","body":"function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n \"slug\": \"all-new-site-again\",\n \"title\": \"All new site (again)\",\n \"date\": \"2021-02-06T00:00:00.000Z\",\n \"author\": \"Thyra\",\n \"tags\": [\"Site\"]\n};\nvar layoutProps = {\n _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n var components = _ref.components,\n props = _objectWithoutProperties(_ref, [\"components\"]);\n\n return mdx(MDXLayout, _extends({}, layoutProps, props, {\n components: components,\n mdxType: \"MDXLayout\"\n }), mdx(\"p\", null, \"So, looking back at the last post date, 2017, and 2015 before that, lets shed some light into the site. Things have progressed\\nalbeit slowly.\"), mdx(\"p\", null, \"I\\u2019ve been busy with all kinds of things, hence why I mostly kept the radio \\u201Cworking as it is\\u201D. However, the site now\\nruns new software. Both the \\u201Csite\\u201D as well as the \\u201Cradio\\u201D part. This will improve stability and performance. In fact quite\\na lot has changed.\"), mdx(\"p\", null, \"First of all, I\\u2019ve embraced Kubernetes. TouHou.FM is not the only thing being ran on my server and I noticed that the shift\\nto Kubernetes isn\\u2019t actually that bad. This has also changed my view on Docker and containers. I tried to containerize\\nthe radio in the past. I decided to drop the idea back then and go back to running it as native OS packages. However,\\nafter playing about with Kubernetes and noticing how easy it makes to manage infrastructure, scaling and also upgrading, a/b\\ntesting, I was sold. So over the next couple of months, I will be migrating nearly everything to containers, including the radio.\"), mdx(\"p\", null, \"And the start of that is by tackling the site and putting this on a Docker. In fact, not only is it going on Docker, the site\\nis also moving away from the old CMS. While Concrete5 is in fact very nice, I\\u2019m not so fond of PHP these days anymore. In\\nfact, I want to move to mostly static sites for now as far as they can. So the new site will serve most content statically.\\nThis should mean that there will be no break-ins possible which would allowing hosting of arbitrary data and effectively turn\\nto a spam host. Now, truly static it won\\u2019t be, because there is some data inherently non-static. These will be accessible\\nthrough a separate API which JavaScript will be interacting with. This means that song ratings, playlist overview and song\\nrequests would become a possibility again. Also creating an API server is easier in efficient languages. So the new site\\nwill be part static, and start API driven to fetch the dynamic parts later.\"));\n}\n;\nMDXContent.isMDXComponent = true;","slug":"/news/all-new-site-again/","title":"All new site (again)","tags":["Site"],"author":"Thyra","date":"February 06, 2021"},"previous":{"__typename":"MdxNewsPost","id":"59f0a00e-486b-53f6-a66b-ac1add91d0b9","excerpt":"After a long postpone, we finally have a way to explore the music database! This means that you can search for songs and\nrequest those songs…","slug":"/news/new-music-browsing-system/","title":"New music browsing system","date":"February 19, 2015"},"next":null},"pageContext":{"id":"9bbf04c8-488e-5a98-aa76-855b59c4f8b4","previousId":"59f0a00e-486b-53f6-a66b-ac1add91d0b9"}},"staticQueryHashes":["3649515864"]}