<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Faircamp &amp;mdash; sknob’s fediblog</title>
    <link>https://noblogo.org/sknob/tag:Faircamp</link>
    <description></description>
    <pubDate>Fri, 25 Sep 2026 01:59:11 +0000</pubDate>
    <item>
      <title>🎵 So Much, by Traiken and sknob</title>
      <link>https://noblogo.org/sknob/so-much-by-traiken-and-sknob</link>
      <description>&lt;![CDATA[#song #music #musique #collaboration in #english&#xA;&#xA;I am so proud and delighted to be able to say I collaborated on a song with the one and only @Traiken@mastodon.social!&#xA;!--more--&#xA;As I wrote in the liner notes on my #Faircamp site:&#xA;&#xA;  I stumbled on a poem by Traiken on Mastodon which really spoke to me, and before I knew it, I was writing a melody to it. I sent a rough arrangement to Traiken hoping he wouldn’t be offended. Thankfully, he was thrilled, went on to gloriously flesh out the arrangement in his inimitable style, and this is the result.&#xA;&#xA;Traiken’s music is instantly recognizable, both due to his signature sound and his unique compositional style. In fact, I’m such a big fan that I was moved to review his album Heartless Angels on NHAM!&#xA;&#xA;That’s why I felt some trepidation when I sent him my demo, and why I’m so glad that our respective styles and universes melded so well and So Much!&#xA;&#xA;If you haven’t heard it yet, I hope you’ll give it a proper listen up until it’s massive, rousing finale, and then tell the whole wide world about it!&#xA;&#xA;iframe loading=&#34;lazy&#34; src=&#34;https://sknob.fr/faircamp/so-much/embed/all/&#34; style=&#34;border: none; height: 49.6px; min-width: 480px;&#34; title=&#34;Audio player widget for &amp;quot;So Much&amp;quot;&#34;/iframe&#xA;&#xA;Abstract texture which looks like vertical paint smears, in mostly bright pink hues, but with a blue smear towards the right.&#xA;&#xA;span class=&#34;elsewhere&#34;Elsewhere: Music | Videos | Mastodonbra href=&#34;a-message-to-llm-users&#34;img src=&#34;https://sknob.fr/img/blog/noai.jpg&#34; alt=&#34;The letters AI crossed out in a red circle&#34;/a/span&#xD;&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p><a href="/sknob/tag:song" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">song</span></a> <a href="/sknob/tag:music" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">music</span></a> <a href="/sknob/tag:musique" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">musique</span></a> <a href="/sknob/tag:collaboration" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">collaboration</span></a> in <a href="/sknob/tag:english" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">english</span></a></p>

<p>I am so proud and delighted to be able to say I collaborated on a song with the one and only <a href="https://noblogo.org/@/Traiken@mastodon.social" class="u-url mention" rel="nofollow">@<span>Traiken@mastodon.social</span></a>!

As I wrote in the <a href="https://sknob.fr/faircamp/so-much/#more" rel="nofollow">liner notes</a> on my <a href="/sknob/tag:Faircamp" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Faircamp</span></a> site:</p>

<blockquote><p>I stumbled on <a href="https://mastodon.social/@Traiken/117108470848497785" rel="nofollow">a poem by Traiken on Mastodon</a> which really spoke to me, and before I knew it, I was writing a melody to it. I sent a rough arrangement to Traiken hoping he wouldn’t be offended. Thankfully, he was thrilled, went on to gloriously flesh out the arrangement in his inimitable style, and this is the result.</p></blockquote>

<p><a href="https://mirlo.space/traiken/" rel="nofollow">Traiken</a>’s music is instantly recognizable, both due to his signature sound <em>and</em> his unique compositional style. In fact, I’m such a big fan that I was moved to <a href="https://nham.co.uk/2025/12/heartless-angels-by-traiken-2/" rel="nofollow">review his album <em>Heartless Angels</em> on NHAM</a>!</p>

<p>That’s why I felt some trepidation when I sent him my demo, and why I’m so glad that our respective styles and universes melded so well and <a href="https://sknob.fr/faircamp/so-much/" rel="nofollow">So Much</a>!</p>

<p>If you haven’t heard it yet, I hope you’ll give it a proper listen up until it’s massive, rousing finale, and then tell the whole wide world about it!</p>

<iframe src="https://sknob.fr/faircamp/so-much/embed/all/" style="border: none; height: 49.6px; min-width: 480px;"></iframe>

<p><a href="https://sknob.fr/faircamp/so-much/" rel="nofollow"><img src="https://sknob.fr/img/blog/somuch.jpg" alt="Abstract texture which looks like vertical paint smears, in mostly bright pink hues, but with a blue smear towards the right."></a></p>

<p><span class="elsewhere">Elsewhere: <a href="https://sknob.fr/music" rel="nofollow">Music</a> | <a href="https://makertube.net/a/sknob/video-channels" rel="nofollow">Videos</a> | <a href="https://mamot.fr/@sknob" rel="nofollow">Mastodon</a><br><a href="a-message-to-llm-users" rel="nofollow"><img src="https://sknob.fr/img/blog/noai.jpg" alt="The letters AI crossed out in a red circle"></a></span></p>
]]></content:encoded>
      <guid>https://noblogo.org/sknob/so-much-by-traiken-and-sknob</guid>
      <pubDate>Mon, 14 Sep 2026 05:42:02 +0000</pubDate>
    </item>
    <item>
      <title>🎵 What Will It Take, by sknot</title>
      <link>https://noblogo.org/sknob/what-will-it-take-by-sknot</link>
      <description>&lt;![CDATA[#song #music #musique #collaboration in #english&#xA;&#xA;How did this whole sknot business come about you ask? Spoiler alert: don’t read if you want things to stay shrouded in mystery!&#xA;!--more--&#xA;Back in June, I wrote a rather angry song, and I guess I felt hesitant to release it after the more positive albeit bittersweet songs on my recently released offbeat album...&#xA;&#xA;I joked on Mastodon that I could release it under a pseudonym, and immediately thought of &#34;sknot&#34;, i.e. “not sknob“ maybe (I don’t pronounce the k in sknob or sknot, but you do you, I don’t mind either way.)&#xA;&#xA;Plus it reminded me of a silly lyric that has been living rent-free in my head after hearing it played live only once on TV over 40 years ago:&#xA;&#xA;  She said your nose is running honey/I said sorry, but it’s not&#xA;&#xA;(I searched for that song/live video yesterday and found it! And yes, I remembered the lyrics and melody correctly, because my brain is weird...)&#xA;&#xA;ANYWAY, before talking myself out of it, I bought the sknot.fr domain name, whipped up a #Faircamp site, asked Ordos Mk.0 (@ordosmarkzero@ravenation.club) to master my mix, and then published the song there.&#xA;&#xA;I also created a new artist under my Mirlo account, a great feature by the way, and published the song there also. I set it up so that all proceeds go to @mirlo@musician.social if you buy it, a small but heartfelt gesture of support.&#xA;&#xA;&lt;iframe&#xA;    src=&#34;https://mirlo.space/widget/track/31487&#34;&#xA;    style=&#34;width:100%; height: 230px; border:0; border-radius: 4px; overflow:hidden;&#34;&#xA;    sandbox=&#34;allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts&#34;&#xA;    /iframe&#xA;&#xA;But wait, there’s more!&#xA;&#xA;To my utter delight, musician and remixer extraordinaire (and all around delightful person) C.Circo (@CCirco@ravenation.club) gloriously remixed “What Will It Take“, and took it where no sknob or sknot had gone before!&#xA;&#xA;iframe loading=&#34;lazy&#34; src=&#34;https://sknot.fr/what-will-it-take/embed/2/&#34; style=&#34;border: none; height: 49.6px; min-width: 480px;&#34; title=&#34;Audio player widget for &amp;quot;What Will It Take (C.Circo Remix)&amp;quot;&#34;/iframe&#xA;&#xA;And there you have it. &#xA;&#xA;Will sknot release more songs? Who knows! &#xA;&#xA;(Although I’m told he has some half-written lyrics lying around, so I guess it’s at least a possibility.)&#xA;&#xA;Black and white heavily stylized halftone silhouette of a head, with the word sknot just below the nose&#xA;&#xA;span class=&#34;elsewhere&#34;Elsewhere: Music | Videos | Mastodonbra href=&#34;a-message-to-llm-users&#34;img src=&#34;https://sknob.fr/img/blog/noai.jpg&#34; alt=&#34;The letters AI crossed out in a red circle&#34;/a/span&#xD;&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p><a href="/sknob/tag:song" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">song</span></a> <a href="/sknob/tag:music" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">music</span></a> <a href="/sknob/tag:musique" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">musique</span></a> <a href="/sknob/tag:collaboration" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">collaboration</span></a> in <a href="/sknob/tag:english" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">english</span></a></p>

<p>How did this whole <em>sknot</em> business come about you ask? Spoiler alert: don’t read if you want things to stay shrouded in mystery!

Back in June, I wrote a rather angry song, and I guess I felt hesitant to release it after the more positive albeit bittersweet songs on my recently released <a href="new-album-offbeat" rel="nofollow">offbeat</a> album...</p>

<p><a href="https://mamot.fr/@sknob/116849184291241748" rel="nofollow">I joked on Mastodon</a> that I could release it under a pseudonym, and immediately thought of “sknot”, i.e. “not sknob“ maybe (I don’t pronounce the k in sknob or sknot, but you do you, I don’t mind either way.)</p>

<p>Plus it reminded me of a silly lyric that has been living rent-free in my head after hearing it played live only once on TV over 40 years ago:</p>

<blockquote><p><em>She said your nose is running honey/I said sorry, but it’s not</em></p></blockquote>

<p>(I searched for that song/live video yesterday <a href="https://youtube.com/watch?v=H6tj1810CnI" rel="nofollow">and found it</a>! And yes, I remembered the lyrics and melody correctly, because my <a href="https://mamot.fr/@sknob/117258857973106016" rel="nofollow">brain is weird</a>...)</p>

<p>ANYWAY, before talking myself out of it, I bought the <a href="https://sknot.fr" rel="nofollow">sknot.fr</a> domain name, whipped up a <a href="/sknob/tag:Faircamp" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Faircamp</span></a> site, asked Ordos Mk.0 (<a href="https://noblogo.org/@/ordosmarkzero@ravenation.club" class="u-url mention" rel="nofollow">@<span>ordosmarkzero@ravenation.club</span></a>) to master my mix, and then <a href="https://sknot.fr/what-will-it-take/" rel="nofollow">published the song there</a>.</p>

<p>I also created a new artist under my <a href="https://mirlo.space" rel="nofollow">Mirlo</a> account, a great feature by the way, and <a href="https://mirlo.space/sknot/release/what-will-it-take" rel="nofollow">published the song there also</a>. I set it up so that all proceeds go to <a href="https://noblogo.org/@/mirlo@musician.social" class="u-url mention" rel="nofollow">@<span>mirlo@musician.social</span></a> if you buy it, a small but heartfelt gesture of support.</p>

<iframe src="https://mirlo.space/widget/track/31487" style="width:100%; height: 230px; border:0; border-radius: 4px; overflow:hidden;"></iframe>

<p>But wait, there’s more!</p>

<p>To my utter delight, musician and remixer extraordinaire (and all around delightful person) C.Circo (<a href="https://noblogo.org/@/CCirco@ravenation.club" class="u-url mention" rel="nofollow">@<span>CCirco@ravenation.club</span></a>) gloriously <a href="https://sknot.fr/what-will-it-take/" rel="nofollow">remixed “What Will It Take“</a>, and took it where no sknob or sknot had gone before!</p>

<iframe src="https://sknot.fr/what-will-it-take/embed/2/" style="border: none; height: 49.6px; min-width: 480px;"></iframe>

<p>And there you have it.</p>

<p>Will sknot release more songs? Who knows!</p>

<p>(Although I’m told he has some half-written lyrics lying around, so I guess it’s at least a possibility.)</p>

<p><img src="https://sknob.fr/img/blog/sknot.jpg" alt="Black and white heavily stylized halftone silhouette of a head, with the word sknot just below the nose"></p>

<p><span class="elsewhere">Elsewhere: <a href="https://sknob.fr/music" rel="nofollow">Music</a> | <a href="https://makertube.net/a/sknob/video-channels" rel="nofollow">Videos</a> | <a href="https://mamot.fr/@sknob" rel="nofollow">Mastodon</a><br><a href="a-message-to-llm-users" rel="nofollow"><img src="https://sknob.fr/img/blog/noai.jpg" alt="The letters AI crossed out in a red circle"></a></span></p>
]]></content:encoded>
      <guid>https://noblogo.org/sknob/what-will-it-take-by-sknot</guid>
      <pubDate>Sun, 13 Sep 2026 08:33:57 +0000</pubDate>
    </item>
    <item>
      <title>sknob/music v5 Release Notes</title>
      <link>https://noblogo.org/sknob/sknob-music-v5-release-notes</link>
      <description>&lt;![CDATA[#blogpost #music #coding&#xA;&#xA;WARNING: Long geeky post. Proceed with caution. &#xA;&#xA;Long story short, the code underlying my music site was nearly 15 years old, and woefully obsolete.&#xA;&#xA;I&#39;d only been meaning to update it for about a decade...&#xA;!--more--&#xA;Some background&#xA;&#xA;You’ll find some embarrassing old posts about it on my mothballed blog:&#xA;&#xA;The Making of sknob | MUSIC version 3&#xA;sknob | MUSIC v4&#xA;Un blaireau chez les geeks&#xA;&#xA;For reasons I can’t divulge yet, I got back into the coding saddle recently, and so I decided it was finally time to give it a shot.&#xA;&#xA;While I wanted to keep all the song data in XML + XSL because I just love it (look, no code!), I was ready to redo everything else from scratch.&#xA;&#xA;My site still worked fine with a really old version of jQuery and a JQuery plugin for the XML transform step, but any attempt to move to a recent version of jQuery failed miserably, which was the final nail in the jQuery coffin. Good riddance. And while I would have loved to get rid of javascript altogether, that’s sadly not a real option if you&#39;re dealing with a lot of audio. Putting ~180 native audio players in a web page is not a good idea (I tried, don’t ask).&#xA;&#xA;Because yes, I wanted to keep everything on a single-page.&#xA;&#xA;Nitty-gritty &#xA;&#xA;I started with a bare-bones design, which I ended up keeping more or less as is, because it’s kind of a relief after nearly 15 years of visual excess. I can always spruce it up later if needed.&#xA;I wrote clean CSS and simple javascript (the kind I’m likely to understand if I ever want to update or change what I did down the road).&#xA;I replaced ~800 lines of super-compact jQuery code with about 450 lines of verbose, commented and airily-formatted plain javascript.&#xA;I optimized image handling (the image sizes were all over the place, and lazy loading didn’t even exist back then). &#xA;Last but not least, out of laziness (and incompetence), and after Google announced they wanted to remove XSLT support from Chrome, I ended up doing the XML transform server-side in less than 10 lines of PHP (which I had never used before).&#xA;&#xA;details&#xA;summaryGory details about line endings and HTML entities. Click to view at your own risk./summaryI needed to do two things to the HTML generated by the XML/XSL (same as on the previous site): Change &#xA;I laboriously implemented both in javascript, but l then discovered I could convert the line endings with a single line of CSS:&#xA;&#xA;As for decoding the HTML entities, it was all happening in the background since no lyrics are displayed on page load, but while mucking around, I noticed that it took a few seconds for javascript to do the job with something like &#xA;So I tried doing it in PHP on the transformed XML data with &#xA;Yes, I’m not a real geek. I only play one on the Internet. Anyway, back to our regularly scheduled programming... &#xA;/details&#xA;Altogether, the speed increase is dramatic.&#xA;&#xA;Before:&#xA;Total requests: 274&#xA;Size: 9,205.46 kB&#xA;Transferred Size: 5,672.55 kB&#xA;Time: 32.05 seconds&#xA;Non blocking time: 31.73 seconds&#xA;After: &#xA;Total requests: 9&#xA;Size: 460.27 kB&#xA;Transferred Size: 159.36 kB&#xA;Time: 0.11 seconds&#xA;Non blocking time: 0.11 seconds&#xA;Yes, I know...&#xA;&#xA;(To be fair, the old site loaded fast enough, and then the song data was processed and a ton of images were loaded, well, as fast as hardware and bandwidth allowed...)&#xA;&#xA;New and improved!&#xA;&#xA;Feature-wise, the main addition is a filter/search function. I’m not sure how useful it is, but it’s there. After waffling some, I opted to only search through the titles and the on-screen metadata, not including the lyrics and other background info. I spent a lot of time testing endless variations on that one feature, and in the end, it probably accounts for about a 1/4 of the javascript code...&#xA;&#xA;UPDATE: I’ve since improved the search!&#xA;&#xA;The rest of the code basically handles audio and interface behavior to give the user some hopefully useful tools and feedback to navigate through the long list of songs.&#xA;&#xA;details&#xA;summaryGory details about the audio player.../summaryIn version 4, I jumped through complicated hoops to assemble playlists for each album into javascript arrays, and then spliced and pushed and popped stuff as needed.&#xA;&#xA;This time around, the code just says play the song the user clicked on, and then keep playing the &#xA;The remaining code basically just toggles CSS classes to show the lyrics for the song that’s /details&#xA;The design may be simple, but it still rather unconventional for an audio site, and I tend to really sweat the details (#OCD), so everything is quite deliberate, for better or for worse.&#xA;&#xA;I won’t describe what everything does and how everything works here. You’ll just have to experiment to find out.&#xA;&#xA;A few final notes nonetheless:&#xA;&#xA;You can now click on the images to see larger versions of the album covers and song illustrations (when they’re available).&#xA;I added some keyboard shortcuts, which are documented in the &#34;about&#34; link at the top of the page, which also contains links to recent off-site music-related endeavors...&#xA;Fun fact: I use the system audio controls, albeit with a CSS blend-mode to make them...blend in. Not so fun fact: Chrome doesn’t want to blend in.&#xA;In case it wasn’t obvious, you can also pause songs by clicking on their titles.&#xA;I added backward-compatibility for handling the URLs with query strings I’ve published in the wild over the last ~15 years.&#xA;And I can now link to albums, not just to songs...&#xA;The site is responsive, and honors the system’s light/dark mode settings.&#xA;I’ll be cleaning up some of the “backstory” content over time, when I feel like it (it was hidden behind a tab and largely forgotten on the previous version of the site).&#xA;The Themes view from the previous version is gone. I may or may not reintroduce it in some guise or another at some point in the future.&#xA;The previous version of the site should still be available, but I won’t be updating it any longer.&#xA;TBC ?&#xA;&#xA;details&#xA;summaryGory details about about a nasty CSS rendering bug in Firefox.../summaryI’ve been using this CSS technique by @aral@mastodon.ar.al to implement dark mode on various sites, including this blog. It’s really clever. It basically just uses the CSS &#xA;Until I realized to my dismay that Firefox (and possibly Chrome, I don’t remember now) doesn’t seem to like CSS filters and blends in dark mode, and simply refuses to render... fixed divs (like the audio player). They simply disappear! I spent a ton of time researching and trying to fix or skirt the problem, but I finally gave up and coded my dark mode CSS the old-fashioned way. Sigh.&#xA;/details&#xA;Phew!&#xA;&#xA;So there you have it, only ~15 years in the making: the fifth major version of my canonical, official music site and archive.&#xA;&#xA;In a nutshell, it’s basically the same (somewhat sanitized) song data sandwiched between a shiny new interface and one hundred percent new code.&#xA;&#xA;Maybe someday I’ll ditch it altogether and just go with a #Faircamp site for everything. The main thing holding me back is having to find all the hi-res versions of the ~180 songs, many of which are decades old, and the size requirements that would ensue. So for now, you can visit my Faircamp site for some extra content, alternate mixes, collaborations, etc.&#xA;&#xA;I guess this post is really a note to my future self, but If you’ve actually read this far, thank you, and if you find any bugs or odd behavior, please let me know!&#xA;&#xA;Oh, and I nearly forgot! Here is the link to the site: &#xA;&#xA;https://sknob.fr/music/&#xA;---&#xA;Further reading:&#xA;sknob/music v5.1 Release Notes&#xA;sknob/music v5.1.2 Release Notes, RSS edition&#xA;sknob/music v5.2 Release Notes, Radio sknob Edition!&#xA;sknob/music v5.2.1 Release Notes, OG:image Edition!&#xA;sknob/music v5.3.0 Release Notes, Search Edition!&#xA;sknob/music v5.3.1 Release Notes, mediaSession Edition!&#xA;sknob/music v5.4.0 Release Notes, Fetch Edition!&#xA;sknob/music v5.5 Release Notes, Hide and Seek Edition!&#xA;&#xA;Screen capture of the new version of the site in light mode&#xA;&#xA;Screen capture of the new version of the site in dark mode&#xA;&#xA;span class=&#34;elsewhere&#34;Elsewhere: Music | Videos | Mastodonbra href=&#34;a-message-to-llm-users&#34;img src=&#34;https://sknob.fr/img/blog/noai.jpg&#34; alt=&#34;The letters AI crossed out in a red circle&#34;/a/span&#xD;&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p><a href="/sknob/tag:blogpost" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">blogpost</span></a> <a href="/sknob/tag:music" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">music</span></a> <a href="/sknob/tag:coding" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">coding</span></a></p>

<p>WARNING: Long geeky post. Proceed with caution.</p>

<p>Long story short, the code underlying my music site was nearly 15 years old, and woefully obsolete.</p>

<p>I&#39;d only been meaning to update it for about a decade...
</p>

<h3 id="some-background">Some background</h3>

<p>You’ll find some embarrassing old posts about it on my mothballed blog:</p>
<ul><li><a href="https://sknob.fr/sknoblog/2011/12/31/the-making-of-vincent-knobil-music-version-3/" rel="nofollow">The Making of sknob | MUSIC version 3</a></li>
<li><a href="https://sknob.fr/usknoblog/2016/03/05/sknob-music-v4/" rel="nofollow">sknob | MUSIC v4</a></li>
<li><a href="https://sknob.fr/sknoblog/2022/12/21/un-blaireau-chez-les-geeks/" rel="nofollow">Un blaireau chez les geeks</a></li></ul>

<p>For reasons I can’t divulge yet, I got back into the coding saddle recently, and so I decided it was finally time to give it a shot.</p>

<p>While I wanted to keep all the song data in XML + XSL because I just <em>love</em> it (<a href="https://sknob.fr/sknoblog/2011/12/31/the-making-of-vincent-knobil-music-version-3/#:~:text=THE%20HOLY.%20FUCKING.%20GRAIL:%20XSLT." rel="nofollow">look, no code!</a>), I was ready to redo everything else from scratch.</p>

<p>My site still worked fine with a really old version of jQuery and a JQuery plugin for the XML transform step, but any attempt to move to a recent version of jQuery failed miserably, which was the final nail in the jQuery coffin. Good riddance. And while I would have loved to get rid of javascript altogether, that’s sadly not a real option if you&#39;re dealing with a lot of audio. Putting ~180 native audio players in a web page is not a good idea (I tried, don’t ask).</p>

<p>Because yes, I wanted to keep everything on a single-page.</p>

<h3 id="nitty-gritty">Nitty-gritty</h3>
<ul><li>I started with a bare-bones design, which I ended up keeping more or less as is, because it’s kind of a relief after nearly 15 years of visual excess. I can always spruce it up later if needed.</li>
<li>I wrote clean CSS and simple javascript (the kind I’m likely to understand if I ever want to update or change what I did down the road).</li>
<li>I replaced ~800 lines of super-compact jQuery code with about 450 lines of verbose, commented and airily-formatted plain javascript.</li>
<li>I optimized image handling (the image sizes were all over the place, and lazy loading didn’t even exist back then).</li>
<li>Last but not least, out of laziness (and incompetence), and after Google announced they wanted to remove XSLT support from Chrome, I ended up doing the XML transform server-side in less than 10 lines of PHP (which I had never used before).</li></ul>

<p><details>
<summary><em>Gory details about line endings and HTML entities. Click to view at your own risk.</em></summary>I needed to do two things to the HTML generated by the XML/XSL (same as on the previous site): Change <code>\n</code> new lines in the lyrics <code>CDATA</code> to <code>&lt;br&gt;</code> tags, and decode HTML entities.</p>

<p>I laboriously implemented both in javascript, but l then discovered I could convert the line endings with a single line of CSS:
<code>white-space: pre-line</code> !</p>

<p>As for decoding the HTML entities, it was all happening in the background since no lyrics are displayed on page load, but while mucking around, I noticed that it took a few seconds for javascript to do the job with something like <code>item.innerHTML.replace(/&amp;lt;/g, &#34;&lt;&#34;).replace(/&amp;gt;/g, &#34;&gt;&#34;)</code>.</p>

<p>So I tried doing it in PHP on the transformed XML data with <code>html_entity_decode</code> and it worked instantly.</p>

<p>Yes, I’m not a real geek. I only play one on the Internet. Anyway, back to our regularly scheduled programming...
</details>
Altogether, the speed increase is <em>dramatic</em>.</p>

<p>Before:</p>

<pre><code>Total requests: 274
Size: 9,205.46 kB
Transferred Size: 5,672.55 kB
Time: 32.05 seconds
Non blocking time: 31.73 seconds
</code></pre>

<p>After:</p>

<pre><code>Total requests: 9
Size: 460.27 kB
Transferred Size: 159.36 kB
Time: 0.11 seconds
Non blocking time: 0.11 seconds
</code></pre>

<p>Yes, I know...</p>

<p>(To be fair, the old site loaded fast enough, and then the song data was processed and a ton of images were loaded, well, as fast as hardware and bandwidth allowed...)</p>

<h3 id="new-and-improved">New and improved!</h3>

<p>Feature-wise, the main addition is a filter/search function. I’m not sure how useful it is, but it’s there. After waffling some, I opted to only search through the titles and the on-screen metadata, not including the lyrics and other background info. I spent a lot of time testing endless variations on that one feature, and in the end, it probably accounts for about a ¼ of the javascript code...</p>

<p><em>UPDATE: I’ve since <a href="sknob-music-v5-3-0-release-notes-search-edition" rel="nofollow">improved the search</a>!</em></p>

<p>The rest of the code basically handles audio and interface behavior to give the user some hopefully useful tools and feedback to navigate through the long list of songs.</p>

<p><details>
<summary><em>Gory details about the audio player...</em></summary>In version 4, I jumped through complicated hoops to assemble playlists for each album into javascript arrays, and then <em>spliced</em> and <em>pushed</em> and <em>popped</em> stuff as needed.</p>

<p>This time around, the code just says <em>play the song the user clicked on</em>, and then keep playing the <code>nextElementSibling</code> in the current <code>&lt;ul&gt;</code> until you run out.</p>

<p>The remaining code basically just toggles CSS classes to show the lyrics for the song that’s <code>.playing</code>, and turns appropriate interface elements on and off, etc.
</details>
The design may be simple, but it still rather unconventional for an audio site, and I tend to really sweat the details (<a href="/sknob/tag:OCD" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">OCD</span></a>), so everything is quite deliberate, for better or for worse.</p>

<p>I won’t describe what everything does and how everything works here. You’ll just have to experiment to find out.</p>

<p>A few final notes nonetheless:</p>
<ul><li>You can now click on the images to see larger versions of the album covers and song illustrations (when they’re available).</li>
<li>I added some keyboard shortcuts, which are documented in the “about” link at the top of the page, which also contains links to recent off-site music-related endeavors...</li>
<li>Fun fact: I use the system audio controls, albeit with a CSS blend-mode to make them...blend in. Not so fun fact: Chrome doesn’t want to blend in.</li>
<li>In case it wasn’t obvious, you can also <em>pause</em> songs by clicking on their titles.</li>
<li>I added backward-compatibility for handling the URLs with query strings I’ve published in the wild over the last ~15 years.</li>
<li>And I can now link to albums, not just to songs...</li>
<li>The site is responsive, and <a href="https://mamot.fr/@sknob/114801643818143762" rel="nofollow">honors the system’s light/dark mode settings</a>.</li>
<li>I’ll be cleaning up some of the “backstory” content over time, when I feel like it (it was hidden behind a tab and largely forgotten on the previous version of the site).</li>
<li>The Themes view from the previous version is gone. I may or may not reintroduce it in some guise or another at some point in the future.</li>
<li>The previous version of the site should <a href="https://sknob.fr/music/index.html" rel="nofollow">still be available</a>, but I won’t be updating it any longer.</li>
<li>TBC ?</li></ul>

<p><details>
<summary><em>Gory details about about a nasty CSS rendering bug in Firefox...</em></summary>I’ve been using <a href="https://ar.al/2021/08/24/implementing-dark-mode-in-a-handful-of-lines-of-css-with-css-filters/" rel="nofollow">this CSS technique</a> by <a href="https://noblogo.org/@/aral@mastodon.ar.al" class="u-url mention" rel="nofollow">@<span>aral@mastodon.ar.al</span></a> to implement dark mode on various sites, including this blog. It’s really clever. It basically just uses the CSS <code>filter</code> property to invert everything, and then inverts images back to normal. I would never have implemented dark mode on version 4 of my music site without it. Works flawlessly.</p>

<p>Until I realized to my dismay that Firefox (and possibly Chrome, I don’t remember now) doesn’t seem to like CSS filters and blends in dark mode, and simply refuses to render... fixed divs (like the audio player). They simply disappear! I spent a ton of time researching and trying to fix or skirt the problem, but I finally gave up and coded my dark mode CSS the old-fashioned way. Sigh.
</details></p>

<h3 id="phew">Phew!</h3>

<p>So there you have it, only ~15 years in the making: the fifth major version of my canonical, official music site and archive.</p>

<p>In a nutshell, it’s basically the same (somewhat sanitized) song data sandwiched between a shiny new interface and one hundred percent new code.</p>

<p>Maybe someday I’ll ditch it altogether and just go with a <a href="/sknob/tag:Faircamp" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Faircamp</span></a> site for everything. The main thing holding me back is having to find all the hi-res versions of the ~180 songs, many of which are <em>decades</em> old, and the size requirements that would ensue. So for now, you can visit my <a href="https://sknob.fr/faircamp/" rel="nofollow">Faircamp site</a> for some extra content, alternate mixes, collaborations, etc.</p>

<p>I guess this post is really a note to my future self, but If you’ve actually read this far, thank you, and if you find any bugs or odd behavior, <a href="https://mamot.fr/@sknob" rel="nofollow">please let me know</a>!</p>

<p>Oh, and I nearly forgot! Here is the link to the site:</p>

<p><a href="https://sknob.fr/music/" rel="nofollow">https://sknob.fr/music/</a></p>

<hr>

<p><strong>Further reading:</strong>
<a href="sknob-music-v5-1-x-release-notes" rel="nofollow">sknob/music v5.1 Release Notes</a>
<a href="sknob-music-v5-1-2-release-notes-rss-edition" rel="nofollow">sknob/music v5.1.2 Release Notes, RSS edition</a>
<a href="sknob-music-v5-2-release-notes-radio-sknob-edition" rel="nofollow">sknob/music v5.2 Release Notes, Radio sknob Edition!</a>
<a href="sknob-music-v5-3-release-notes-og-image-edition" rel="nofollow">sknob/music v5.2.1 Release Notes, OG:image Edition!</a>
<a href="sknob-music-v5-3-0-release-notes-search-edition" rel="nofollow">sknob/music v5.3.0 Release Notes, Search Edition!</a>
<a href="sknob-music-v5-3-1-release-notes-mediasession-edition" rel="nofollow">sknob/music v5.3.1 Release Notes, mediaSession Edition!</a>
<a href="sknob-music-v5-4-0-release-notes-fetch-edition" rel="nofollow">sknob/music v5.4.0 Release Notes, Fetch Edition!</a>
<a href="sknob-music-v5-5-release-notes-hide-and-seek-edition" rel="nofollow">sknob/music v5.5 Release Notes, Hide and Seek Edition!</a></p>

<p><img src="https://sknob.fr/img/blog/sknobmusic5light.jpg" alt="Screen capture of the new version of the site in light mode"></p>

<p><img src="https://sknob.fr/img/blog/sknobmusic5dark.jpg" alt="Screen capture of the new version of the site in dark mode"></p>

<p><span class="elsewhere">Elsewhere: <a href="https://sknob.fr/music" rel="nofollow">Music</a> | <a href="https://makertube.net/a/sknob/video-channels" rel="nofollow">Videos</a> | <a href="https://mamot.fr/@sknob" rel="nofollow">Mastodon</a><br><a href="a-message-to-llm-users" rel="nofollow"><img src="https://sknob.fr/img/blog/noai.jpg" alt="The letters AI crossed out in a red circle"></a></span></p>
]]></content:encoded>
      <guid>https://noblogo.org/sknob/sknob-music-v5-release-notes</guid>
      <pubDate>Wed, 27 Aug 2025 07:45:00 +0000</pubDate>
    </item>
    <item>
      <title>Je n’en pense pas moins</title>
      <link>https://noblogo.org/sknob/je-nen-pense-pas-moins</link>
      <description>&lt;![CDATA[#billet #fedivers #oisivetéRadicale en #français &#xA;&#xA;J’ai généralement un avis sur ce qui se passe, ici et ailleurs, mais c’est rare que je commente l’actualité (j’ai déjà donné, notamment sur un blog de gauchistes qui connut son quart d’heure de gloire, et j’ai souvent immortalisé ce que je pensais en #chanson span class=&#34;emoji&#34;😄/span).&#xA;&#xA;Mais au cas où ce ne serait pas clair, je suis un artiste-anarchiste qui conchie toutes les formes de domination, d’oppression, de discrimination, les frontières et les nations.&#xA;&#xA;!--more--&#xA;&#xA;Qui a déconstruit sa croyance bien occidentale &#xA;• en un progrès linéaire, de la barbarie vers la civilisation, et &#xA;• en la suprématie de l’humain sur le reste du vivant,&#xA;préalable nécessaire mais insuffisant pour éviter l’apocalypse à mon avis.&#xA;&#xA;Qui n’attend plus rien des gouvernements, ni des gens qui briguent le pouvoir. &#xA;&#xA;Ce qui ne veut pas dire que je ne suis pas encore parfois surpris par les sommets de stupidité atteints par nos élites (car oui, je pense qu’elles sont bien plus stupides que machiavéliques ; ni dieu, ni maître, ni diable). &#xA;&#xA;Enfin, la réaction au Covid (et au réchauffement climatique) a achevé de me convaincre que toutes les gauches traditionnelles sont de droite (LFI compris).&#xA;&#xA;C’est pourquoi je vis à contre-courant, loin du monde mainstream, dans le genre d’endroit où plein de gens (plus ou moins zinzins) tentent d’y échapper (depuis des siècles) comme ils peuvent.&#xA;&#xA;J’y pratique la simplicité heureuse, l’#oisivetéRadicale, la #slowLife, guidé par mes principes et le rythme des saisons, par conviction intrinsèque, hors de toute culture managériale du résultat, et à titre individuel, je ne me suis jamais senti aussi bien, existentiellement, malgré l’#effondrement en cours.&#xA;&#xA;Chacun·e son délire.&#xA;&#xA;Sur Mastodon, je publie des ciels, des chats de gouttière, mon mini #jardinPunk suspendu, je parle un peu de mes créas, mais surtout, je discute avec ma communauté d’élection.&#xA;&#xA;Et j’y relaie les projets collaboratifs horizontaux, non commerciaux et éthiques comme #radioFreeFedi ou #Faircamp ou #Fedivision auxquels je participe, parce qu’ils incarnent, comme le #fedivers, tout ce qui me donne encore un peu foi en l’humanité.&#xA;&#xA;On verra bien si je me remets à vraiment blogger ici, mais a minima, vous devriez toujours y trouver les annonces de mes dernières turpitudes.&#xA;&#xA;Alors abonnez-vous, par RSS ou en suivant @sknob@noblogo.org sur #Mastodon, pour ne rien rater !&#xA;&#xA;ciel rougeoyant à l’aube au dessus des toits encore dans la pénombre de mon village médiéval, pris par la fenêtre de ma chambre&#xA;&#xA;span class=&#34;elsewhere&#34;Elsewhere: Music | Videos | Mastodonbra href=&#34;a-message-to-llm-users&#34;img src=&#34;https://sknob.fr/img/blog/noai.jpg&#34; alt=&#34;The letters AI crossed out in a red circle&#34;/a/span&#xD;&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p><a href="/sknob/tag:billet" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">billet</span></a> <a href="/sknob/tag:fedivers" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">fedivers</span></a> <a href="/sknob/tag:oisivet%C3%A9Radicale" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">oisivetéRadicale</span></a> en <a href="/sknob/tag:fran%C3%A7ais" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">français</span></a></p>

<p>J’ai généralement un avis sur ce qui se passe, ici et ailleurs, mais c’est rare que je commente l’actualité (j’ai déjà donné, notamment sur un blog de gauchistes qui connut son quart d’heure de gloire, et j’ai souvent immortalisé ce que je pensais en <a href="/sknob/tag:chanson" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">chanson</span></a> <span class="emoji">😄</span>).</p>

<p>Mais au cas où ce ne serait pas clair, je suis un artiste-anarchiste qui conchie toutes les formes de domination, d’oppression, de discrimination, les frontières et les nations.</p>



<p>Qui a déconstruit sa croyance bien occidentale
• en un progrès linéaire, de la barbarie vers la civilisation, et
• en la suprématie de l’humain sur le reste du vivant,
préalable nécessaire mais insuffisant pour éviter l’apocalypse à mon avis.</p>

<p>Qui n’attend plus rien des gouvernements, ni des gens qui briguent le pouvoir.</p>

<p>Ce qui ne veut pas dire que je ne suis pas encore parfois surpris par les sommets de stupidité atteints par nos élites (car oui, je pense qu’elles sont bien plus stupides que machiavéliques ; ni dieu, ni maître, ni diable).</p>

<p>Enfin, <a href="mal-informes" rel="nofollow">la réaction au Covid</a> (et au réchauffement climatique) a achevé de me convaincre que toutes les gauches traditionnelles sont de droite (LFI compris).</p>

<p>C’est pourquoi je vis à contre-courant, loin du monde mainstream, dans le genre d’endroit où plein de gens (plus ou moins <a href="https://sknob.fr/music/?zinzin" rel="nofollow">zinzins</a>) tentent d’y échapper (depuis des siècles) comme ils peuvent.</p>

<p>J’y pratique la simplicité heureuse, l’<a href="/sknob/tag:oisivet%C3%A9Radicale" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">oisivetéRadicale</span></a>, la <a href="/sknob/tag:slowLife" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">slowLife</span></a>, guidé par mes principes et le rythme des saisons, par conviction intrinsèque, hors de toute culture managériale du résultat, et à titre individuel, je ne me suis jamais senti aussi bien, existentiellement, malgré l’<a href="/sknob/tag:effondrement" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">effondrement</span></a> en cours.</p>

<p>Chacun·e son délire.</p>

<p>Sur <a href="https://mamot.fr/@sknob/" rel="nofollow">Mastodon</a>, je publie des ciels, des chats de gouttière, mon mini <a href="/sknob/tag:jardinPunk" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">jardinPunk</span></a> suspendu, je parle un peu de mes créas, mais surtout, je discute avec ma communauté d’élection.</p>

<p>Et j’y relaie les projets collaboratifs horizontaux, non commerciaux et éthiques comme <a href="/sknob/tag:radioFreeFedi" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">radioFreeFedi</span></a> ou <a href="/sknob/tag:Faircamp" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Faircamp</span></a> ou <a href="/sknob/tag:Fedivision" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Fedivision</span></a> auxquels je participe, parce qu’ils incarnent, comme le <a href="/sknob/tag:fedivers" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">fedivers</span></a>, tout ce qui me donne encore un peu foi en l’humanité.</p>

<p>On verra bien si je me remets à vraiment blogger ici, mais a minima, vous devriez toujours y trouver les annonces de mes dernières turpitudes.</p>

<p>Alors <strong>abonnez-vous</strong>, par <a href="https://noblogo.org/sknob/feed" rel="nofollow">RSS</a> ou en suivant <a href="https://noblogo.org/@/sknob@noblogo.org" class="u-url mention" rel="nofollow">@<span>sknob@noblogo.org</span></a> sur <a href="/sknob/tag:Mastodon" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Mastodon</span></a>, pour ne rien rater !</p>

<p><img src="https://sknob.fr/sknoblog/wp-content/uploads/2024/03/IMG_2259-scaled.jpeg" alt="ciel rougeoyant à l’aube au dessus des toits encore dans la pénombre de mon village médiéval, pris par la fenêtre de ma chambre"></p>

<p><span class="elsewhere">Elsewhere: <a href="https://sknob.fr/music" rel="nofollow">Music</a> | <a href="https://makertube.net/a/sknob/video-channels" rel="nofollow">Videos</a> | <a href="https://mamot.fr/@sknob" rel="nofollow">Mastodon</a><br><a href="a-message-to-llm-users" rel="nofollow"><img src="https://sknob.fr/img/blog/noai.jpg" alt="The letters AI crossed out in a red circle"></a></span></p>
]]></content:encoded>
      <guid>https://noblogo.org/sknob/je-nen-pense-pas-moins</guid>
      <pubDate>Fri, 10 May 2024 05:05:47 +0000</pubDate>
    </item>
    <item>
      <title>Faircamp auf Fadimat 105</title>
      <link>https://noblogo.org/sknob/faircamp-auf-fadimat-105</link>
      <description>&lt;![CDATA[#music #musique #radio in #english&#xA;&#xA;Simon Repp, the creator of Faircamp, a beautiful static site generator for self-hosting music on the web, was interviewed on Austrian radio station Radio Fro 105 Mhz on February 6th, 2024.&#xA;&#xA;!--more--&#xA;&#xA;The 2 hour show featured quite a bit of music, mostly electronic, from various #Faircamp artists, and strangely enough, my short symphonic song, What Would You Say from my album Spiral.&#xA;&#xA;Radio Fro logo&#xA;&#xA;span class=&#34;elsewhere&#34;Elsewhere: Music | Videos | Mastodonbra href=&#34;a-message-to-llm-users&#34;img src=&#34;https://sknob.fr/img/blog/noai.jpg&#34; alt=&#34;The letters AI crossed out in a red circle&#34;/a/span&#xD;&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p><a href="/sknob/tag:music" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">music</span></a> <a href="/sknob/tag:musique" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">musique</span></a> <a href="/sknob/tag:radio" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">radio</span></a> in <a href="/sknob/tag:english" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">english</span></a></p>

<p>Simon Repp, the creator of <a href="https://simonrepp.com/faircamp/" rel="nofollow">Faircamp</a>, a beautiful static site generator for self-hosting music on the web, was interviewed on Austrian radio station <a href="https://www.fro.at/fadimat105-feb24/" rel="nofollow">Radio Fro 105 Mhz</a> on February 6th, 2024.</p>



<p>The 2 hour show featured quite a bit of music, mostly electronic, from various <a href="/sknob/tag:Faircamp" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Faircamp</span></a> artists, and strangely enough, my short symphonic song, <em>What Would You Say</em> from my album <a href="https://sknob.fr/faircamp/spiral/" rel="nofollow">Spiral</a>.</p>

<p><img src="https://sknob.fr/img/musique/radiofro.jpg" alt="Radio Fro logo"></p>

<p><span class="elsewhere">Elsewhere: <a href="https://sknob.fr/music" rel="nofollow">Music</a> | <a href="https://makertube.net/a/sknob/video-channels" rel="nofollow">Videos</a> | <a href="https://mamot.fr/@sknob" rel="nofollow">Mastodon</a><br><a href="a-message-to-llm-users" rel="nofollow"><img src="https://sknob.fr/img/blog/noai.jpg" alt="The letters AI crossed out in a red circle"></a></span></p>
]]></content:encoded>
      <guid>https://noblogo.org/sknob/faircamp-auf-fadimat-105</guid>
      <pubDate>Fri, 09 Feb 2024 18:06:44 +0000</pubDate>
    </item>
  </channel>
</rss>